From 1b59944043bd0798d9d1802d5ac5d2fa0576aa25 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Thu, 20 Feb 2014 19:15:44 -0300 Subject: Move imspector-dev -> imspector --- config/imspector-dev/imspector.inc | 546 ---------------------- config/imspector-dev/imspector.xml | 251 ---------- config/imspector-dev/imspector_acls.xml | 173 ------- config/imspector-dev/imspector_logs.php | 311 ------------ config/imspector-dev/imspector_replacements.xml | 188 -------- config/imspector-dev/imspector_sync.xml | 109 ----- config/imspector-dev/services_imspector_logs.php | 311 ------------ config/imspector-dev/services_imspector_logs2.php | 318 ------------- config/imspector/imspector.inc | 370 +++++++++++---- config/imspector/imspector.xml | 276 +++++------ config/imspector/imspector_acls.xml | 173 +++++++ config/imspector/imspector_logs.php | 311 ++++++++++++ config/imspector/imspector_replacements.xml | 188 ++++++++ config/imspector/imspector_sync.xml | 109 +++++ config/imspector/services_imspector_logs.php | 38 +- config/imspector/services_imspector_logs2.php | 318 +++++++++++++ pkg_config.10.xml | 8 +- pkg_config.8.xml | 21 +- pkg_config.8.xml.amd64 | 21 +- 19 files changed, 1510 insertions(+), 2530 deletions(-) delete mode 100644 config/imspector-dev/imspector.inc delete mode 100644 config/imspector-dev/imspector.xml delete mode 100644 config/imspector-dev/imspector_acls.xml delete mode 100644 config/imspector-dev/imspector_logs.php delete mode 100644 config/imspector-dev/imspector_replacements.xml delete mode 100644 config/imspector-dev/imspector_sync.xml delete mode 100644 config/imspector-dev/services_imspector_logs.php delete mode 100644 config/imspector-dev/services_imspector_logs2.php create mode 100644 config/imspector/imspector_acls.xml create mode 100644 config/imspector/imspector_logs.php create mode 100644 config/imspector/imspector_replacements.xml create mode 100644 config/imspector/imspector_sync.xml create mode 100644 config/imspector/services_imspector_logs2.php diff --git a/config/imspector-dev/imspector.inc b/config/imspector-dev/imspector.inc deleted file mode 100644 index 52c7ae1b..00000000 --- a/config/imspector-dev/imspector.inc +++ /dev/null @@ -1,546 +0,0 @@ -. - Copyright (C) 2011 Bill Marquette . - Copyright (C) 2007 Ryan Wagoner . - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - */ - - require_once("config.inc"); - require_once("functions.inc"); - require_once("service-utils.inc"); - - /* IMSpector */ - - define('IMSPECTOR_RCFILE', '/usr/local/etc/rc.d/imspector.sh'); - define('IMSPECTOR_ETC', '/usr/local/etc/imspector'); - define('IMSPECTOR_CONFIG', IMSPECTOR_ETC . '/imspector.conf'); - - function imspector_warn ($msg) { syslog(LOG_WARNING, "imspector: {$msg}"); } - - function ims_text_area_decode($text){ - return preg_replace('/\r\n/', "\n",base64_decode($text)); - } - - function imspector_action ($action) { - if (file_exists(IMSPECTOR_RCFILE)) - mwexec(IMSPECTOR_RCFILE.' '.$action); - } - - function write_imspector_config($file, $text) { - $conf = fopen($file, 'w'); - if(!$conf) { - imspector_warn("Could not open {$file} for writing."); - exit; - } - fwrite($conf, $text); - fclose($conf); - } - - function imspector_pf_rdr($iface, $port) { - return "rdr pass on {$iface} inet proto tcp from any to any port = {$port} -> 127.0.0.1 port 16667\n"; - } - - function imspector_pf_rule($iface, $port) { - return "pass in quick on {$iface} inet proto tcp from any to any port {$port} keep state\n"; - } - - function imspector_proto_to_port ($proto) - { - switch ($proto) { - case 'gadu-gadu': - return 8074; - case 'jabber': - return 5222; - case 'jabber-ssl': - return 5223; - case 'msn': - return 1863; - case 'icq': - return 5190; - case 'yahoo': - return 5050; - case 'irc': - return 6667; - default: - return null; - } - } - - function validate_form_imspector($post, $input_errors) { - if($post['iface_array']) - foreach($post['iface_array'] as $iface) - if($iface == 'wanx') - $input_errors[] = 'It is a security risk to specify WAN in the \'Interface\' field'; - } - - function deinstall_package_imspector() { - imspector_action('stop'); - - unlink_if_exists(IMSPECTOR_RCFILE); - unlink_if_exists(IMSPECTOR_CONFIG); - unlink_if_exists(IMSPECTOR_ETC . '/badwords_custom.txt'); - unlink_if_exists(IMSPECTOR_ETC . '/acl_blacklist.txt'); - unlink_if_exists(IMSPECTOR_ETC . '/acl_whitelist.txt'); - unlink_if_exists('/usr/local/www/imspector_logs.php'); - - //exec('pkg_delete imspector-0.4'); - } - - function imspector_generate_rules($type) { - - $rules = ""; - switch ($type) { - case 'rdr': - case 'nat': - $rules = "# IMSpector rdr anchor\n"; - $rules .= "rdr-anchor \"imspector\"\n"; - break; - case 'rule': - $rules = "# IMSpector \n"; - $rules .= "anchor \"imspector\"\n"; - break; - } - - return $rules; - } - - function sync_package_imspector() { - global $config; - global $input_errors; - - /*detect boot process*/ - if (is_array($_POST)){ - if (preg_match("/\w+/",$_POST['__csrf_magic'])) - unset($boot_process); - else - $boot_process="on"; - } - - if (is_process_running('imspector') && isset($boot_process)) - return; - - /* check default options and sample files*/ - $load_samples=0; - - #bannedphraselist - if (!is_array($config['installedpackages']['imspectoracls'])){ - $config['installedpackages']['imspectoracls']['config'][]=array('enable'=> 'on', - 'description' => 'allow access to all ids', - 'action' => 'allow', - 'localid' => 'all', - 'remoteid' => base64_encode('all')); - $load_samples++; - } - $ims_acls = $config['installedpackages']['imspectoracls']['config']; - - if (is_array($config['installedpackages']['imspectorreplacements'])){ - if ($config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] == "" && file_exists(IMSPECTOR_ETC . '/badwords.txt')){ - $config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] = base64_encode(file_get_contents(IMSPECTOR_ETC . '/badwords.txt')); - $load_samples++; - } - $ims_replacements = $config['installedpackages']['imspectorreplacements']['config'][0]; - } - - if (is_array($config['installedpackages']['imspector'])) - $ims_config = $config['installedpackages']['imspector']['config'][0]; - - if($load_samples > 0) - write_config(); - - /*continue sync process*/ - log_error("Imspector: Saving changes."); - config_lock(); - - /* remove existing rules */ - exec('/sbin/pfctl -a imspector -Fr > /dev/null'); - exec('/sbin/pfctl -a imspector -Fn > /dev/null'); - - $ifaces_active = ''; - - if($ims_config['enable'] && $ims_config['proto_array']) - $proto_array = explode(',', $ims_config['proto_array']); - - if($ims_config['enable'] && $ims_config['iface_array']) - $iface_array = explode(',', $ims_config['iface_array']); - - if($iface_array && $proto_array) { - foreach($iface_array as $iface) { - $if = convert_friendly_interface_to_real_interface_name($iface); - /* above function returns iface if fail */ - if($if!=$iface) { - $addr = find_interface_ip($if); - /* non enabled interfaces are displayed in list on imspector settings page */ - /* check that the interface has an ip address before adding parameters */ - if($addr) { - foreach($proto_array as $proto) { - if(imspector_proto_to_port($proto)) { - /* we can use rdr pass to auto create the filter rule */ - $pf_rules .= imspector_pf_rdr($if,imspector_proto_to_port($proto)); - } - } - if(!$ifaces_active) - $ifaces_active = "{$iface}"; - else - $ifaces_active .= ", {$iface}"; - } else { - imspector_warn("Interface {$iface} has no ip address, ignoring"); - } - } else { - imspector_warn("Could not resolve real interface for {$iface}"); - } - } - - - /*reload rules*/ - if($pf_rules) { - log_error("Imspector: Reloading rules."); - exec("echo \"{$pf_rules}\" | /sbin/pfctl -a imspector -f -"); - - conf_mount_rw(); - - /* generate configuration files */ - - $conf['plugin_dir'] = '/usr/local/lib/imspector'; - - foreach($proto_array as $proto) - $conf[$proto . '_protocol'] = 'on'; - - if($ims_config['log_file']) { - @mkdir('/var/imspector'); - $conf['file_logging_dir'] = '/var/imspector'; - } - - if($ims_config['log_mysql']) { - $conf['mysql_server'] = $ims_config['mysql_server']; - $conf['mysql_database'] = $ims_config['mysql_database']; - $conf['mysql_username'] = $ims_config['mysql_username']; - $conf['mysql_password'] = $ims_config['mysql_password']; - } - - if($ims_replacements['filter_badwords']) { - write_imspector_config(IMSPECTOR_ETC . '/badwords_custom.txt', ims_text_area_decode($ims_replacements["badwords_list"])); - $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords_custom.txt'; - } - - if($ims_replacements['block_files']) - $conf['block_files'] = 'on'; - - if($ims_replacements['block_webcams']) - $conf['block_webcams'] = 'on'; - - $acls=""; - $conf['acl_filename'] = IMSPECTOR_ETC . '/acls.txt'; - foreach ($ims_acls as $rule){ - if ($rule['enable']){ - $acls.= "{$rule['action']} {$rule['localid']} ".preg_replace("/\s+/"," ",base64_decode($rule['remoteid']))."\n"; - } - } - write_imspector_config(IMSPECTOR_ETC . '/acls.txt', $acls); - - // Handle Jabber SSL options - if(isset($ims_config["ssl_ca_cert"]) && $ims_config["ssl_ca_cert"] != "none" && - isset($ims_config["ssl_server_cert"]) && $ims_config["ssl_server_cert"] != "none") { - $conf['ssl'] = "on"; - if(!is_dir(IMSPECTOR_ETC . "/ssl")) - mkdir(IMSPECTOR_ETC . "/ssl"); - - $ca_cert = lookup_ca($ims_config["ssl_ca_cert"]); - if ($ca_cert != false) { - if(base64_decode($ca_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_key.pem", base64_decode($ca_cert['prv'])); - $conf['ssl_ca_key'] = IMSPECTOR_ETC . '/ssl/ssl_ca_key.pem'; - } - if(base64_decode($ca_cert['crt'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem", base64_decode($ca_cert['crt'])); - $conf['ssl_ca_cert'] = IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem"; - } - $svr_cert = lookup_cert($ims_config["ssl_server_cert"]); - if ($svr_cert != false) { - if(base64_decode($svr_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_server_key.pem", base64_decode($svr_cert['prv'])); - $conf['ssl_key'] = IMSPECTOR_ETC . '/ssl/ssl_server_key.pem'; - } - - } - $conf['ssl_cert_dir'] = IMSPECTOR_ETC . '/ssl'; - } - } else { - // SSL Not enabled. Make sure Jabber-SSL is not processed. - unset($conf['jabber-ssl']); - unset($conf['ssl']); - } - - if (isset($ims_replacements['responder']) && $ims_replacements['responder'] == 'on') { - $conf['responder_filename'] = IMSPECTOR_ETC . "/responder.db"; - if (isset($ims_replacements['prefix_message']) && $ims_replacements['prefix_message'] != '' ) { - $conf['response_prefix'] = " .={$ims_replacements['prefix_message']}=."; - } - else{ - $conf['response_prefix'] = " .=Your activities are being logged=."; - } - if (isset($ims_replacements['notice_days']) && is_numeric($ims_replacements['notice_days'])) { - if ($ims_replacements['notice_days'] != 0) { - $conf['notice_days'] = $ims_replacements['notice_days']; - } - } else { - $conf['notice_days'] = 1; - } - - /*Custom recorded message response*/ - if(isset($ims_replacements['recorded_message']) && $ims_replacements['recorded_message'] != '' ){ - $conf['notice_response'] = ims_text_area_decode($ims_replacements['recorded_message']); - } - else{ - $conf['notice_response'] = "Your activities are being logged"; - } - - /*Filtered Frequency*/ - if (isset($ims_replacements['filtered_minutes']) && is_numeric($ims_replacements['filtered_minutes'])) { - if ($ims_replacements['filtered_minutes'] != 0) { - $conf['filtered_mins'] = $ims_replacements['filtered_minutes']; - } - } else { - $conf['filtered_mins'] = 15; - } - - /*Custom filtered message response*/ - if(isset($ims_replacements['filtered_message']) && $ims_replacements['filtered_message'] != '' ){ - $conf['filtered_response'] = ims_text_area_decode($ims_replacements['filtered_message']); - } - else{ - $conf['filtered_response'] = "Your message has been filtered"; - } - } - - $conftext = ''; - foreach($conf as $var => $key) - $conftext .= "{$var}={$key}\n"; - write_imspector_config(IMSPECTOR_CONFIG, $conftext); - - /*Check template settings*/ - if ($ims_config['template'] == "") - $template="services_imspector_logs.php"; - else - $template=$ims_config['template']; - - /*link template file*/ - $link="/usr/local/www/imspector_logs.php"; - unlink_if_exists($link); - symlink("/usr/local/www/{$template}", $link); - - /* generate rc file start and stop */ - $stop = << 'imspector.sh', - 'start' => $start, - 'stop' => $stop - ) - ); - - conf_mount_ro(); - } - } - - if(!$iface_array || !$proto_array || !$pf_rules) { - /* no parameters user does not want imspector running */ - /* lets stop the service and remove the rc file */ - - if(file_exists(IMSPECTOR_RCFILE)) { - if(!$ims_config['enable']) - log_error('Impsector: Stopping service: imspector disabled'); - else - log_error('Impsector: Stopping service: no interfaces and/or protocols selected'); - - imspector_action('stop'); - - conf_mount_rw(); - unlink(IMSPECTOR_RCFILE); - unlink(IMSPECTOR_CONFIG); - @unlink(IMSPECTOR_ETC . '/badwords_custom.txt'); - @unlink(IMSPECTOR_ETC . '/acl_blacklist.txt'); - @unlink(IMSPECTOR_ETC . '/acl_whitelist.txt'); - conf_mount_ro(); - } - } - else{ - /* if imspector not running start it */ - if(!is_process_running('imspector')) { - log_error("Impsector: Starting service on interface: {$ifaces_active}"); - imspector_action('start'); - } - /* or restart imspector if settings were changed */ - else{ - log_error("Impsector: Restarting service on interface: {$ifaces_active}"); - imspector_action('restart'); - } - } - config_unlock(); - - /*check xmlrpc sync*/ - imspector_sync_on_changes(); - } - - function imspector_get_ca_certs() { - global $config; - - $ca_arr = array(); - $ca_arr[] = array('refid' => 'none', 'descr' => 'none'); - foreach ($config['ca'] as $ca) { - $ca_arr[] = array('refid' => $ca['refid'], 'descr' => $ca['descr']); - } - return $ca_arr; - } - - function imspector_get_server_certs() { - global $config; - $cert_arr = array(); - $cert_arr[] = array('refid' => 'none', 'descr' => 'none'); - - foreach ($config['cert'] as $cert) { - $cert_arr[] = array('refid' => $cert['refid'], 'descr' => $cert['descr']); - } - return $cert_arr; - } - -/* Uses XMLRPC to synchronize the changes to a remote node */ -function imspector_sync_on_changes() { - global $config, $g; - - $synconchanges = $config['installedpackages']['imspectorsync']['config'][0]['synconchanges']; - if(!$synconchanges) - return; - log_error("Imspector: xmlrpc sync is starting."); - foreach ($config['installedpackages']['imspectorsync']['config'] as $rs ){ - foreach($rs['row'] as $sh){ - $sync_to_ip = $sh['ipaddress']; - $password = $sh['password']; - if($password && $sync_to_ip) - imspector_do_xmlrpc_sync($sync_to_ip, $password); - } - } - log_error("Imspector: xmlrpc sync is ending."); -} -/* Do the actual XMLRPC sync */ -function imspector_do_xmlrpc_sync($sync_to_ip, $password) { - global $config, $g; - - if(!$password) - return; - - if(!$sync_to_ip) - return; - $username="admin"; - - $xmlrpc_sync_neighbor = $sync_to_ip; - if($config['system']['webgui']['protocol'] != "") { - $synchronizetoip = $config['system']['webgui']['protocol']; - $synchronizetoip .= "://"; - } - $port = $config['system']['webgui']['port']; - /* if port is empty lets rely on the protocol selection */ - if($port == "") { - if($config['system']['webgui']['protocol'] == "http") - $port = "80"; - else - $port = "443"; - } - $synchronizetoip .= $sync_to_ip; - - /* xml will hold the sections to sync */ - $xml = array(); - $xml['imspector'] = $config['installedpackages']['imspector']; - $xml['imspectorreplacements'] = $config['installedpackages']['imspectorreplacements']; - $xml['imspectoracls'] = $config['installedpackages']['imspectoracls']; - /* assemble xmlrpc payload */ - $params = array( - XML_RPC_encode($password), - XML_RPC_encode($xml) - ); - - /* set a few variables needed for sync code borrowed from filter.inc */ - $url = $synchronizetoip; - log_error("Imspector: Beginning XMLRPC sync to {$url}:{$port}."); - $method = 'pfsense.merge_installedpackages_section_xmlrpc'; - $msg = new XML_RPC_Message($method, $params); - $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); - $cli->setCredentials($username, $password); - if($g['debug']) - $cli->setDebug(1); - /* send our XMLRPC message and timeout after 250 seconds */ - $resp = $cli->send($msg, "250"); - if(!$resp) { - $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port}."; - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } elseif($resp->faultCode()) { - $cli->setDebug(1); - $resp = $cli->send($msg, "250"); - $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } else { - log_error("imspector XMLRPC sync successfully completed with {$url}:{$port}."); - } - - /* tell imspector to reload our settings on the destionation sync host. */ - $method = 'pfsense.exec_php'; - $execcmd = "require_once('/usr/local/pkg/imspector.inc');\n"; - $execcmd .= "sync_package_imspector();"; - /* assemble xmlrpc payload */ - $params = array( - XML_RPC_encode($password), - XML_RPC_encode($execcmd) - ); - - log_error("imspector XMLRPC reload data {$url}:{$port}."); - $msg = new XML_RPC_Message($method, $params); - $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); - $cli->setCredentials($username, $password); - $resp = $cli->send($msg, "250"); - if(!$resp) { - $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port} (pfsense.exec_php)."; - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } elseif($resp->faultCode()) { - $cli->setDebug(1); - $resp = $cli->send($msg, "250"); - $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); - log_error($error); - file_notice("sync_settings", $error, "imspector Settings Sync", ""); - } else { - log_error("imspector XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php)."); - } - -} -?> diff --git a/config/imspector-dev/imspector.xml b/config/imspector-dev/imspector.xml deleted file mode 100644 index c68fc70e..00000000 --- a/config/imspector-dev/imspector.xml +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - Copyright (C) 2011 Bill Marquette - Copyright (C) 2007 Ryan Wagoner - All rights reserved. - */ -/* ========================================================================== */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - imspector - 20111108 - Services: IMSpector - Save - /usr/local/pkg/imspector.inc - - IMSpector - Set IMSpector settings such as protocols to listen on. -
Services
- /services_imspector_logs.php -
- - imspector - imspector.sh - imspector - - - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml - - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_sync.xml - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_replacements.xml - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_acls.xml - - - /usr/local/pkg/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector.inc - - - /usr/local/www/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/imspector_logs.php - - - /usr/local/www/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/services_imspector_logs.php - - - /usr/local/www/ - 0755 - http://www.pfsense.org/packages/config/imspector-dev/services_imspector_logs2.php - - - - General Settings - listtopic - - - Enable IMSpector - enable - checkbox - - - Interfaces - iface_array - Generally select internal interface(s) like LAN
- You can use the CTRL or COMMAND key to select multiple interfaces.]]>
- interfaces_selection - 3 - - lan - true -
- - Listen on protocols - proto_array - NOTE: Gtalk/Jabber-SSL requires SSL certificates.
- You can use the CTRL or COMMAND key to select multiple protocols.]]>
- select - 7 - - true - - - - - - - - - -
- - SSL CA Certificate - ssl_ca_cert - - Choose the SSL CA Certficate here. - - select_source - - descr - refid - - - SSL Certificate - ssl_server_cert - - Choose the SSL Server Certificate here. - - select_source - - descr - refid - - - Logging - listtopic - - - Enable file logging - log_file - Log files stored in /var/imspector. - checkbox - - - Report limit - reportlimit - Max entries to fetch from log dir(s). Default is 50 - input - 10 - - - Report template - template - Template to use on reports - select - - - - - - - - Enable mySQL logging - log_mysql - Make sure to specify your MySQL credentials below. - checkbox - - - mySQL server - mysql_server - input - 35 - - - mySQL database - mysql_database - input - 35 - - - mySQL username - mysql_username - input - 35 - - - mySQL password - mysql_password - password - 35 - -
- - validate_form_imspector($_POST, &$input_errors); - - - sync_package_imspector(); - - - deinstall_package_imspector(); - - imspector_generate_rules -
\ No newline at end of file diff --git a/config/imspector-dev/imspector_acls.xml b/config/imspector-dev/imspector_acls.xml deleted file mode 100644 index 3176c75f..00000000 --- a/config/imspector-dev/imspector_acls.xml +++ /dev/null @@ -1,173 +0,0 @@ - - - - . - All rights reserved. - */ -/* ========================================================================== */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - */ -/* ========================================================================== */ - ]]> - - - imspectoracls - 20111108 - Imspector acls - Imspectors Access Lists - Save - /usr/local/pkg/imspector.inc - - - SSH Conditions - Configure SSH conditional exceptions -
Services
- /pkg.php?xml=sshdcond.xml -
- installedpackages->package->sshdcond - - - /usr/local/pkg/ - 755 - http://www.pfsense.com/packages/config/sshdcond/sshdcond.inc - - - /usr/local/pkg/ - 755 - http://www.pfsense.com/packages/config/sshdcond/sshdcond_sync.xml - - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml&id=0 - - - - - Status - enable - - - action - action - - - local ID - localid - - - Description - description - - - - - listtopic - Imspector Access Lists - temp - - - Enable - enable - checkbox - - Rules are processed in order, from top to bottom.]]> - - - Action - action - Select action to take on this rule - select - - - - - - - - Description - description - - input - 50 - - - - Local ID - localid - - Local IDs can either be complete, such as user@company.com, partial like company.com or all to match any id.]]> - input - 50 - - - - Remote ID - remoteid - - Remote IDs can be complete ids like user@company.com, partial company.com, all to match any id or groupchat.]]> - textarea - 10 - 60 - base64 - - - - - validate_form_imspector($_POST, &$input_errors); - - - sync_package_imspector(); - - - deinstall_package_imspector(); - - imspector_generate_rules -
\ No newline at end of file diff --git a/config/imspector-dev/imspector_logs.php b/config/imspector-dev/imspector_logs.php deleted file mode 100644 index e44ef35f..00000000 --- a/config/imspector-dev/imspector_logs.php +++ /dev/null @@ -1,311 +0,0 @@ -. - Copyright (C) 2012 Marcello Coutinho - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -require("guiconfig.inc"); - -/* variables */ -$log_dir = '/var/imspector'; -$imspector_config = $config['installedpackages']['imspector']['config'][0]; - -$border_color = '#c0c0c0'; -$default_bgcolor = '#eeeeee'; - -$list_protocol_color = '#000000'; -$list_local_color = '#000000'; -$list_remote_color = '#000000'; -$list_convo_color = '#000000'; - -$list_protocol_bgcolor = '#cccccc'; -$list_local_bgcolor = '#dddddd'; -$list_remote_bgcolor = '#eeeeee'; -$list_end_bgcolor = '#bbbbbb'; - -$convo_title_color = 'black'; -$convo_local_color = 'blue'; -$convo_remote_color = 'red'; - -$convo_title_bgcolor = '#cccccc'; -$convo_local_bgcolor = '#dddddd'; -$convo_remote_bgcolor = '#eeeeee'; - -/* functions */ - -function convert_dir_list ($topdir) { - global $config; - if (!is_dir($topdir)) - return; - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); - file_put_contents("/tmp/teste.txt",$limit." teste",LOCK_EX); - $count=0; - if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) - continue; - if (is_dir("$topdir/$file")) - $list .= convert_dir_list("$topdir/$file"); - else - $list .= "$topdir/$file\n"; - $count ++; - if($count >= $limit){ - closedir($dh); - return $list; - } - } - closedir($dh); - } - return $list; - } - -/* ajax response */ -if ($_POST['mode'] == "render") { - - /* user list */ - print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); - print("--END--\n"); - - /* log files */ - if ($_POST['section'] != "none") { - $section = explode('|',$_POST['section']); - $protocol = $section[0]; - $localuser = $section[1]; - $remoteuser = $section[2]; - $conversation = $section[3]; - - /* conversation title */ - print(implode(', ', $section)."\n"); - print("--END--\n"); - - /* conversation content */ - $filename = $log_dir.'/'.implode('/', $section); - if($fd = fopen($filename, 'r')) { - print("\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - preg_match("/${new_format}|${old_format}/", $line, $matches); - $address = $matches[1]; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - if(count($matches) == 8) { - $category = $matches[6]; - $data = $matches[7]; - } else { - $category = ""; - $data = $matches[6]; - } - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "<$remoteuser>"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "<$localuser>"; - } - - $time = strftime("%H:%M:%S", $timestamp); - - print("\n - \n - \n - \n"); - } - print("
[$time]$user$category$data
\n"); - fclose($fd); - } - } - exit; -} -/* defaults to this page but if no settings are present, redirect to setup page */ -if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) - Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); - -$pgtitle = "Services: IMSpector Log Viewer"; -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ -//$pfSenseHead->addMeta(""); -//echo $pfSenseHead->getHTML(); -?> - - - -
- - -
- - -var section = 'none'; -var moveit = 1; -var the_timeout; - -function xmlhttpPost() -{ - var xmlHttpReq = false; - var self = this; - - if (window.XMLHttpRequest) - self.xmlHttpReq = new XMLHttpRequest(); - else if (window.ActiveXObject) - self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - - self.xmlHttpReq.open('POST', 'imspector_logs.php', true); - self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - self.xmlHttpReq.onreadystatechange = function() { - if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) - updatepage(self.xmlHttpReq.responseText); - } - - document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section); -} - -function updatepage(str) -{ - /* update the list of conversations ( if we need to ) */ - var parts = str.split("--END--\\n"); - var lines = parts[0].split("\\n"); - - for (var line = 0 ; line < lines.length ; line ++) { - var a = lines[line].split("|"); - - if (!a[1] || !a[2] || !a[3]) continue; - - /* create titling information if needed */ - if (!document.getElementById(a[1])) { - document.getElementById('im_convos').innerHTML += - "
" + a[1] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "" + a[1] + ""; - document.getElementById(a[1]).innerHTML += - "
" + imageref + a[2] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "
" + a[3] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "
»" + a[4] + "
"; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = details[0] + " conversation between " + details[ 1 ] + - " and " + details[2] + ""; - if (!details[1]) title = " "; - if (!parts[2]) parts[2] = " "; - - document.getElementById('im_status').style.display = "none"; - var bottom = parseInt(document.getElementById('im_content').scrollTop); - var bottom2 = parseInt(document.getElementById('im_content').style.height); - var absheight = parseInt( bottom + bottom2 ); - if (absheight == document.getElementById('im_content').scrollHeight) { - moveit = 1; - } else { - moveit = 0; - } - document.getElementById('im_content').innerHTML = parts[2]; - if (moveit == 1) { - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; - } - document.getElementById('im_content_title').innerHTML = title; - the_timeout = setTimeout( "xmlhttpPost();", 5000 ); -} - -function setsection(value) -{ - section = value; - clearTimeout(the_timeout); - xmlhttpPost(); - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; -} - -EOD; -print($zz); -?> - - - - - -
-
 
- - - - - -
-
-
-
-
-
-
- - - -
- - - diff --git a/config/imspector-dev/imspector_replacements.xml b/config/imspector-dev/imspector_replacements.xml deleted file mode 100644 index 7f53bbd4..00000000 --- a/config/imspector-dev/imspector_replacements.xml +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - Copyright (C) 2011 Bill Marquette - Copyright (C) 2007 Ryan Wagoner - All rights reserved. - */ -/* ========================================================================== */ -/* - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - */ -/* ========================================================================== */ - ]]> - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - imspectorreplacements - 20111108 - Services: IMSpector - Save - /usr/local/pkg/imspector.inc - - IMSpector - Set IMSpector settings such as protocols to listen on. -
Services
- /services_imspector_logs.php -
- - imspector - imspector.sh - imspector - - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml&id=0 - - - - - Response messages - listtopic - - - Enable response messages - responder - - Inform the users (both local and remote) that the conversation they are having is being recorded. This might be needed for legal reasons. - Inform the sender that a file (or message) was blocked. This is useful because the sender will know a block occured, instead of the transfer simply failing. - checkbox - - - Notification frequency - notice_days - input - 10 - Frequency in number of days for notifying users they are being logged. Default 1 day if responses are enabled, set to 0 to disable - - - Filtered frequency - filtered_minutes - input - 10 - The time between sending "filtered" in minutes. Default 15 minutes if responses are enabled, set to 0 to disable - - - Custom message prefix - prefix_message - - Message to prepend to all IMSpector generated messages. The default is "Message from IMSpector" - - input - 60 - - - Custom recorded message response - recorded_message - - Message to send to users to let them know they are being recorded. The default is "Your activities are being logged" - - textarea - base64 - 5 - 60 - - - Custom filtered message response - filtered_message - - Message to send to users to let them know about filtered messages. - - textarea - base64 - 5 - 60 - - - Restrictions - listtopic - - - Block file transfers - block_files - Block file transfers on supported protocols. - checkbox - - - Block web cameras - block_webcams - This option will block all webcam sessions. Currently IMSpector can only spot webcam sessions on Yahoo. - checkbox - - - Enable bad word filtering - filter_badwords - Replace characters of matched bad word with *. - checkbox - - - Bad words list - badwords_list - - Place one word or phrase to match per line.<br /> - Leave blank to load default list. - - textarea - base64 - 10 - 60 - - - - validate_form_imspector($_POST, &$input_errors); - - - sync_package_imspector(); - - - deinstall_package_imspector(); - - imspector_generate_rules - -
\ No newline at end of file diff --git a/config/imspector-dev/imspector_sync.xml b/config/imspector-dev/imspector_sync.xml deleted file mode 100644 index 3ff88d41..00000000 --- a/config/imspector-dev/imspector_sync.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - imspectorsync - 1.0 - Services: IMSpector - /usr/local/pkg/imspector.inc - - - Settings - /pkg_edit.php?xml=imspector.xml&id=0 - - - Replacements - /pkg_edit.php?xml=imspector_replacements.xml&id=0 - - - Access Lists - /pkg.php?xml=imspector_acls.xml - - - Log - /imspector_logs.php - - - Sync - /pkg_edit.php?xml=imspector_sync.xml&id=0 - - - - - - XMLRPC Sync - listtopic - - - Automatically sync imspector configuration changes - synconchanges - Automatically sync imspector(normal and reverse) changes to the hosts defined below. - checkbox - - - Remote Server - none - rowhelper - - - IP Address - ipaddress - IP Address of remote server - input - 20 - - - Password - password - Password for remote server. - password - 20 - - - - - - - - sync_package_imspector(); - - diff --git a/config/imspector-dev/services_imspector_logs.php b/config/imspector-dev/services_imspector_logs.php deleted file mode 100644 index adb3fa66..00000000 --- a/config/imspector-dev/services_imspector_logs.php +++ /dev/null @@ -1,311 +0,0 @@ -. - Copyright (C) 2012 Marcello Coutinho - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - -require("guiconfig.inc"); - -/* variables */ -$log_dir = '/var/imspector'; -$imspector_config = $config['installedpackages']['imspector']['config'][0]; - -$border_color = '#c0c0c0'; -$default_bgcolor = '#eeeeee'; - -$list_protocol_color = '#000000'; -$list_local_color = '#000000'; -$list_remote_color = '#000000'; -$list_convo_color = '#000000'; - -$list_protocol_bgcolor = '#cccccc'; -$list_local_bgcolor = '#dddddd'; -$list_remote_bgcolor = '#eeeeee'; -$list_end_bgcolor = '#bbbbbb'; - -$convo_title_color = 'black'; -$convo_local_color = 'blue'; -$convo_remote_color = 'red'; - -$convo_title_bgcolor = '#cccccc'; -$convo_local_bgcolor = '#dddddd'; -$convo_remote_bgcolor = '#eeeeee'; - -/* functions */ - -function convert_dir_list ($topdir) { - global $config; - if (!is_dir($topdir)) - return; - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); - $count=0; - if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) - continue; - if (is_dir("$topdir/$file")) - $list .= convert_dir_list("$topdir/$file"); - else - $list .= "$topdir/$file\n"; - $count ++; - if($count >= $limit){ - closedir($dh); - return $list; - } - } - closedir($dh); - } - return $list; - } - -/* ajax response */ -if ($_POST['mode'] == "render") { - - /* user list */ - print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); - print("--END--\n"); - - /* log files */ - if ($_POST['section'] != "none") { - $section = explode('|',$_POST['section']); - $protocol = $section[0]; - $localuser = $section[1]; - $remoteuser = $section[2]; - $conversation = $section[3]; - - /* conversation title */ - print(implode(', ', $section)."\n"); - print("--END--\n"); - - /* conversation content */ - $filename = $log_dir.'/'.implode('/', $section); - if($fd = fopen($filename, 'r')) { - print("\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - preg_match("/${new_format}|${old_format}/", $line, $matches); - $address = $matches[1]; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - if(count($matches) == 8) { - $category = $matches[6]; - $data = $matches[7]; - } else { - $category = ""; - $data = $matches[6]; - } - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "<$remoteuser>"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "<$localuser>"; - } - - $time = strftime("%H:%M:%S", $timestamp); - - print("\n - \n - \n - \n"); - } - print("
[$time]$user$category$data
\n"); - fclose($fd); - } - } - exit; -} -/* defaults to this page but if no settings are present, redirect to setup page */ -if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) - Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); - -$pgtitle = "Services: IMSpector Log Viewer"; -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ -//$pfSenseHead->addMeta(""); -//echo $pfSenseHead->getHTML(); -?> - - - -
- - -
- - -var section = 'none'; -var moveit = 1; -var the_timeout; - -function xmlhttpPost() -{ - var xmlHttpReq = false; - var self = this; - - if (window.XMLHttpRequest) - self.xmlHttpReq = new XMLHttpRequest(); - else if (window.ActiveXObject) - self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - - self.xmlHttpReq.open('POST', 'imspector_logs.php', true); - self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - self.xmlHttpReq.onreadystatechange = function() { - if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) - updatepage(self.xmlHttpReq.responseText); - } - - document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); -} - -function updatepage(str) -{ - /* update the list of conversations ( if we need to ) */ - var parts = str.split("--END--\\n"); - var lines = parts[0].split("\\n"); - - for (var line = 0 ; line < lines.length ; line ++) { - var a = lines[line].split("|"); - - if (!a[1] || !a[2] || !a[3]) continue; - - /* create titling information if needed */ - if (!document.getElementById(a[1])) { - document.getElementById('im_convos').innerHTML += - "
" + a[1] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "" + a[1] + ""; - document.getElementById(a[1]).innerHTML += - "
" + imageref + a[2] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "
" + a[3] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "
»" + a[4] + "
"; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = details[0] + " conversation between " + details[ 1 ] + - " and " + details[2] + ""; - if (!details[1]) title = " "; - if (!parts[2]) parts[2] = " "; - - document.getElementById('im_status').style.display = "none"; - var bottom = parseInt(document.getElementById('im_content').scrollTop); - var bottom2 = parseInt(document.getElementById('im_content').style.height); - var absheight = parseInt( bottom + bottom2 ); - if (absheight == document.getElementById('im_content').scrollHeight) { - moveit = 1; - } else { - moveit = 0; - } - document.getElementById('im_content').innerHTML = parts[2]; - if (moveit == 1) { - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; - } - document.getElementById('im_content_title').innerHTML = title; - the_timeout = setTimeout( "xmlhttpPost();", 5000 ); -} - -function setsection(value) -{ - section = value; - clearTimeout(the_timeout); - xmlhttpPost(); - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; -} - -EOD; -print($zz); -?> - - - - - -
-
 
- - - - - -
-
-
-
-
-
-
- - - -
- - - diff --git a/config/imspector-dev/services_imspector_logs2.php b/config/imspector-dev/services_imspector_logs2.php deleted file mode 100644 index 30f63058..00000000 --- a/config/imspector-dev/services_imspector_logs2.php +++ /dev/null @@ -1,318 +0,0 @@ -. - Copyright (C) 2012 0guzcan at pfsense forum. - Copyright (C) 2012 Marcello Coutinho - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ -require("guiconfig.inc"); - -/* variables */ -$log_dir = '/var/imspector'; -$imspector_config = $config['installedpackages']['imspector']['config'][0]; - -$border_color = '#c0c0c0'; -$default_bgcolor = '#eeeeee'; - -$list_protocol_color = '#000000'; -$list_local_color = '#ffffff'; -$list_remote_color = '#666666'; -$list_convo_color = '#888888'; - -$list_protocol_bgcolor = '#cccccc'; -$list_local_bgcolor = '#850000'; -$list_remote_bgcolor = '#eeeeee'; -$list_end_bgcolor = '#bbbbbb'; - -$convo_title_color = 'black'; -$convo_local_color = 'blue'; -$convo_remote_color = 'red'; - -$convo_title_bgcolor = '#cccccc'; -$convo_local_bgcolor = '#dddddd'; -$convo_remote_bgcolor = '#eeeeee'; - - -/* functions */ - -function convert_dir_list ($topdir) { - global $config; - if (!is_dir($topdir)) - return; - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); - $count=0; - if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) - continue; - if (is_dir("$topdir/$file")) - $list .= convert_dir_list("$topdir/$file"); - else - $list .= "$topdir/$file\n"; - $count ++; - if($count >= $limit){ - closedir($dh); - return $list; - } - } - closedir($dh); - } - return $list; - } - -/* ajax response */ -if ($_POST['mode'] == "render") { - - /* user list */ - print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); - print("--END--\n"); - - /* log files */ - if ($_POST['section'] != "none") { - $section = explode('|',$_POST['section']); - $protocol = $section[0]; - $localuser = $section[1]; - $remoteuser = $section[2]; - $conversation = $section[3]; - - /* conversation title */ - print(implode(', ', $section)."\n"); - print("--END--\n"); - - /* conversation content */ - $filename = $log_dir.'/'.implode('/', $section); - if($fd = fopen($filename, 'r')) { - $satir_oku = fgets($fd); - $ipsinibulduk = explode(':',$satir_oku); - - print("\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; - preg_match("/${new_format}|${old_format}/", $line, $matches); - $address = $matches[1]; - $addresbul = explode(':',$address); - $addressnew =$addresbul[0] ; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - if(count($matches) == 8) { - $category = $matches[6]; - $data = $matches[7]; - } else { - $category = ""; - $data = $matches[6]; - } - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "$remoteuser"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "$localuser"; - } - - $time = strftime("%H:%M", $timestamp); - - - print(" - \n - \n - \n - \n"); - } - print("
user [$localuser] at local ip: [$ipsinibulduk[0]]
[$time]$user$category$data
\n"); - fclose($fd); - } - } - exit; -} -/* defaults to this page but if no settings are present, redirect to setup page */ -if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) - Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); - -$pgtitle = "Services: IMSpector Log Viewer"; -include("head.inc"); -/* put your custom HTML head content here */ -/* using some of the $pfSenseHead function calls */ -//$pfSenseHead->addMeta(""); -//echo $pfSenseHead->getHTML(); -?> - - - - -
- - -
- - -var section = 'none'; -var moveit = 1; -var the_timeout; - -function xmlhttpPost() -{ - var xmlHttpReq = false; - var self = this; - - if (window.XMLHttpRequest) - self.xmlHttpReq = new XMLHttpRequest(); - else if (window.ActiveXObject) - self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - - self.xmlHttpReq.open('POST', 'imspector_logs.php', true); - self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - - self.xmlHttpReq.onreadystatechange = function() { - if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) - updatepage(self.xmlHttpReq.responseText); - } - - document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); -} - -function updatepage(str) -{ - /* update the list of conversations ( if we need to ) */ - var parts = str.split("--END--\\n"); - var lines = parts[0].split("\\n"); - - for (var line = 0 ; line < lines.length ; line ++) { - var a = lines[line].split("|"); - - if (!a[1] || !a[2] || !a[3]) continue; - - /* create titling information if needed */ - if (!document.getElementById(a[1])) { - document.getElementById('im_convos').innerHTML += - "
" + a[1] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "" + a[1] + ""; - document.getElementById(a[1]).innerHTML += - "
" + imageref + a[2] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "
" + a[3] + "
" + - "
"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "
»" + a[4] + "
"; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = "
"+ details[3]+ " dated " + "[" + details[1]+ " ]"+ " with " + "[ " + details[2] + " ] " + details[0] + " records
"; - if (!details[1]) title = " "; - if (!parts[2]) parts[2] = " "; - - document.getElementById('im_status').style.display = "none"; - var bottom = parseInt(document.getElementById('im_content').scrollTop); - var bottom2 = parseInt(document.getElementById('im_content').style.height); - var absheight = parseInt( bottom + bottom2 ); - if (absheight == document.getElementById('im_content').scrollHeight) { - moveit = 1; - } else { - moveit = 0; - } - document.getElementById('im_content').innerHTML = parts[2]; - if (moveit == 1) { - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; - } - document.getElementById('im_content_title').innerHTML = title; - the_timeout = setTimeout( "xmlhttpPost();", 5000 ); -} - -function setsection(value) -{ - section = value; - clearTimeout(the_timeout); - xmlhttpPost(); - document.getElementById('im_content').scrollTop = 0; - document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; -} - -EOD; -print($zz); -?> - - - - - -
-
 
- - - - - -
-
-
-
-
-
-
- - - -
- - - \ No newline at end of file diff --git a/config/imspector/imspector.inc b/config/imspector/imspector.inc index d2757be8..52c7ae1b 100644 --- a/config/imspector/imspector.inc +++ b/config/imspector/imspector.inc @@ -2,6 +2,7 @@ /* imspector.inc part of pfSense (http://www.pfsense.com/) + Copyright (C) 2012 Marcello Coutinho. Copyright (C) 2011 Scott Ullrich . Copyright (C) 2011 Bill Marquette . Copyright (C) 2007 Ryan Wagoner . @@ -31,6 +32,7 @@ require_once("config.inc"); require_once("functions.inc"); + require_once("service-utils.inc"); /* IMSpector */ @@ -38,20 +40,17 @@ define('IMSPECTOR_ETC', '/usr/local/etc/imspector'); define('IMSPECTOR_CONFIG', IMSPECTOR_ETC . '/imspector.conf'); - function imspector_notice ($msg) { syslog(LOG_NOTICE, "imspector: {$msg}"); } function imspector_warn ($msg) { syslog(LOG_WARNING, "imspector: {$msg}"); } + function ims_text_area_decode($text){ + return preg_replace('/\r\n/', "\n",base64_decode($text)); + } + function imspector_action ($action) { if (file_exists(IMSPECTOR_RCFILE)) mwexec(IMSPECTOR_RCFILE.' '.$action); } - function imspector_running () { - if((int)exec('pgrep imspector | wc -l') > 0) - return true; - return false; - } - function write_imspector_config($file, $text) { $conf = fopen($file, 'w'); if(!$conf) { @@ -95,18 +94,19 @@ function validate_form_imspector($post, $input_errors) { if($post['iface_array']) foreach($post['iface_array'] as $iface) - if($iface == 'wan') + if($iface == 'wanx') $input_errors[] = 'It is a security risk to specify WAN in the \'Interface\' field'; } function deinstall_package_imspector() { imspector_action('stop'); - @unlink(IMSPECTOR_RCFILE); - @unlink(IMSPECTOR_CONFIG); - @unlink(IMSPECTOR_ETC . '/badwords_custom.txt'); - @unlink(IMSPECTOR_ETC . '/acl_blacklist.txt'); - @unlink(IMSPECTOR_ETC . '/acl_whitelist.txt'); + unlink_if_exists(IMSPECTOR_RCFILE); + unlink_if_exists(IMSPECTOR_CONFIG); + unlink_if_exists(IMSPECTOR_ETC . '/badwords_custom.txt'); + unlink_if_exists(IMSPECTOR_ETC . '/acl_blacklist.txt'); + unlink_if_exists(IMSPECTOR_ETC . '/acl_whitelist.txt'); + unlink_if_exists('/usr/local/www/imspector_logs.php'); //exec('pkg_delete imspector-0.4'); } @@ -122,7 +122,7 @@ break; case 'rule': $rules = "# IMSpector \n"; - $rules .= "anchor \"miniupnpd\"\n"; + $rules .= "anchor \"imspector\"\n"; break; } @@ -133,21 +133,60 @@ global $config; global $input_errors; + /*detect boot process*/ + if (is_array($_POST)){ + if (preg_match("/\w+/",$_POST['__csrf_magic'])) + unset($boot_process); + else + $boot_process="on"; + } + + if (is_process_running('imspector') && isset($boot_process)) + return; + + /* check default options and sample files*/ + $load_samples=0; + + #bannedphraselist + if (!is_array($config['installedpackages']['imspectoracls'])){ + $config['installedpackages']['imspectoracls']['config'][]=array('enable'=> 'on', + 'description' => 'allow access to all ids', + 'action' => 'allow', + 'localid' => 'all', + 'remoteid' => base64_encode('all')); + $load_samples++; + } + $ims_acls = $config['installedpackages']['imspectoracls']['config']; + + if (is_array($config['installedpackages']['imspectorreplacements'])){ + if ($config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] == "" && file_exists(IMSPECTOR_ETC . '/badwords.txt')){ + $config['installedpackages']['imspectorreplacements']['config'][0]['badwords_list'] = base64_encode(file_get_contents(IMSPECTOR_ETC . '/badwords.txt')); + $load_samples++; + } + $ims_replacements = $config['installedpackages']['imspectorreplacements']['config'][0]; + } + + if (is_array($config['installedpackages']['imspector'])) + $ims_config = $config['installedpackages']['imspector']['config'][0]; + + if($load_samples > 0) + write_config(); + + /*continue sync process*/ + log_error("Imspector: Saving changes."); config_lock(); - - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - + /* remove existing rules */ - exec('/sbin/pfctl -a imspector -Fr'); - exec('/sbin/pfctl -a imspector -Fn'); + exec('/sbin/pfctl -a imspector -Fr > /dev/null'); + exec('/sbin/pfctl -a imspector -Fn > /dev/null'); $ifaces_active = ''; - if($imspector_config['enable'] && $imspector_config['proto_array']) - $proto_array = explode(',', $imspector_config['proto_array']); + if($ims_config['enable'] && $ims_config['proto_array']) + $proto_array = explode(',', $ims_config['proto_array']); - if($imspector_config['enable'] && $imspector_config['iface_array']) - $iface_array = explode(',', $imspector_config['iface_array']); + if($ims_config['enable'] && $ims_config['iface_array']) + $iface_array = explode(',', $ims_config['iface_array']); if($iface_array && $proto_array) { foreach($iface_array as $iface) { @@ -175,8 +214,11 @@ imspector_warn("Could not resolve real interface for {$iface}"); } } - + + + /*reload rules*/ if($pf_rules) { + log_error("Imspector: Reloading rules."); exec("echo \"{$pf_rules}\" | /sbin/pfctl -a imspector -f -"); conf_mount_rw(); @@ -188,69 +230,59 @@ foreach($proto_array as $proto) $conf[$proto . '_protocol'] = 'on'; - if($imspector_config['log_file']) { + if($ims_config['log_file']) { @mkdir('/var/imspector'); $conf['file_logging_dir'] = '/var/imspector'; } - if($imspector_config['log_mysql']) { - $conf['mysql_server'] = $imspector_config['mysql_server']; - $conf['mysql_database'] = $imspector_config['mysql_database']; - $conf['mysql_username'] = $imspector_config['mysql_username']; - $conf['mysql_password'] = $imspector_config['mysql_password']; + if($ims_config['log_mysql']) { + $conf['mysql_server'] = $ims_config['mysql_server']; + $conf['mysql_database'] = $ims_config['mysql_database']; + $conf['mysql_username'] = $ims_config['mysql_username']; + $conf['mysql_password'] = $ims_config['mysql_password']; } - if($imspector_config['filter_badwords']) { - if(!empty($imspector_config["badwords_list"])) { - $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords_custom.txt'; - write_imspector_config(IMSPECTOR_ETC . '/badwords_custom.txt', - str_replace("\r", '', base64_decode($imspector_config["badwords_list"]))); - } else - $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords.txt'; - } + if($ims_replacements['filter_badwords']) { + write_imspector_config(IMSPECTOR_ETC . '/badwords_custom.txt', ims_text_area_decode($ims_replacements["badwords_list"])); + $conf['badwords_filename'] = IMSPECTOR_ETC . '/badwords_custom.txt'; + } - if($imspector_config['block_files']) + if($ims_replacements['block_files']) $conf['block_files'] = 'on'; - - if($imspector_config['block_unlisted']) - $conf['block_unlisted'] = 'on'; - - if(!empty($imspector_config['acl_whitelist'])) { - $conf['whitelist_filename'] = IMSPECTOR_ETC . '/acl_whitelist.txt'; - write_imspector_config(IMSPECTOR_ETC . '/acl_whitelist.txt', - str_replace("\r", '', base64_decode($imspector_config["acl_whitelist"]))); - } - - if(!empty($imspector_config['acl_blacklist'])) { - $conf['blacklist_filename'] = IMSPECTOR_ETC . '/acl_blacklist.txt'; - write_imspector_config(IMSPECTOR_ETC . '/acl_blacklist.txt', - str_replace("\r", '', base64_decode($imspector_config["acl_blacklist"]))); - } + + if($ims_replacements['block_webcams']) + $conf['block_webcams'] = 'on'; + + $acls=""; + $conf['acl_filename'] = IMSPECTOR_ETC . '/acls.txt'; + foreach ($ims_acls as $rule){ + if ($rule['enable']){ + $acls.= "{$rule['action']} {$rule['localid']} ".preg_replace("/\s+/"," ",base64_decode($rule['remoteid']))."\n"; + } + } + write_imspector_config(IMSPECTOR_ETC . '/acls.txt', $acls); // Handle Jabber SSL options - if(isset($imspector_config["ssl_ca_cert"]) && $imspector_config["ssl_ca_cert"] != "none" && - isset($imspector_config["ssl_server_cert"]) && $imspector_config["ssl_server_cert"] != "none") { + if(isset($ims_config["ssl_ca_cert"]) && $ims_config["ssl_ca_cert"] != "none" && + isset($ims_config["ssl_server_cert"]) && $ims_config["ssl_server_cert"] != "none") { $conf['ssl'] = "on"; if(!is_dir(IMSPECTOR_ETC . "/ssl")) mkdir(IMSPECTOR_ETC . "/ssl"); - $ca_cert = lookup_ca($imspector_config["ssl_ca_cert"]); + $ca_cert = lookup_ca($ims_config["ssl_ca_cert"]); if ($ca_cert != false) { if(base64_decode($ca_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_key.pem", - base64_decode($ca_cert['prv'])); + file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_key.pem", base64_decode($ca_cert['prv'])); $conf['ssl_ca_key'] = IMSPECTOR_ETC . '/ssl/ssl_ca_key.pem'; } if(base64_decode($ca_cert['crt'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem", - base64_decode($ca_cert['crt'])); + file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem", base64_decode($ca_cert['crt'])); $conf['ssl_ca_cert'] = IMSPECTOR_ETC . "/ssl/ssl_ca_cert.pem"; } - $svr_cert = lookup_cert($imspector_config["ssl_server_cert"]); + $svr_cert = lookup_cert($ims_config["ssl_server_cert"]); if ($svr_cert != false) { if(base64_decode($svr_cert['prv'])) { - file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_server_key.pem", - base64_decode($svr_cert['prv'])); + file_put_contents(IMSPECTOR_ETC . "/ssl/ssl_server_key.pem", base64_decode($svr_cert['prv'])); $conf['ssl_key'] = IMSPECTOR_ETC . '/ssl/ssl_server_key.pem'; } @@ -263,42 +295,68 @@ unset($conf['ssl']); } - if (isset($imspector_config['resonder']) && $imspector_config['resonder'] == 'on') { + if (isset($ims_replacements['responder']) && $ims_replacements['responder'] == 'on') { $conf['responder_filename'] = IMSPECTOR_ETC . "/responder.db"; - if (isset($imspector_config['prefix_message']) && $imspector_config['prefix_message'] != '' ) { - $conf['response_prefix'] = base64_decode($imspector_config['prefix_message']) . " -="; + if (isset($ims_replacements['prefix_message']) && $ims_replacements['prefix_message'] != '' ) { + $conf['response_prefix'] = " .={$ims_replacements['prefix_message']}=."; } - if (isset($imspector_config['notice_days']) && is_numeric($imspector_config['notice_days'])) { - if ($imspector_config['notice_days'] != 0) { - $conf['notice_days'] = $imspector_config['notice_days']; + else{ + $conf['response_prefix'] = " .=Your activities are being logged=."; + } + if (isset($ims_replacements['notice_days']) && is_numeric($ims_replacements['notice_days'])) { + if ($ims_replacements['notice_days'] != 0) { + $conf['notice_days'] = $ims_replacements['notice_days']; } } else { $conf['notice_days'] = 1; } - $conf['notice_response'] = "Your activities are being logged"; - if (isset($imspector_config['filtered_minutes']) && is_numeric($imspector_config['filtered_minutes'])) { - if ($imspector_config['filtered_minutes'] != 0) { - $conf['filtered_mins'] = $imspector_config['filtered_minutes']; + + /*Custom recorded message response*/ + if(isset($ims_replacements['recorded_message']) && $ims_replacements['recorded_message'] != '' ){ + $conf['notice_response'] = ims_text_area_decode($ims_replacements['recorded_message']); + } + else{ + $conf['notice_response'] = "Your activities are being logged"; + } + + /*Filtered Frequency*/ + if (isset($ims_replacements['filtered_minutes']) && is_numeric($ims_replacements['filtered_minutes'])) { + if ($ims_replacements['filtered_minutes'] != 0) { + $conf['filtered_mins'] = $ims_replacements['filtered_minutes']; } } else { $conf['filtered_mins'] = 15; } - $conf['filtered_response'] = "Your message has been filtered"; + + /*Custom filtered message response*/ + if(isset($ims_replacements['filtered_message']) && $ims_replacements['filtered_message'] != '' ){ + $conf['filtered_response'] = ims_text_area_decode($ims_replacements['filtered_message']); + } + else{ + $conf['filtered_response'] = "Your message has been filtered"; + } } $conftext = ''; foreach($conf as $var => $key) $conftext .= "{$var}={$key}\n"; write_imspector_config(IMSPECTOR_CONFIG, $conftext); + + /*Check template settings*/ + if ($ims_config['template'] == "") + $template="services_imspector_logs.php"; + else + $template=$ims_config['template']; + /*link template file*/ + $link="/usr/local/www/imspector_logs.php"; + unlink_if_exists($link); + symlink("/usr/local/www/{$template}", $link); + /* generate rc file start and stop */ $stop = << \ No newline at end of file + +/* Uses XMLRPC to synchronize the changes to a remote node */ +function imspector_sync_on_changes() { + global $config, $g; + + $synconchanges = $config['installedpackages']['imspectorsync']['config'][0]['synconchanges']; + if(!$synconchanges) + return; + log_error("Imspector: xmlrpc sync is starting."); + foreach ($config['installedpackages']['imspectorsync']['config'] as $rs ){ + foreach($rs['row'] as $sh){ + $sync_to_ip = $sh['ipaddress']; + $password = $sh['password']; + if($password && $sync_to_ip) + imspector_do_xmlrpc_sync($sync_to_ip, $password); + } + } + log_error("Imspector: xmlrpc sync is ending."); +} +/* Do the actual XMLRPC sync */ +function imspector_do_xmlrpc_sync($sync_to_ip, $password) { + global $config, $g; + + if(!$password) + return; + + if(!$sync_to_ip) + return; + $username="admin"; + + $xmlrpc_sync_neighbor = $sync_to_ip; + if($config['system']['webgui']['protocol'] != "") { + $synchronizetoip = $config['system']['webgui']['protocol']; + $synchronizetoip .= "://"; + } + $port = $config['system']['webgui']['port']; + /* if port is empty lets rely on the protocol selection */ + if($port == "") { + if($config['system']['webgui']['protocol'] == "http") + $port = "80"; + else + $port = "443"; + } + $synchronizetoip .= $sync_to_ip; + + /* xml will hold the sections to sync */ + $xml = array(); + $xml['imspector'] = $config['installedpackages']['imspector']; + $xml['imspectorreplacements'] = $config['installedpackages']['imspectorreplacements']; + $xml['imspectoracls'] = $config['installedpackages']['imspectoracls']; + /* assemble xmlrpc payload */ + $params = array( + XML_RPC_encode($password), + XML_RPC_encode($xml) + ); + + /* set a few variables needed for sync code borrowed from filter.inc */ + $url = $synchronizetoip; + log_error("Imspector: Beginning XMLRPC sync to {$url}:{$port}."); + $method = 'pfsense.merge_installedpackages_section_xmlrpc'; + $msg = new XML_RPC_Message($method, $params); + $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); + $cli->setCredentials($username, $password); + if($g['debug']) + $cli->setDebug(1); + /* send our XMLRPC message and timeout after 250 seconds */ + $resp = $cli->send($msg, "250"); + if(!$resp) { + $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port}."; + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } elseif($resp->faultCode()) { + $cli->setDebug(1); + $resp = $cli->send($msg, "250"); + $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } else { + log_error("imspector XMLRPC sync successfully completed with {$url}:{$port}."); + } + + /* tell imspector to reload our settings on the destionation sync host. */ + $method = 'pfsense.exec_php'; + $execcmd = "require_once('/usr/local/pkg/imspector.inc');\n"; + $execcmd .= "sync_package_imspector();"; + /* assemble xmlrpc payload */ + $params = array( + XML_RPC_encode($password), + XML_RPC_encode($execcmd) + ); + + log_error("imspector XMLRPC reload data {$url}:{$port}."); + $msg = new XML_RPC_Message($method, $params); + $cli = new XML_RPC_Client('/xmlrpc.php', $url, $port); + $cli->setCredentials($username, $password); + $resp = $cli->send($msg, "250"); + if(!$resp) { + $error = "A communications error occurred while attempting imspector XMLRPC sync with {$url}:{$port} (pfsense.exec_php)."; + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } elseif($resp->faultCode()) { + $cli->setDebug(1); + $resp = $cli->send($msg, "250"); + $error = "An error code was received while attempting imspector XMLRPC sync with {$url}:{$port} - Code " . $resp->faultCode() . ": " . $resp->faultString(); + log_error($error); + file_notice("sync_settings", $error, "imspector Settings Sync", ""); + } else { + log_error("imspector XMLRPC reload data success with {$url}:{$port} (pfsense.exec_php)."); + } + +} +?> diff --git a/config/imspector/imspector.xml b/config/imspector/imspector.xml index d42e7a18..72969778 100644 --- a/config/imspector/imspector.xml +++ b/config/imspector/imspector.xml @@ -43,10 +43,9 @@ Describe your package requirements here Currently there are no FAQ items provided. imspector - 0.9 + 20111108 Services: IMSpector - Change - /services_imspector_logs.php + Save /usr/local/pkg/imspector.inc IMSpector @@ -58,38 +57,81 @@ imspector imspector.sh imspector + - IMSpector Log Viewer - /services_imspector_logs.php - - - IMSpector Settings + Settings /pkg_edit.php?xml=imspector.xml&id=0 + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_sync.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_replacements.xml + + + /usr/local/pkg/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_acls.xml + /usr/local/pkg/ 0755 http://www.pfsense.org/packages/config/imspector/imspector.inc + + /usr/local/www/ + 0755 + http://www.pfsense.org/packages/config/imspector/imspector_logs.php + /usr/local/www/ 0755 http://www.pfsense.org/packages/config/imspector/services_imspector_logs.php + + /usr/local/www/ + 0755 + http://www.pfsense.org/packages/config/imspector/services_imspector_logs2.php + + + General Settings + listtopic + Enable IMSpector enable checkbox - Interfaces (generally LAN) + Interfaces iface_array - You can use the CTRL or COMMAND key to select multiple interfaces. + Generally select internal interface(s) like LAN
+ You can use the CTRL or COMMAND key to select multiple interfaces.]]>
interfaces_selection 3 @@ -99,203 +141,101 @@ Listen on protocols proto_array - You can use the CTRL or COMMAND key to select multiple protocols. NOTE: Gtalk/Jabber-SSL requires SSL certificates. + NOTE: Gtalk/Jabber-SSL requires SSL certificates.
+ You can use the CTRL or COMMAND key to select multiple protocols.]]>
select 7 true - - - - - - - + + + + + + +
- Enable file logging - log_file - Log files stored in /var/imspector. - checkbox - - - Enable mySQL logging - log_mysql - Make sure to specify your MySQL credentials below. - checkbox - - - mySQL server - mysql_server - input - - - mySQL database - mysql_database - input - - - mySQL username - mysql_username - input - - - mySQL password - mysql_password - password - - - SSL Certificate - ssl_server_cert + SSL CA Certificate + ssl_ca_cert - Choose the SSL Server Certificate here. + Choose the SSL CA Certficate here. select_source - + descr refid - SSL CA Certificate - ssl_ca_cert + SSL Certificate + ssl_server_cert - Choose the SSL CA Certficate here. + Choose the SSL Server Certificate here. select_source - + descr refid - Enable bad word filtering - filter_badwords - Replace characters of matched bad word with *. - checkbox + Logging + listtopic - Enable response messages - resonder - - Inform the users (both local and remote) that the conversation they are having is being recorded. This might be needed for legal reasons. - Inform the sender that a file (or message) was blocked. This is useful because the sender will know a block occured, instead of the transfer simply failing. + Enable file logging + log_file + Log files stored in /var/imspector. checkbox - Notification frequency - notice_days - input - Frequency in number of days for notifying users they are being logged. Default 1 day if responses are enabled, set to 0 to disable - - - Filtered frequency - filtered_minutes + Report limit + reportlimit + Max entries to fetch from log dir(s). Default is 50 input - The time between sending "filtered" in minutes. Default 15 minutes if responses are enabled, set to 0 to disable - - - Custom message prefix - prefix_message - - Message to prepend to all IMSpector generated messages. The default is "Message from IMSpector" - - textarea - base64 - 5 - 40 - - - Custom recorded message response - recorded_message - - Message to send to users to let them know they are being recorded. The default is "Your activities are being logged" - - textarea - base64 - 5 - 40 + 10 - Custom filtered message response - filtered_message - - Message to send to users to let them know about filtered messages. - - textarea - base64 - 5 - 40 + Report template + template + Template to use on reports + select + + + + + - - Bad words list - badwords_list - - Place one word or phrase to match per line.<br /> - If left blank the default list in /usr/local/etc/imspector/badwords.txt will be used. - - textarea - base64 - 5 - 40 + Enable mySQL logging + log_mysql + Make sure to specify your MySQL credentials below. + checkbox - Block file transfers - block_files - Block file transfers on supported protocols. - checkbox + mySQL server + mysql_server + input + 35 - Block non ACL defined - block_unlisted - Overide the default of allowing user's not defined the whitelist or blacklist ACLs. - checkbox + mySQL database + mysql_database + input + 35 - ACL whitelist - acl_whitelist - - Example (allow specific access): localuser: remoteuser1 remoteuser2<br /> - Example (allow full access): localuser: - - textarea - base64 - 5 - 40 + mySQL username + mysql_username + input + 35 - ACL blacklist - acl_blacklist - - Example (block specifc access): localuser: remoteuser1 remoteuser2<br /> - Example (block all access): localuser: - - textarea - base64 - 5 - 40 + mySQL password + mysql_password + password + 35
@@ -308,4 +248,4 @@ deinstall_package_imspector(); imspector_generate_rules - \ No newline at end of file + diff --git a/config/imspector/imspector_acls.xml b/config/imspector/imspector_acls.xml new file mode 100644 index 00000000..3176c75f --- /dev/null +++ b/config/imspector/imspector_acls.xml @@ -0,0 +1,173 @@ + + + + . + All rights reserved. + */ +/* ========================================================================== */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ +/* ========================================================================== */ + ]]> + + + imspectoracls + 20111108 + Imspector acls + Imspectors Access Lists + Save + /usr/local/pkg/imspector.inc + + + SSH Conditions + Configure SSH conditional exceptions +
Services
+ /pkg.php?xml=sshdcond.xml +
+ installedpackages->package->sshdcond + + + /usr/local/pkg/ + 755 + http://www.pfsense.com/packages/config/sshdcond/sshdcond.inc + + + /usr/local/pkg/ + 755 + http://www.pfsense.com/packages/config/sshdcond/sshdcond_sync.xml + + + + Settings + /pkg_edit.php?xml=imspector.xml&id=0 + + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml&id=0 + + + + + Status + enable + + + action + action + + + local ID + localid + + + Description + description + + + + + listtopic + Imspector Access Lists + temp + + + Enable + enable + checkbox + + Rules are processed in order, from top to bottom.]]> + + + Action + action + Select action to take on this rule + select + + + + + + + + Description + description + + input + 50 + + + + Local ID + localid + + Local IDs can either be complete, such as user@company.com, partial like company.com or all to match any id.]]> + input + 50 + + + + Remote ID + remoteid + + Remote IDs can be complete ids like user@company.com, partial company.com, all to match any id or groupchat.]]> + textarea + 10 + 60 + base64 + + + + + validate_form_imspector($_POST, &$input_errors); + + + sync_package_imspector(); + + + deinstall_package_imspector(); + + imspector_generate_rules +
\ No newline at end of file diff --git a/config/imspector/imspector_logs.php b/config/imspector/imspector_logs.php new file mode 100644 index 00000000..e44ef35f --- /dev/null +++ b/config/imspector/imspector_logs.php @@ -0,0 +1,311 @@ +. + Copyright (C) 2012 Marcello Coutinho + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require("guiconfig.inc"); + +/* variables */ +$log_dir = '/var/imspector'; +$imspector_config = $config['installedpackages']['imspector']['config'][0]; + +$border_color = '#c0c0c0'; +$default_bgcolor = '#eeeeee'; + +$list_protocol_color = '#000000'; +$list_local_color = '#000000'; +$list_remote_color = '#000000'; +$list_convo_color = '#000000'; + +$list_protocol_bgcolor = '#cccccc'; +$list_local_bgcolor = '#dddddd'; +$list_remote_bgcolor = '#eeeeee'; +$list_end_bgcolor = '#bbbbbb'; + +$convo_title_color = 'black'; +$convo_local_color = 'blue'; +$convo_remote_color = 'red'; + +$convo_title_bgcolor = '#cccccc'; +$convo_local_bgcolor = '#dddddd'; +$convo_remote_bgcolor = '#eeeeee'; + +/* functions */ + +function convert_dir_list ($topdir) { + global $config; + if (!is_dir($topdir)) + return; + $imspector_config = $config['installedpackages']['imspector']['config'][0]; + $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); + file_put_contents("/tmp/teste.txt",$limit." teste",LOCK_EX); + $count=0; + if ($dh = opendir($topdir)) { + while (($file = readdir($dh)) !== false) { + if(!preg_match('/^\./', $file) == 0) + continue; + if (is_dir("$topdir/$file")) + $list .= convert_dir_list("$topdir/$file"); + else + $list .= "$topdir/$file\n"; + $count ++; + if($count >= $limit){ + closedir($dh); + return $list; + } + } + closedir($dh); + } + return $list; + } + +/* ajax response */ +if ($_POST['mode'] == "render") { + + /* user list */ + print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); + print("--END--\n"); + + /* log files */ + if ($_POST['section'] != "none") { + $section = explode('|',$_POST['section']); + $protocol = $section[0]; + $localuser = $section[1]; + $remoteuser = $section[2]; + $conversation = $section[3]; + + /* conversation title */ + print(implode(', ', $section)."\n"); + print("--END--\n"); + + /* conversation content */ + $filename = $log_dir.'/'.implode('/', $section); + if($fd = fopen($filename, 'r')) { + print("\n"); + while (!feof($fd)) { + $line = fgets($fd); + if(feof($fd)) continue; + $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + preg_match("/${new_format}|${old_format}/", $line, $matches); + $address = $matches[1]; + $timestamp = $matches[2]; + $direction = $matches[3]; + $type = $matches[4]; + $filtered = $matches[5]; + if(count($matches) == 8) { + $category = $matches[6]; + $data = $matches[7]; + } else { + $category = ""; + $data = $matches[6]; + } + + if($direction == '0') { + $bgcolor = $convo_remote_bgcolor; + $user = "<$remoteuser>"; + } + if($direction == '1') { + $bgcolor = $convo_local_bgcolor; + $user = "<$localuser>"; + } + + $time = strftime("%H:%M:%S", $timestamp); + + print("\n + \n + \n + \n"); + } + print("
[$time]$user$category$data
\n"); + fclose($fd); + } + } + exit; +} +/* defaults to this page but if no settings are present, redirect to setup page */ +if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) + Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); + +$pgtitle = "Services: IMSpector Log Viewer"; +include("head.inc"); +/* put your custom HTML head content here */ +/* using some of the $pfSenseHead function calls */ +//$pfSenseHead->addMeta(""); +//echo $pfSenseHead->getHTML(); +?> + + + +
+ + +
+ + +var section = 'none'; +var moveit = 1; +var the_timeout; + +function xmlhttpPost() +{ + var xmlHttpReq = false; + var self = this; + + if (window.XMLHttpRequest) + self.xmlHttpReq = new XMLHttpRequest(); + else if (window.ActiveXObject) + self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); + + self.xmlHttpReq.open('POST', 'imspector_logs.php', true); + self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + + self.xmlHttpReq.onreadystatechange = function() { + if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) + updatepage(self.xmlHttpReq.responseText); + } + + document.getElementById('im_status').style.display = "inline"; + self.xmlHttpReq.send("mode=render§ion=" + section); +} + +function updatepage(str) +{ + /* update the list of conversations ( if we need to ) */ + var parts = str.split("--END--\\n"); + var lines = parts[0].split("\\n"); + + for (var line = 0 ; line < lines.length ; line ++) { + var a = lines[line].split("|"); + + if (!a[1] || !a[2] || !a[3]) continue; + + /* create titling information if needed */ + if (!document.getElementById(a[1])) { + document.getElementById('im_convos').innerHTML += + "
" + a[1] + "
" + + "
"; + } + if (!document.getElementById(a[1] + "_" + a[2])) { + var imageref = ""; + if (a[0]) imageref = "" + a[1] + ""; + document.getElementById(a[1]).innerHTML += + "
" + imageref + a[2] + "
" + + "
"; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { + document.getElementById(a[1] + "_" + a[2]).innerHTML += + "
" + a[3] + "
" + + "
"; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { + document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += + "
»" + a[4] + "
"; + } + } + + /* determine the title of this conversation */ + var details = parts[1].split(","); + var title = details[0] + " conversation between " + details[ 1 ] + + " and " + details[2] + ""; + if (!details[1]) title = " "; + if (!parts[2]) parts[2] = " "; + + document.getElementById('im_status').style.display = "none"; + var bottom = parseInt(document.getElementById('im_content').scrollTop); + var bottom2 = parseInt(document.getElementById('im_content').style.height); + var absheight = parseInt( bottom + bottom2 ); + if (absheight == document.getElementById('im_content').scrollHeight) { + moveit = 1; + } else { + moveit = 0; + } + document.getElementById('im_content').innerHTML = parts[2]; + if (moveit == 1) { + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; + } + document.getElementById('im_content_title').innerHTML = title; + the_timeout = setTimeout( "xmlhttpPost();", 5000 ); +} + +function setsection(value) +{ + section = value; + clearTimeout(the_timeout); + xmlhttpPost(); + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; +} + +EOD; +print($zz); +?> + + + + + +
+
 
+ + + + + +
+
+
+
+
+
+
+ + + +
+ + + diff --git a/config/imspector/imspector_replacements.xml b/config/imspector/imspector_replacements.xml new file mode 100644 index 00000000..7f53bbd4 --- /dev/null +++ b/config/imspector/imspector_replacements.xml @@ -0,0 +1,188 @@ + + + + + + + Copyright (C) 2011 Bill Marquette + Copyright (C) 2007 Ryan Wagoner + All rights reserved. + */ +/* ========================================================================== */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + */ +/* ========================================================================== */ + ]]> + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + imspectorreplacements + 20111108 + Services: IMSpector + Save + /usr/local/pkg/imspector.inc + + IMSpector + Set IMSpector settings such as protocols to listen on. +
Services
+ /services_imspector_logs.php +
+ + imspector + imspector.sh + imspector + + + + Settings + /pkg_edit.php?xml=imspector.xml&id=0 + + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml&id=0 + + + + + Response messages + listtopic + + + Enable response messages + responder + + Inform the users (both local and remote) that the conversation they are having is being recorded. This might be needed for legal reasons. + Inform the sender that a file (or message) was blocked. This is useful because the sender will know a block occured, instead of the transfer simply failing. + checkbox + + + Notification frequency + notice_days + input + 10 + Frequency in number of days for notifying users they are being logged. Default 1 day if responses are enabled, set to 0 to disable + + + Filtered frequency + filtered_minutes + input + 10 + The time between sending "filtered" in minutes. Default 15 minutes if responses are enabled, set to 0 to disable + + + Custom message prefix + prefix_message + + Message to prepend to all IMSpector generated messages. The default is "Message from IMSpector" + + input + 60 + + + Custom recorded message response + recorded_message + + Message to send to users to let them know they are being recorded. The default is "Your activities are being logged" + + textarea + base64 + 5 + 60 + + + Custom filtered message response + filtered_message + + Message to send to users to let them know about filtered messages. + + textarea + base64 + 5 + 60 + + + Restrictions + listtopic + + + Block file transfers + block_files + Block file transfers on supported protocols. + checkbox + + + Block web cameras + block_webcams + This option will block all webcam sessions. Currently IMSpector can only spot webcam sessions on Yahoo. + checkbox + + + Enable bad word filtering + filter_badwords + Replace characters of matched bad word with *. + checkbox + + + Bad words list + badwords_list + + Place one word or phrase to match per line.<br /> + Leave blank to load default list. + + textarea + base64 + 10 + 60 + + + + validate_form_imspector($_POST, &$input_errors); + + + sync_package_imspector(); + + + deinstall_package_imspector(); + + imspector_generate_rules + +
\ No newline at end of file diff --git a/config/imspector/imspector_sync.xml b/config/imspector/imspector_sync.xml new file mode 100644 index 00000000..3ff88d41 --- /dev/null +++ b/config/imspector/imspector_sync.xml @@ -0,0 +1,109 @@ + + + + + + + + Describe your package here + Describe your package requirements here + Currently there are no FAQ items provided. + imspectorsync + 1.0 + Services: IMSpector + /usr/local/pkg/imspector.inc + + + Settings + /pkg_edit.php?xml=imspector.xml&id=0 + + + Replacements + /pkg_edit.php?xml=imspector_replacements.xml&id=0 + + + Access Lists + /pkg.php?xml=imspector_acls.xml + + + Log + /imspector_logs.php + + + Sync + /pkg_edit.php?xml=imspector_sync.xml&id=0 + + + + + + XMLRPC Sync + listtopic + + + Automatically sync imspector configuration changes + synconchanges + Automatically sync imspector(normal and reverse) changes to the hosts defined below. + checkbox + + + Remote Server + none + rowhelper + + + IP Address + ipaddress + IP Address of remote server + input + 20 + + + Password + password + Password for remote server. + password + 20 + + + + + + + + sync_package_imspector(); + + diff --git a/config/imspector/services_imspector_logs.php b/config/imspector/services_imspector_logs.php index fce9b892..adb3fa66 100644 --- a/config/imspector/services_imspector_logs.php +++ b/config/imspector/services_imspector_logs.php @@ -6,6 +6,7 @@ JavaScript Code is GPL Licensed from SmoothWall Express. Copyright (C) 2007 Ryan Wagoner . + Copyright (C) 2012 Marcello Coutinho All rights reserved. Redistribution and use in source and binary forms, with or without @@ -60,20 +61,30 @@ $convo_remote_bgcolor = '#eeeeee'; /* functions */ function convert_dir_list ($topdir) { - if (!is_dir($topdir)) return; + global $config; + if (!is_dir($topdir)) + return; + $imspector_config = $config['installedpackages']['imspector']['config'][0]; + $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); + $count=0; if ($dh = opendir($topdir)) { while (($file = readdir($dh)) !== false) { - if(!preg_match('/^\./', $file) == 0) continue; - if (is_dir("$topdir/$file")) { + if(!preg_match('/^\./', $file) == 0) + continue; + if (is_dir("$topdir/$file")) $list .= convert_dir_list("$topdir/$file"); - } else { + else $list .= "$topdir/$file\n"; + $count ++; + if($count >= $limit){ + closedir($dh); + return $list; + } } - } closedir($dh); - } + } return $list; -} + } /* ajax response */ if ($_POST['mode'] == "render") { @@ -157,13 +168,18 @@ include("head.inc");
var section = 'none'; @@ -180,7 +196,7 @@ function xmlhttpPost() else if (window.ActiveXObject) self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); - self.xmlHttpReq.open('POST', 'services_imspector_logs.php', true); + self.xmlHttpReq.open('POST', 'imspector_logs.php', true); self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); self.xmlHttpReq.onreadystatechange = function() { @@ -189,7 +205,7 @@ function xmlhttpPost() } document.getElementById('im_status').style.display = "inline"; - self.xmlHttpReq.send("mode=render§ion=" + section); + self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); } function updatepage(str) diff --git a/config/imspector/services_imspector_logs2.php b/config/imspector/services_imspector_logs2.php new file mode 100644 index 00000000..30f63058 --- /dev/null +++ b/config/imspector/services_imspector_logs2.php @@ -0,0 +1,318 @@ +. + Copyright (C) 2012 0guzcan at pfsense forum. + Copyright (C) 2012 Marcello Coutinho + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ +require("guiconfig.inc"); + +/* variables */ +$log_dir = '/var/imspector'; +$imspector_config = $config['installedpackages']['imspector']['config'][0]; + +$border_color = '#c0c0c0'; +$default_bgcolor = '#eeeeee'; + +$list_protocol_color = '#000000'; +$list_local_color = '#ffffff'; +$list_remote_color = '#666666'; +$list_convo_color = '#888888'; + +$list_protocol_bgcolor = '#cccccc'; +$list_local_bgcolor = '#850000'; +$list_remote_bgcolor = '#eeeeee'; +$list_end_bgcolor = '#bbbbbb'; + +$convo_title_color = 'black'; +$convo_local_color = 'blue'; +$convo_remote_color = 'red'; + +$convo_title_bgcolor = '#cccccc'; +$convo_local_bgcolor = '#dddddd'; +$convo_remote_bgcolor = '#eeeeee'; + + +/* functions */ + +function convert_dir_list ($topdir) { + global $config; + if (!is_dir($topdir)) + return; + $imspector_config = $config['installedpackages']['imspector']['config'][0]; + $limit=(preg_match("/\d+/",$imspector_config['reportlimit'])?$imspector_config['reportlimit']:"50"); + $count=0; + if ($dh = opendir($topdir)) { + while (($file = readdir($dh)) !== false) { + if(!preg_match('/^\./', $file) == 0) + continue; + if (is_dir("$topdir/$file")) + $list .= convert_dir_list("$topdir/$file"); + else + $list .= "$topdir/$file\n"; + $count ++; + if($count >= $limit){ + closedir($dh); + return $list; + } + } + closedir($dh); + } + return $list; + } + +/* ajax response */ +if ($_POST['mode'] == "render") { + + /* user list */ + print(str_replace(array($log_dir,'/'),array('','|'),convert_dir_list($log_dir))); + print("--END--\n"); + + /* log files */ + if ($_POST['section'] != "none") { + $section = explode('|',$_POST['section']); + $protocol = $section[0]; + $localuser = $section[1]; + $remoteuser = $section[2]; + $conversation = $section[3]; + + /* conversation title */ + print(implode(', ', $section)."\n"); + print("--END--\n"); + + /* conversation content */ + $filename = $log_dir.'/'.implode('/', $section); + if($fd = fopen($filename, 'r')) { + $satir_oku = fgets($fd); + $ipsinibulduk = explode(':',$satir_oku); + + print("\n"); + while (!feof($fd)) { + $line = fgets($fd); + if(feof($fd)) continue; + $new_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + $old_format = '([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)'; + preg_match("/${new_format}|${old_format}/", $line, $matches); + $address = $matches[1]; + $addresbul = explode(':',$address); + $addressnew =$addresbul[0] ; + $timestamp = $matches[2]; + $direction = $matches[3]; + $type = $matches[4]; + $filtered = $matches[5]; + if(count($matches) == 8) { + $category = $matches[6]; + $data = $matches[7]; + } else { + $category = ""; + $data = $matches[6]; + } + + if($direction == '0') { + $bgcolor = $convo_remote_bgcolor; + $user = "$remoteuser"; + } + if($direction == '1') { + $bgcolor = $convo_local_bgcolor; + $user = "$localuser"; + } + + $time = strftime("%H:%M", $timestamp); + + + print(" + \n + \n + \n + \n"); + } + print("
user [$localuser] at local ip: [$ipsinibulduk[0]]
[$time]$user$category$data
\n"); + fclose($fd); + } + } + exit; +} +/* defaults to this page but if no settings are present, redirect to setup page */ +if(!$imspector_config["enable"] || !$imspector_config["iface_array"] || !$imspector_config["proto_array"]) + Header("Location: /pkg_edit.php?xml=imspector.xml&id=0"); + +$pgtitle = "Services: IMSpector Log Viewer"; +include("head.inc"); +/* put your custom HTML head content here */ +/* using some of the $pfSenseHead function calls */ +//$pfSenseHead->addMeta(""); +//echo $pfSenseHead->getHTML(); +?> + + + + +
+ + +
+ + +var section = 'none'; +var moveit = 1; +var the_timeout; + +function xmlhttpPost() +{ + var xmlHttpReq = false; + var self = this; + + if (window.XMLHttpRequest) + self.xmlHttpReq = new XMLHttpRequest(); + else if (window.ActiveXObject) + self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); + + self.xmlHttpReq.open('POST', 'imspector_logs.php', true); + self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + + self.xmlHttpReq.onreadystatechange = function() { + if (self.xmlHttpReq && self.xmlHttpReq.readyState == 4) + updatepage(self.xmlHttpReq.responseText); + } + + document.getElementById('im_status').style.display = "inline"; + self.xmlHttpReq.send("mode=render§ion=" + section + "&__csrf_magic={$csrf_token}"); +} + +function updatepage(str) +{ + /* update the list of conversations ( if we need to ) */ + var parts = str.split("--END--\\n"); + var lines = parts[0].split("\\n"); + + for (var line = 0 ; line < lines.length ; line ++) { + var a = lines[line].split("|"); + + if (!a[1] || !a[2] || !a[3]) continue; + + /* create titling information if needed */ + if (!document.getElementById(a[1])) { + document.getElementById('im_convos').innerHTML += + "
" + a[1] + "
" + + "
"; + } + if (!document.getElementById(a[1] + "_" + a[2])) { + var imageref = ""; + if (a[0]) imageref = "" + a[1] + ""; + document.getElementById(a[1]).innerHTML += + "
" + imageref + a[2] + "
" + + "
"; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { + document.getElementById(a[1] + "_" + a[2]).innerHTML += + "
" + a[3] + "
" + + "
"; + } + if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { + document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += + "
»" + a[4] + "
"; + } + } + + /* determine the title of this conversation */ + var details = parts[1].split(","); + var title = "
"+ details[3]+ " dated " + "[" + details[1]+ " ]"+ " with " + "[ " + details[2] + " ] " + details[0] + " records
"; + if (!details[1]) title = " "; + if (!parts[2]) parts[2] = " "; + + document.getElementById('im_status').style.display = "none"; + var bottom = parseInt(document.getElementById('im_content').scrollTop); + var bottom2 = parseInt(document.getElementById('im_content').style.height); + var absheight = parseInt( bottom + bottom2 ); + if (absheight == document.getElementById('im_content').scrollHeight) { + moveit = 1; + } else { + moveit = 0; + } + document.getElementById('im_content').innerHTML = parts[2]; + if (moveit == 1) { + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; + } + document.getElementById('im_content_title').innerHTML = title; + the_timeout = setTimeout( "xmlhttpPost();", 5000 ); +} + +function setsection(value) +{ + section = value; + clearTimeout(the_timeout); + xmlhttpPost(); + document.getElementById('im_content').scrollTop = 0; + document.getElementById('im_content').scrollTop = document.getElementById('im_content').scrollHeight; +} + +EOD; +print($zz); +?> + + + + + +
+
 
+ + + + + +
+
+
+
+
+
+
+ + + +
+ + + \ No newline at end of file diff --git a/pkg_config.10.xml b/pkg_config.10.xml index aa48e65e..285dd420 100644 --- a/pkg_config.10.xml +++ b/pkg_config.10.xml @@ -712,8 +712,7 @@ - imspector-dev - imspector + imspector IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. http://www.imspector.org/ Network Management @@ -722,13 +721,12 @@ 2.2 BETA http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector-dev/imspector.xml + http://www.pfsense.com/packages/config/imspector/imspector.xml imspector.xml imspector-20111108_1-##ARCH##.pbi imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW - imspector - net-im/imspector-devel + net-im/imspector diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 880449e4..e0c8b8ef 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -969,31 +969,12 @@ IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. http://www.imspector.org/ Network Management - billm@pfsense.org - 0.9-4 - 2.0 - BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml - imspector.xml - http://files.pfsense.org/packages/8/All/ - sqlite3-3.7.12.1.tbz - imspector-0.9.tbz - imspector-0.9-i386.pbi - /usr/ports/net-im/imspector - - - imspector-dev - imspector - IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. - http://www.imspector.org/ - Network Management marcellocoutinho@gmail.com 20111108 pkg v 0.3.1 2.0 BETA http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector-dev/imspector.xml + http://www.pfsense.com/packages/config/imspector/imspector.xml imspector.xml imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW http://e-sac.siteseguro.ws/packages/8/All/ diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index 2c0469ab..7b2af2a9 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -956,31 +956,12 @@ IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. http://www.imspector.org/ Network Management - billm@pfsense.org - 0.9-4 - 2.0 - BETA - http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector/imspector.xml - imspector.xml - http://files.pfsense.org/packages/amd64/8/All/ - sqlite3-3.7.12.1.tbz - imspector-0.9.tbz - imspector-0.9-amd64.pbi - /usr/ports/net-im/imspector - - - imspector-dev - imspector - IMSpector is an Instant Messenger transparent proxy with logging capabilities. Currently it supports MSN, AIM, ICQ, Yahoo and IRC to different degrees. - http://www.imspector.org/ - Network Management marcellocoutinho@gmail.com 20111108 pkg v 0.3.1 2.0 BETA http://doc.pfsense.org/index.php/IMSpector_package - http://www.pfsense.com/packages/config/imspector-dev/imspector.xml + http://www.pfsense.com/packages/config/imspector/imspector.xml imspector.xml imspector_SET_FORCE=PLUGINS;imspector_UNSET_FORCE=IPFW http://e-sac.siteseguro.ws/packages/amd64/8/All/ -- cgit v1.2.3