From 8633628b5abe10a03528ee8d0f3da12451d5f9e4 Mon Sep 17 00:00:00 2001 From: dvserg Date: Thu, 17 Feb 2011 06:15:45 +0300 Subject: squidGuard log changes --- config/squidGuard/squidguard.inc | 136 ++++++++----- config/squidGuard/squidguard.php | 109 ----------- config/squidGuard/squidguard.xml | 2 +- config/squidGuard/squidguard_blacklist.php | 18 +- config/squidGuard/squidguard_configurator.inc | 7 +- config/squidGuard/squidguard_log.php | 271 +++++++++++++++++++++----- config/squidGuard/squidguard_log.xml | 136 ------------- 7 files changed, 316 insertions(+), 363 deletions(-) delete mode 100644 config/squidGuard/squidguard.php delete mode 100644 config/squidGuard/squidguard_log.xml (limited to 'config') diff --git a/config/squidGuard/squidguard.inc b/config/squidGuard/squidguard.inc index fe903b39..c1680adb 100644 --- a/config/squidGuard/squidguard.inc +++ b/config/squidGuard/squidguard.inc @@ -1257,6 +1257,88 @@ function squidguard_adt_safesrch_add($rewrite_item) return $rewrite_item; } +# log dump +function squidguard_logdump($filename, $lnoffset, $lncount, $reverse) +{ + define('LOGSHOW_BUFSIZE', '65536'); + $cnt = ''; + + if (file_exists($filename)) { + $fh = fopen($filename, "r"); + if ($fh) { + $fsize = filesize($filename); + + # take LOGSHOW_BUFSIZE bytes from end + if ($fsize > LOGSHOW_BUFSIZE) + fseek($fh, -LOGSHOW_BUFSIZE, SEEK_END); + $cnt = fread($fh, LOGSHOW_BUFSIZE); + + fclose($fh); + } + } + + $cnt = explode( "\n", $cnt ); + + # delete broken first element + array_shift($cnt); + + # offset must be >= 0 and can't be > count($cnt) + $lnoffset = $lnoffset >= 0 ? $lnoffset : 0; + $lnoffset = ($lnoffset + $lncount) < count($cnt) ? $lnoffset : 0; + + $pos = ($lncount + $lnoffset); + + # take elements from end of array + $cnt = array_slice($cnt, -$pos, $lncount); + + # reverse array order + if ($reverse) $cnt = array_reverse( $cnt ); + + return $cnt; +} + +# dump SG log +function squidguard_filterdump($lnoffset, $lncount, $reverse) +{ + $res = array(); + $cont = squidguard_logdump(SQUIDGUARD_LOGDIR . '/squidGuard.log', &$lnoffset, $lncount, $reverse); + + foreach($cont as $cn) { + $cn = explode(" ", trim($cn), 4); + $res[] = array( "{$cn[0]} {$cn[1]}", $cn[3] ); + } + + return $res; +} + +# dump SG Gui log +function squidguard_guidump($lnoffset, $lncount, $reverse) +{ + $res = array(); + $cont = squidguard_logdump(SQUIDGUARD_LOGDIR . SQUIDGUARD_CONFLOGFILE, &$lnoffset, $lncount, $reverse); + + foreach($cont as $cn) { + $cn = explode(" ", trim($cn), 4); + $res[] = array( "{$cn[0]} {$cn[1]}", $cn[3] ); + } + + return $res; +} + +# dump SG blocked +function squidguard_blockdump($lnoffset, $lncount, $reverse) +{ + $res = array(); + $cont = squidguard_logdump(SQUIDGUARD_LOGDIR . '/' . SQUIDGUARD_LOGFILE, &$lnoffset, $lncount, $reverse); + + foreach($cont as $cn) { + $cn = explode(" ", trim($cn), 9); + $res[] = array( "{$cn[0]} {$cn[1]}", $cn[5], $cn[4], "{$cn[3]} {$cn[6]} {$cn[7]} {$cn[8]}"); + } + + return $res; +} + # get squid config list function squidguard_squid_conflist( ) { @@ -1283,60 +1365,6 @@ function squidguard_conflist( ) return $res; } -# get squidguard log report - -define('LOGSHOW_BUFSIZE', '16384'); - -function squidguard_logrep( $filename, $lncount, $reverse ) -{ - $res = ""; - - $lncount = $lncount ? $lncount : 50; - $reverse = $reverse ? $reverse : false; - - if (file_exists($filename)) { - $fh = fopen($filename, "r"); - if ($fh) { - $fsize = filesize($filename); - # take LOGSHOW_BUFSIZE bytes from end - if ($fsize > LOGSHOW_BUFSIZE) - fseek($fh, -LOGSHOW_BUFSIZE, SEEK_END); - $cont = fread($fh, LOGSHOW_BUFSIZE); - fclose($fh); - } - - $cont = explode( "\n", $cont ); - $cont = array_slice($cont, -$lncount); - - if ($reverse) $cont = array_reverse( $cont ); - - $res .= "\n"; - $res .= "\n"; - foreach($cont as $cn) { - $cn = trim($cn); - if ($cn) { - $cn = explode(" ", $cn, 4); - - # split strings - $p = 0; - $pstep = 15; - $str = $cn[3]; - $cn[3] = ""; - for ( $p = 0; $p < strlen($str); $p += $pstep ) { - $s = substr( $str, $p, $pstep ); - if ( !$s ) break; - $cn[3] .= $s . ""; - } - - $res .= ""; - } - } - $res .= "
Last {$lncount} entries
{$cn[0]} {$cn[1]}{$cn[3]}
"; - } - - return $res; -} - # get blacklist list function squidguard_blacklist_list() { diff --git a/config/squidGuard/squidguard.php b/config/squidGuard/squidguard.php deleted file mode 100644 index b6c36a87..00000000 --- a/config/squidGuard/squidguard.php +++ /dev/null @@ -1,109 +0,0 @@ - - - - - -
- - - - - - - - -
- -
-
- - - - - - - -
- - - - - - - - -
ServiceStatus   Version
- -
-
-
-
-
- - - - - - \ No newline at end of file diff --git a/config/squidGuard/squidguard.xml b/config/squidGuard/squidguard.xml index 5ca3a65f..61bdf146 100644 --- a/config/squidGuard/squidguard.xml +++ b/config/squidGuard/squidguard.xml @@ -6,7 +6,7 @@ Describe your package requirements here Currently there are no FAQ items provided. squidguardgeneral - 1.3_1 pkg v.1.8 + 1.3_1 pkg v.1.9 Proxy filter SquidGuard: General settings /usr/local/pkg/squidguard.inc diff --git a/config/squidGuard/squidguard_blacklist.php b/config/squidGuard/squidguard_blacklist.php index 3bf4d17b..54699928 100644 --- a/config/squidGuard/squidguard_blacklist.php +++ b/config/squidGuard/squidguard_blacklist.php @@ -192,7 +192,7 @@ function getactivity(action) { var myAjax = new Ajax.Request( url, { - method: 'post', + method: 'get', parameters: pars, onComplete: activitycallback }); @@ -211,23 +211,7 @@ function activitycallback(transport) { //alert(transport.responseText); } -//document.observe('dom:loaded', function() { - // refresh -// setTimeout('getactivity()', 150); -//}); - -//document.observe('dom:loaded', function() { - // refresh -// setTimeout('getactivity()', 150); -//}); - window.setTimeout('getactivity()', 150); -//if(!ajaxStarted) { -// try { -// window.setTimeout('getactivity()', 150); -// var ajaxStarted = true; -// }catch(e){} -//} diff --git a/config/squidGuard/squidguard_configurator.inc b/config/squidGuard/squidguard_configurator.inc index 5315d508..7db0f8ff 100644 --- a/config/squidGuard/squidguard_configurator.inc +++ b/config/squidGuard/squidguard_configurator.inc @@ -1849,9 +1849,12 @@ function acl_remove_blacklist_items($items) # ----------------------------------------------------------------------------- # sg_script_logrotate +# truncate SG logfile to $lines # ----------------------------------------------------------------------------- function sg_script_logrotate() { + $lines = 1000; # SG logfile truncate lines count + global $squidguard_config; $sglogname = $squidguard_config[F_LOGDIR] . "/" . SQUIDGUARD_LOGFILE; $res = @@ -1859,9 +1862,9 @@ function sg_script_logrotate() #!/bin/sh # # This file generated automaticly with SquidGuard configurator +tail -{$lines} {$sglogname} > {$sglogname}.0 +tail -{$lines} {$sglogname}.0 > {$sglogname} rm -f {$sglogname}.0 -cp -f {$sglogname} {$sglogname}.0 -echo '' > {$sglogname} EOD; return $res; } diff --git a/config/squidGuard/squidguard_log.php b/config/squidGuard/squidguard_log.php index 9532c44d..e5f19407 100644 --- a/config/squidGuard/squidguard_log.php +++ b/config/squidGuard/squidguard_log.php @@ -30,31 +30,237 @@ $pgtitle = "Proxy filter SquidGuard: Log page"; -require_once('globals.inc'); -require_once('config.inc'); -require_once("guiconfig.inc"); -require_once('util.inc'); -require_once('pfsense-utils.inc'); -require_once('pkg-utils.inc'); -require_once('service-utils.inc'); - -include("head.inc"); - +require_once('guiconfig.inc'); +require_once('notices.inc'); if (file_exists("/usr/local/pkg/squidguard.inc")) { require_once("/usr/local/pkg/squidguard.inc"); } -$mode = $_GET["mode"]; +# ------------------------------------------------------------------------------ +# defines +# ------------------------------------------------------------------------------ $selfpath = "/squidGuard/squidguard_log.php"; -if (!in_array( $mode, array("blocked", "fgui", "flog", "pconf", "fconf"))) $mode = "blocked"; +# ------------------------------------------------------------------------------ +# Requests +# ------------------------------------------------------------------------------ +if ($_REQUEST['getactivity']) +{ + header("Content-type: text/javascript"); + echo squidguard_log_AJAX_response( $_REQUEST ); + exit; +} + +# ------------------------------------------------------------------------------ +# Functions +# ------------------------------------------------------------------------------ + +function squidguard_log_AJAX_response( $request ) +{ + $res = ''; + $offset = $request['offset'] ? $request['offset'] : 0; + $reverse = $request['reverse'] == 'yes'? true : false; + $pcaption = ' '; + + # Actions + switch($request['rep']) { + case 'filterconf': + if (function_exists("squidguard_conflist")) + $cont = squidguard_conflist( ); + else $cont = "Function 'squidguard_conflist' not found."; + $res = squidguard_prep_textareacont($cont); + break; + case 'proxyconf': + if (function_exists("squidguard_squid_conflist")) + $cont = squidguard_squid_conflist( ); + else $cont = "Function 'squidguard_squid_conflist' not found."; + $res = squidguard_prep_textareacont($cont); + break; + case 'guilog': + $res = squidguard_logrep(squidguard_guidump( &$offset, 50, true)); + break; + case 'filterlog': + $res = squidguard_logrep(squidguard_filterdump( &$offset, 50, true)); + break; + case "blocked": + default: + $res = squidguard_logrep(squidguard_blockdump( &$offset, 50, true)); + break; + } + + $res .= "el('offset').value = {$offset};"; + $res .= "el('showoffset').innerHTML = {$offset};"; + return $res; +} + +function squidguard_logrep( $dump ) +{ + $res = ''; + + if (!empty($dump)) { + if (is_array($dump)) { + $acount = count($dump[0]) ? count($dump[0]) : 1; + $res = ""; + $res .= ""; + + foreach($dump as $dm) { + if (!$dm[0] || !$dm[1]) continue; + # datetime + $dm[0] = date("d.m.Y H:i:s", strtotime($dm[0])); + $res .= ""; + + # col 1 + $dm[1] = htmlentities($dm[1]); + $dm[1] = squidguard_html_autowrap($dm[1]); + $res .= ""; + + # for blocked rep + if (count($dm) > 2) { + $dm[2] = htmlentities($dm[2]); + $dm[2] = squidguard_html_autowrap($dm[2]); + $res .= ""; + $res .= ""; + } + $res .= ""; + } + $res .= "
Show top 50 entries. List from the line: " . + "<<" . + " 0 " . + ">> " . + "
{$dm[0]}{$dm[1]}{$dm[2]}{$dm[3]}
"; + } + else $res = "{$dump}"; + } else { + $res = "No data."; + } + + $res = "el(\"reportarea\").innerHTML = \"{$res}\";"; + return $res; +} + +function squidguard_prepfor_JS($cont) +{ + # replace for JS + $cont = str_replace("\n", "\\n", $cont); + $cont = str_replace("\r", "\\r", $cont); + $cont = str_replace("\t", "\\t", $cont); + $cont = str_replace("\"", "\'", $cont); + return $cont; +} + +function squidguard_prep_textareacont($cont) +{ + $cont = squidguard_prepfor_JS($cont); + return + "el('reportarea').innerHTML = \"
\";" . + "el('pconf').innerHTML = '$cont';"; +} + +function squidguard_html_autowrap($cont) +{ + # split strings + $p = 0; + $pstep = 25; + $str = $cont; + $cont = ''; + for ( $p = 0; $p < strlen($str); $p += $pstep ) { + $s = substr( $str, $p, $pstep ); + if ( !$s ) break; + $cont .= $s . ""; + } + + return $cont; +} + +# ------------------------------------------------------------------------------ +# HTML Page +# ------------------------------------------------------------------------------ +include("head.inc"); +echo "\t\n"; ?> + + +
+ + @@ -84,47 +290,24 @@ if (!in_array( $mode, array("blocked", "fgui", "flog", "pconf", "fconf"))) $mode # Subtabs $mode = $mode ? $mode : "blocked"; $tab_array = array(); - $tab_array[] = array(gettext("Blocked"), ($mode == "blocked"), "{$selfpath}?mode=blocked"); - $tab_array[] = array(gettext("Filter GUI log"), ($mode == "fgui"), "{$selfpath}?mode=fgui"); - $tab_array[] = array(gettext("Filter log"), ($mode == "flog"), "{$selfpath}?mode=flog"); - $tab_array[] = array(gettext("Proxy config"), ($mode == "pconf"), "{$selfpath}?mode=pconf"); - $tab_array[] = array(gettext("Filter config"), ($mode == "fconf"), "{$selfpath}?mode=fconf"); + $tab_array[] = array(gettext("Blocked"), ($mode == "blocked"), "blocklog"); + $tab_array[] = array(gettext("Filter GUI log"), ($mode == "fgui"), "guilog"); + $tab_array[] = array(gettext("Filter log"), ($mode == "flog"), "filterlog"); + $tab_array[] = array(gettext("Proxy config"), ($mode == "pconf"), "proxyconf"); + $tab_array[] = array(gettext("Filter config"), ($mode == "fconf"), "filterconf"); echo "| "; foreach ($tab_array as $ta) { - $bl = $ta[1] ? "" : ""; - $br = $ta[1] ? "" : ""; - echo "$bl{$ta[0]}$br | "; + $id = "hd_{$ta[2]}"; + $bb = $ta[1] ? "font-weight: bold;" : ''; + echo "{$ta[0]} | "; } echo ""; ?> - +
-
" ; - break; - case "fconf": if (function_exists("squidguard_conflist")) - $cont = squidguard_conflist( ); - else $cont = "Function 'squidguard_conflist' not found."; - echo "
" ; - break; - case "flog": if (function_exists( "squidguard_logrep" )) echo squidguard_logrep( SQUIDGUARD_LOGDIR . '/squidGuard.log', 50, false ); - break; - case "fgui": if (function_exists( "squidguard_logrep" )) echo squidguard_logrep( SQUIDGUARD_LOGDIR . SQUIDGUARD_CONFLOGFILE, 50, false ); - break; - case "blocked": - default: if (function_exists( "squidguard_logrep" )) echo squidguard_logrep( SQUIDGUARD_LOGDIR . '/' . SQUIDGUARD_LOGFILE, 50, false ); - break; - } -?> -
diff --git a/config/squidGuard/squidguard_log.xml b/config/squidGuard/squidguard_log.xml deleted file mode 100644 index 13477bed..00000000 --- a/config/squidGuard/squidguard_log.xml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Describe your package here - Describe your package requirements here - Currently there are no FAQ items provided. - squidguardlog - none - Proxy filter SquidGuard: Log - /usr/local/pkg/squidguard.inc - A proxy server user has been deleted. - A proxy server user has been created/modified. - - - General settings - /pkg_edit.php?xml=squidguard.xml&id=0 - - - Common ACL - /pkg_edit.php?xml=squidguard_default.xml&id=0 - - - Groups ACL - /pkg.php?xml=squidguard_acl.xml - - - Target categories - /pkg.php?xml=squidguard_dest.xml - - - Times - /pkg.php?xml=squidguard_time.xml - - - Rewrites - /pkg.php?xml=squidguard_rewr.xml - - - Blacklist - /squidGuard/squidguard_blacklist.php - - - Log - /squidGuard/squidguard_log.php - - - -enabled - - - Log type - logtype - - input - access_log - - - - - - - - - - Log type - logtype - - listtopic -Ext - access_log - - - - - - - - - - Log type - logtype - - input - access_log - - - - - - - - - - - Log type - logtype2 - - input - access_log - - - - - - - - - - - Log type - logtype1 - - input - access_log - - - - - - - - - - - - squidguard_before_form_log(&$pkg); - - - squidGuard_print_javascript(); - - - - - - \ No newline at end of file -- cgit v1.2.3