diff options
author | Marcello Coutinho <marcellocoutinho@gmail.com> | 2012-05-10 12:28:33 -0300 |
---|---|---|
committer | Marcello Coutinho <marcellocoutinho@gmail.com> | 2012-05-10 12:28:33 -0300 |
commit | 0293a8f6b843135a3b97917e09a1de5314bdd721 (patch) | |
tree | 20050f32745c91690eca4da75a9746c99f00c632 /config/imspector-dev | |
parent | d016784d0d0b652168500825ea1cade961c7eef6 (diff) | |
download | pfsense-packages-0293a8f6b843135a3b97917e09a1de5314bdd721.tar.gz pfsense-packages-0293a8f6b843135a3b97917e09a1de5314bdd721.tar.bz2 pfsense-packages-0293a8f6b843135a3b97917e09a1de5314bdd721.zip |
imspector-dev - include report template option and fetch limit for log files
Diffstat (limited to 'config/imspector-dev')
-rw-r--r-- | config/imspector-dev/imspector.inc | 16 | ||||
-rw-r--r-- | config/imspector-dev/imspector.xml | 30 | ||||
-rw-r--r-- | config/imspector-dev/imspector_acls.xml | 14 | ||||
-rw-r--r-- | config/imspector-dev/imspector_replacements.xml | 8 | ||||
-rw-r--r-- | config/imspector-dev/imspector_sync.xml | 2 | ||||
-rw-r--r-- | config/imspector-dev/services_imspector_logs.php | 8 | ||||
-rw-r--r-- | config/imspector-dev/services_imspector_logs2.php | 310 |
7 files changed, 372 insertions, 16 deletions
diff --git a/config/imspector-dev/imspector.inc b/config/imspector-dev/imspector.inc index 7ac603ba..a4af7771 100644 --- a/config/imspector-dev/imspector.inc +++ b/config/imspector-dev/imspector.inc @@ -149,6 +149,7 @@ #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')); @@ -250,9 +251,6 @@ if($ims_replacements['block_webcams']) $conf['block_webcams'] = 'on'; - - if($ims_replacements['block_unlisted']) - $conf['block_unlisted'] = 'on'; $acls=""; $conf['acl_filename'] = IMSPECTOR_ETC . '/acls.txt'; @@ -342,7 +340,17 @@ 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']; + + if (file_exists("/usr/local/www/{$template}")) + $log_file=file_get_contents("/usr/local/www/{$template}"); + file_put_contents("/usr/local/www/imspector_logs.php",$log_file,LOCK_EX); + /* generate rc file start and stop */ $stop = <<<EOD /bin/pkill -x imspector diff --git a/config/imspector-dev/imspector.xml b/config/imspector-dev/imspector.xml index 4d12a3d2..3bf53f04 100644 --- a/config/imspector-dev/imspector.xml +++ b/config/imspector-dev/imspector.xml @@ -75,7 +75,7 @@ </tab> <tab> <text>Log</text> - <url>/services_imspector_logs.php</url> + <url>/imspector_logs.php</url> </tab> <tab> <text>Sync</text> @@ -107,6 +107,11 @@ <chmod>0755</chmod> <item>http://www.pfsense.org/packages/config/imspector-dev/services_imspector_logs.php</item> </additional_files_needed> + <additional_files_needed> + <prefix>/usr/local/www/</prefix> + <chmod>0755</chmod> + <item>http://www.pfsense.org/packages/config/imspector-dev/services_imspector_logs2.php</item> + </additional_files_needed> <fields> <field> <name>General Settings</name> @@ -180,6 +185,25 @@ <type>checkbox</type> </field> <field> + <fielddescr>Report limit</fielddescr> + <fieldname>limit</fieldname> + <description>Max entries to fetch from log dir. Default is 1000</description> + <type>input</type> + <size>10</size> + </field> + <field> + <fielddescr>Report template</fielddescr> + <fieldname>template</fieldname> + <description>Template to use on reports</description> + <type>select</type> + <required/> + <options> + <option><name>Default Template</name><value>services_imspector_logs.php</value></option> + <option><name>0guzcan Template</name><value>services_imspector_logs2.php</value></option> + <option><name>Mysql template (working in progress...)</name><value>services_imspector_mysql.php</value></option> + </options> + </field> + <field> <fielddescr>Enable mySQL logging</fielddescr> <fieldname>log_mysql</fieldname> <description>Make sure to specify your MySQL credentials below.</description> @@ -189,21 +213,25 @@ <fielddescr>mySQL server</fielddescr> <fieldname>mysql_server</fieldname> <type>input</type> + <size>35</size> </field> <field> <fielddescr>mySQL database</fielddescr> <fieldname>mysql_database</fieldname> <type>input</type> + <size>35</size> </field> <field> <fielddescr>mySQL username</fielddescr> <fieldname>mysql_username</fieldname> <type>input</type> + <size>35</size> </field> <field> <fielddescr>mySQL password</fielddescr> <fieldname>mysql_password</fieldname> <type>password</type> + <size>35</size> </field> </fields> <custom_php_validation_command> diff --git a/config/imspector-dev/imspector_acls.xml b/config/imspector-dev/imspector_acls.xml index 02d57052..3176c75f 100644 --- a/config/imspector-dev/imspector_acls.xml +++ b/config/imspector-dev/imspector_acls.xml @@ -82,7 +82,7 @@ </tab> <tab> <text>Log</text> - <url>/services_imspector_logs.php</url> + <url>/imspector_logs.php</url> </tab> <tab> <text>Sync</text> @@ -102,6 +102,10 @@ <fielddescr>local ID</fielddescr> <fieldname>localid</fieldname> </columnitem> + <columnitem> + <fielddescr>Description</fielddescr> + <fieldname>description</fieldname> + </columnitem> </adddeleteeditpagefields> <fields> <field> @@ -128,6 +132,14 @@ <required/> </field> <field> + <fielddescr>Description</fielddescr> + <fieldname>description</fieldname> + <description><![CDATA[Specify a description for this rule.]]></description> + <type>input</type> + <size>50</size> + <required/> + </field> + <field> <fielddescr>Local ID</fielddescr> <fieldname>localid</fieldname> <description><![CDATA[Specify local id for this rule<br> diff --git a/config/imspector-dev/imspector_replacements.xml b/config/imspector-dev/imspector_replacements.xml index e0ff4a06..7f53bbd4 100644 --- a/config/imspector-dev/imspector_replacements.xml +++ b/config/imspector-dev/imspector_replacements.xml @@ -74,7 +74,7 @@ </tab> <tab> <text>Log</text> - <url>/services_imspector_logs.php</url> + <url>/imspector_logs.php</url> </tab> <tab> <text>Sync</text> @@ -156,12 +156,6 @@ <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>Enable bad word filtering</fielddescr> <fieldname>filter_badwords</fieldname> <description>Replace characters of matched bad word with *.</description> diff --git a/config/imspector-dev/imspector_sync.xml b/config/imspector-dev/imspector_sync.xml index 8959af02..3ff88d41 100644 --- a/config/imspector-dev/imspector_sync.xml +++ b/config/imspector-dev/imspector_sync.xml @@ -60,7 +60,7 @@ </tab> <tab> <text>Log</text> - <url>/services_imspector_logs.php</url> + <url>/imspector_logs.php</url> </tab> <tab> <text>Sync</text> diff --git a/config/imspector-dev/services_imspector_logs.php b/config/imspector-dev/services_imspector_logs.php index 09e732b8..aa6a9a9b 100644 --- a/config/imspector-dev/services_imspector_logs.php +++ b/config/imspector-dev/services_imspector_logs.php @@ -6,6 +6,7 @@ JavaScript Code is GPL Licensed from SmoothWall Express. Copyright (C) 2007 Ryan Wagoner <rswagoner@gmail.com>. + Copyright (C) 2012 Marcello Coutinho All rights reserved. Redistribution and use in source and binary forms, with or without @@ -62,13 +63,16 @@ $convo_remote_bgcolor = '#eeeeee'; function convert_dir_list ($topdir) { if (!is_dir($topdir)) return; if ($dh = opendir($topdir)) { - while (($file = readdir($dh)) !== false) { + $limit=(is_numericint($imspector_config['limit'])?$imspector_config['limit']:"1000"); + $count=0; + while (($file = readdir($dh)) !== false && $count < $limit) { if(!preg_match('/^\./', $file) == 0) continue; if (is_dir("$topdir/$file")) { $list .= convert_dir_list("$topdir/$file"); } else { $list .= "$topdir/$file\n"; } + $count ++; } closedir($dh); } @@ -160,7 +164,7 @@ include("head.inc"); $tab_array[] = array(gettext("Settings "), false, "/pkg_edit.php?xml=imspector.xml&id=0"); $tab_array[] = array(gettext("Replacements "), false, "/pkg_edit.php?xml=imspector_replacements.xml&id=0"); $tab_array[] = array(gettext("Access Lists "), false, "/pkg.php?xml=imspector_acls.xml"); - $tab_array[] = array(gettext("Log "), true, "/services_imspector_logs.php"); + $tab_array[] = array(gettext("Log "), true, "/imspector_logs.php"); $tab_array[] = array(gettext("Sync "), false, "/pkg_edit.php?xml=imspector_sync.xml&id=0"); display_top_tabs($tab_array); diff --git a/config/imspector-dev/services_imspector_logs2.php b/config/imspector-dev/services_imspector_logs2.php new file mode 100644 index 00000000..a90ae6ca --- /dev/null +++ b/config/imspector-dev/services_imspector_logs2.php @@ -0,0 +1,310 @@ +<?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>. + 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) { + if (!is_dir($topdir)) return; + if ($dh = opendir($topdir)) { + $limit=(is_numericint($imspector_config['limit'])?$imspector_config['limit']:"1000"); + $count=0; + while (($file = readdir($dh)) !== false && $count < $limit) { + if(!preg_match('/^\./', $file) == 0) continue; + if (is_dir("$topdir/$file")) { + $list .= convert_dir_list("$topdir/$file"); + } else { + $list .= "$topdir/$file\n"; + } + $count ++; + } + 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("<table width='100%' border='0' cellpadding='2' cellspacing='1'><tr><td style='color:#fff;' colspan='4' align='center' width='100%' bgcolor='#850000'>kullanilan [<span style='font-weight:bold;'>$localuser</span>] adresine ait local ip: [<span style='font-weight:bold;'>$ipsinibulduk[0]</span>]</td></tr>\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 = "<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", $timestamp); + + + print("<tr bgcolor='$bgcolor'> + <td style='width: 5%; vertical-align: top;border-bottom:1px solid #ccc;'>[$time]</td>\n + <td style='border-bottom:1px solid #ccc; width: 13%; vertical-align: top;'>$user</td>\n + <td style='border-bottom:1px solid #ccc; width: 1%; vertical-align: top;'>$category</td>\n + <td style='border-bottom:1px solid #ccc; width: 82%; 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"); ?> +<?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("Settings "), false, "/pkg_edit.php?xml=imspector.xml&id=0"); + $tab_array[] = array(gettext("Replacements "), false, "/pkg_edit.php?xml=imspector_replacements.xml&id=0"); + $tab_array[] = array(gettext("Access Lists "), false, "/pkg.php?xml=imspector_acls.xml"); + $tab_array[] = array(gettext("Log "), true, "/imspector_logs.php"); + $tab_array[] = array(gettext("Sync "), false, "/pkg_edit.php?xml=imspector_sync.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 = "<table border='1' width='100%'><tr><td style='color:#666;' align='center' bgcolor='#eee' valign='top'>"+ details[3]+ " tarihli " + "[<span style='font-weight:bold;'>" + details[1]+ "</span> ]"+ " ile " + "[ <span style='font-weight:bold;'>" + details[2] + " </span> ] " + details[0] + " görüsme kaydi</td></tr></table>"; + 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;'>Yenileniyor...</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>
\ No newline at end of file |