diff options
author | Bill Marquette <bill.marquette@gmail.com> | 2009-02-06 19:18:00 -0600 |
---|---|---|
committer | Bill Marquette <bill.marquette@gmail.com> | 2009-02-06 19:18:00 -0600 |
commit | 55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1 (patch) | |
tree | ba4783bab1dd65f1ceef2dfac9fdbd515531d18b /packages/imspector | |
parent | 67780cc9d469288742aea5bc378c29a54edd5ec5 (diff) | |
download | pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.tar.gz pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.tar.bz2 pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.zip |
mv packages to config dir to match web layout
Diffstat (limited to 'packages/imspector')
-rw-r--r-- | packages/imspector/imspector.inc | 268 | ||||
-rw-r--r-- | packages/imspector/imspector.xml | 225 | ||||
-rw-r--r-- | packages/imspector/services_imspector_logs.php | 288 |
3 files changed, 0 insertions, 781 deletions
diff --git a/packages/imspector/imspector.inc b/packages/imspector/imspector.inc deleted file mode 100644 index 09974363..00000000 --- a/packages/imspector/imspector.inc +++ /dev/null @@ -1,268 +0,0 @@ -<?php -/* - imspector.inc - part of pfSense (http://www.pfsense.com/) - - Copyright (C) 2007 Ryan Wagoner <rswagoner@gmail.com>. - 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"); - - /* 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_notice ($msg) { syslog(LOG_NOTICE, "imspector: {$msg}"); } - function imspector_warn ($msg) { syslog(LOG_WARNING, "imspector: {$msg}"); } - - 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) { - 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 '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 == 'wan') - $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'); - - //exec('pkg_delete imspector-0.4'); - } - - function sync_package_imspector() { - global $config; - global $input_errors; - - config_lock(); - - $imspector_config = $config['installedpackages']['imspector']['config'][0]; - - /* remove existing rules */ - exec('/sbin/pfctl -a imspector -Fr'); - exec('/sbin/pfctl -a imspector -Fn'); - - $ifaces_active = ''; - - if($imspector_config['enable'] && $imspector_config['proto_array']) - $proto_array = explode(',', $imspector_config['proto_array']); - - if($imspector_config['enable'] && $imspector_config['iface_array']) - $iface_array = explode(',', $imspector_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}"); - } - } - - if($pf_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($imspector_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($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($imspector_config['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"]))); - } - - $conftext = ''; - foreach($conf as $var => $key) - $conftext .= "{$var}={$key}\n"; - write_imspector_config(IMSPECTOR_CONFIG, $conftext); - - /* generate rc file start and stop */ - $stop = <<<EOD -if [ `pgrep imspector | wc -l` != 0 ]; then - /usr/bin/killall imspector - while [ `pgrep imspector | wc -l` != 0 ]; do - sleep 1 - done - fi -EOD; - $start = $stop."\n\tldconfig -m /usr/local/lib/mysql\n"; - $start .= "\t/usr/local/sbin/imspector -c \"".IMSPECTOR_CONFIG."\""; - - write_rcfile(array( - 'file' => 'imspector.sh', - 'start' => $start, - 'stop' => $stop - ) - ); - - conf_mount_ro(); - - /* if imspector not running start it */ - if(!imspector_running()) { - imspector_notice("Starting service on interface: {$ifaces_active}"); - imspector_action('start'); - } - /* or restart imspector if settings were changed */ - elseif($_POST['iface_array']) { - imspector_notice("Restarting service on interface: {$ifaces_active}"); - imspector_action('restart'); - } - } - } - - 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(!$imspector_config['enable']) - imspector_notice('Stopping service: imspector disabled'); - else - imspector_notice('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(); - } - } - - config_unlock(); - } -?> diff --git a/packages/imspector/imspector.xml b/packages/imspector/imspector.xml deleted file mode 100644 index 076dca13..00000000 --- a/packages/imspector/imspector.xml +++ /dev/null @@ -1,225 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE packagegui SYSTEM "../schema/packages.dtd"> -<?xml-stylesheet type="text/xsl" href="../xsl/package.xsl"?> -<packagegui> - <copyright> - <![CDATA[ -/* $Id$ */ -/* ========================================================================== */ -/* - authng.xml - part of pfSense (http://www.pfSense.com) - Copyright (C) 2007 to whom it may belong - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>. - 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. - */ -/* ========================================================================== */ - ]]> - </copyright> - <description>Describe your package here</description> - <requirements>Describe your package requirements here</requirements> - <faq>Currently there are no FAQ items provided.</faq> - <name>imspector</name> - <version>0.4</version> - <title>Services: IMSpector</title> - <savetext>Change</savetext> - <aftersaveredirect>/services_imspector_logs.php</aftersaveredirect> - <include_file>/usr/local/pkg/imspector.inc</include_file> - <menu> - <name>IMSpector</name> - <tooltiptext>Set IMSpector settings such as protocols to listen on.</tooltiptext> - <section>Services</section> - <url>/services_imspector_logs.php</url> - </menu> - <service> - <name>imspector</name> - <rcfile>imspector.sh</rcfile> - <executable>imspector</executable> - </service> - <tabs> - <tab> - <text>IMSpector Log Viewer</text> - <url>/services_imspector_logs.php</url> - </tab> - <tab> - <text>IMSpector Settings</text> - <url>/pkg_edit.php?xml=imspector.xml&id=0</url> - <active/> - </tab> - </tabs> - <additional_files_needed> - <prefix>/usr/local/pkg/</prefix> - <chmod>0755</chmod> - <item>http://www.pfsense.org/packages/config/imspector/imspector.inc</item> - </additional_files_needed> - <additional_files_needed> - <prefix>/usr/local/www/</prefix> - <chmod>0755</chmod> - <item>http://www.pfsense.org/packages/config/imspector/services_imspector_logs.php</item> - </additional_files_needed> - <fields> - <field> - <fielddescr>Enable IMSpector</fielddescr> - <fieldname>enable</fieldname> - <type>checkbox</type> - </field> - <field> - <fielddescr>Interfaces (generally LAN)</fielddescr> - <fieldname>iface_array</fieldname> - <description>You can use the CTRL or COMMAND key to select multiple interfaces.</description> - <type>interfaces_selection</type> - <size>3</size> - <required/> - <value>lan</value> - <multiple>true</multiple> - </field> - <field> - <fielddescr>Listen on protocols</fielddescr> - <fieldname>proto_array</fieldname> - <description>You can use the CTRL or COMMAND key to select multiple protocols.</description> - <type>select</type> - <size>4</size> - <required/> - <multiple>true</multiple> - <options> - <option> - <name>MSN</name> - <value>msn</value> - </option> - <option> - <name>ICQ/AIM</name> - <value>icq</value> - </option> - <option> - <name>Yahoo</name> - <value>yahoo</value> - </option> - <option> - <name>IRC</name> - <value>irc</value> - </option> - </options> - </field> - <field> - <fielddescr>Enable file logging</fielddescr> - <fieldname>log_file</fieldname> - <description>Log files stored in /var/imspector.</description> - <type>checkbox</type> - </field> - <field> - <fielddescr>Enable mySQL logging</fielddescr> - <fieldname>log_mysql</fieldname> - <description>Make sure to specify your MySQL credentials below.</description> - <type>checkbox</type> - </field> - <field> - <fielddescr>mySQL server</fielddescr> - <fieldname>mysql_server</fieldname> - <type>input</type> - </field> - <field> - <fielddescr>mySQL database</fielddescr> - <fieldname>mysql_database</fieldname> - <type>input</type> - </field> - <field> - <fielddescr>mySQL username</fielddescr> - <fieldname>mysql_username</fieldname> - <type>input</type> - </field> - <field> - <fielddescr>mySQL password</fielddescr> - <fieldname>mysql_password</fieldname> - <type>password</type> - </field> - <field> - <fielddescr>Enable bad word filtering</fielddescr> - <fieldname>filter_badwords</fieldname> - <description>Replace characters of matched bad word with *.</description> - <type>checkbox</type> - </field> - <field> - <fielddescr>Bad words list</fielddescr> - <fieldname>badwords_list</fieldname> - <description> - 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. - </description> - <type>textarea</type> - <encoding>base64</encoding> - <rows>5</rows> - <cols>40</cols> - </field> - <field> - <fielddescr>Block file transfers</fielddescr> - <fieldname>block_files</fieldname> - <description>Block file transfers on supported protocols.</description> - <type>checkbox</type> - </field> - <field> - <fielddescr>Block non ACL defined</fielddescr> - <fieldname>block_unlisted</fieldname> - <description>Overide the default of allowing user's not defined the whitelist or blacklist ACLs.</description> - <type>checkbox</type> - </field> - <field> - <fielddescr>ACL whitelist</fielddescr> - <fieldname>acl_whitelist</fieldname> - <description> - Example (allow specifc access): localuser: remoteuser1 remoteuser2<br /> - Example (allow full access): localuser: - </description> - <type>textarea</type> - <encoding>base64</encoding> - <rows>5</rows> - <cols>40</cols> - </field> - <field> - <fielddescr>ACL blacklist</fielddescr> - <fieldname>acl_blacklist</fieldname> - <description> - Example (block specifc access): localuser: remoteuser1 remoteuser2<br /> - Example (block all access): localuser: - </description> - <type>textarea</type> - <encoding>base64</encoding> - <rows>5</rows> - <cols>40</cols> - </field> - </fields> - <custom_php_validation_command> - validate_form_imspector($_POST, &$input_errors); - </custom_php_validation_command> - <custom_php_resync_config_command> - sync_package_imspector(); - </custom_php_resync_config_command> - <custom_php_deinstall_command> - deinstall_package_imspector(); - </custom_php_deinstall_command> -</packagegui> diff --git a/packages/imspector/services_imspector_logs.php b/packages/imspector/services_imspector_logs.php deleted file mode 100644 index 616d3dfc..00000000 --- a/packages/imspector/services_imspector_logs.php +++ /dev/null @@ -1,288 +0,0 @@ -<?php -/* - services_imspector_logs.php - part of pfSense (http://www.pfsense.com/) - - JavaScript Code is GPL Licensed from SmoothWall Express. - - Copyright (C) 2007 Ryan Wagoner <rswagoner@gmail.com>. - 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) { - if (!is_dir($topdir)) return; - 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"; - } - } - 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("<table width='100%' border='0' cellpadding='2' cellspacing='0'>\n"); - while (!feof($fd)) { - $line = fgets($fd); - if(feof($fd)) continue; - - preg_match('/([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),(.*)/', $line, $matches); - $address = $matches[1]; - $timestamp = $matches[2]; - $direction = $matches[3]; - $type = $matches[4]; - $filtered = $matches[5]; - $data = $matches[6]; - - if($direction == '0') { - $bgcolor = $convo_remote_bgcolor; - $user = "<<span style='color: $convo_remote_color;'>$remoteuser</span>>"; - } - if($direction == '1') { - $bgcolor = $convo_local_bgcolor; - $user = "<<span style='color: $convo_local_color;'>$localuser</span>>"; - } - - $time = strftime("%H:%M:%S", $timestamp); - - print("<tr bgcolor='$bgcolor'><td style='width: 30px; vertical-align: top;'>[$time]</td>\n - <td style=' width: 60px; vertical-align: top;'>$user</td>\n - <td style='vertical-align: top;'>$data</td></tr>\n"); - } - print("</table>\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("<meta http-equiv=\"refresh\" content=\"120;url={$_SERVER['SCRIPT_NAME']}\" />"); -//echo $pfSenseHead->getHTML(); -?> -<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> -<?php include("fbegin.inc"); ?> -<p class="pgtitle"><?=$pgtitle?></font></p> -<?php if ($savemsg) print_info_box($savemsg); ?> -<div id="mainlevel"> -<table width="100%" border="0" cellpadding="0" cellspacing="0"> -<?php - $tab_array = array(); - $tab_array[] = array(gettext("IMSpector Log Viewer "), true, "/services_imspector_logs.php"); - $tab_array[] = array(gettext("IMSpector Settings "), false, "/pkg_edit.php?xml=imspector.xml&id=0"); - display_top_tabs($tab_array); -?> -</table> - -<?php -$zz = <<<EOD -<script type="text/javascript"> -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', 'services_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 += - "<div id='" + a[1] + "_t' style='width: 100%; background-color: $list_protocol_bgcolor; color: $list_protocol_color;'>" + a[1] + "</div>" + - "<div id='" + a[1] + "' style='width: 100%; background-color: $list_local_bgcolor;'></div>"; - } - if (!document.getElementById(a[1] + "_" + a[2])) { - var imageref = ""; - if (a[0]) imageref = "<img src='" + a[0] + "' alt='" + a[1] + "'/>"; - document.getElementById(a[1]).innerHTML += - "<div id='" + a[1] + "_" + a[2] + "_t' style='width: 100%; color: $list_local_color; padding-left: 5px;'>" + imageref + a[2] + "</div>" + - "<div id='" + a[1] + "_" + a[2] + "' style='width: 100%; background-color: $list_remote_bgcolor; border-bottom: solid 1px $list_end_bgcolor;'></div>"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3])) { - document.getElementById(a[1] + "_" + a[2]).innerHTML += - "<div id='" + a[1] + "_" + a[2] + "_" + a[3] + "_t' style='width: 100%; color: $list_remote_color; padding-left: 10px;'>" + a[3] + "</div>" + - "<div id='" + a[1] + "_" + a[2] + "_" + a[3] + "' style='width: 100%;'></div>"; - } - if (!document.getElementById(a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4])) { - document.getElementById(a[1] + "_" + a[2] + "_" + a[3]).innerHTML += - "<div id='" + a[1] + "_" + a[2] + "_" + a[3] + "_" + a[4] + - "' style='width: 100%; color: $list_convo_color; cursor: pointer; padding-left: 15px;' onClick=" + - '"' + "setsection('" + a[1] + "|" + a[2] + "|" + a[3] + "|" + a[4] + "');" + '"' + "' + >»" + a[4] + "</div>"; - } - } - - /* determine the title of this conversation */ - var details = parts[1].split(","); - var title = details[0] + " conversation between <span style='color: $convo_local_color;'>" + details[ 1 ] + - "</span> and <span style='color: $convo_remote_color;'>" + details[2] + "</span>"; - 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; -} -</script> -EOD; -print($zz); -?> - -<table width="100%" border="0" cellpadding="0" cellspacing="0"> - <tr> - <td class="tabcont"> - <div style='width: 100%; text-align: right;'><span id='im_status' style='display: none;'>Updating</span> </div> - <table width="100%"> - <tr> - <td width="15%" bgcolor="<?=$default_bgcolor?>" style="overflow: auto; border: solid 1px <?=$border_color?>;"> - <div id="im_convos" style="height: 400px; overflow: auto; overflow-x: hidden;"></div> - </td> - <td width="75%" bgcolor="<?=$default_bgcolor?>" style="border: solid 1px <?=$border_color?>;"> - <div id="im_content_title" style="height: 20px; overflow: auto; vertical-align: top; - color: <?=$convo_title_color?>; background-color: <?=$convo_title_bgcolor?>;"></div> - <div id="im_content" style="height: 380px; overflow: auto; vertical-align: bottom; overflow-x: hidden;"></div> - </td> - </tr> - </table> - </td> - </tr> -</table> - -<script type="text/javascript">xmlhttpPost();</script> - -</div> -<?php include("fend.inc"); ?> -</body> -</html> |