aboutsummaryrefslogtreecommitdiffstats
path: root/config/havp
diff options
context:
space:
mode:
Diffstat (limited to 'config/havp')
-rw-r--r--config/havp/antivirus.php8
-rw-r--r--config/havp/havp.inc23
-rw-r--r--config/havp/havp.xml27
-rw-r--r--config/havp/havp_avset.xml10
-rw-r--r--config/havp/havp_fscan.xml4
-rw-r--r--config/havp/havp_log.php105
6 files changed, 157 insertions, 20 deletions
diff --git a/config/havp/antivirus.php b/config/havp/antivirus.php
index 0d8cda1d..0d66a6b3 100644
--- a/config/havp/antivirus.php
+++ b/config/havp/antivirus.php
@@ -176,6 +176,11 @@ if ($_POST['startupdate'] != '') {
# else echo "No 'start_antivirus_scanner' function found.";
}
+/* Clear havp access log */
+if ($_POST['clearlog_x'] != '') {
+ file_put_contents(HVDEF_HAVP_ACCESSLOG, '');
+}
+
# ------------------------------------------------------------------------------
?>
@@ -199,6 +204,7 @@ if (pfsense_version_A() == '1') {
$tab_array[] = array(gettext("General page"), true, "antivirus.php");
$tab_array[] = array(gettext("HTTP proxy"), false, "pkg_edit.php?xml=havp.xml&id=0");
$tab_array[] = array(gettext("Settings"), false, "pkg_edit.php?xml=havp_avset.xml&id=0");
+ $tab_array[] = array(gettext("Log"), false, "havp_log.php");
display_top_tabs($tab_array);
?>
@@ -356,7 +362,7 @@ if (pfsense_version_A() == '1') {
}
else echo "<tr><td $stl>Not found</td></tr>";
?>
- <tr class="listr"><td class="listr" colspan="4"><?php echo get_av_statistic(); ?></td></tr>
+ <tr class="listr"><td class="listr" colspan="4"><?php echo get_av_statistic(); ?><?php echo "<div style='float:right;'><input title='Clear antivirus log' name='clearlog' type='image' value='havp' border=0 src='./themes/".$g['theme']."/images/icons/icon_x.gif'>"; ?><font size="-1">&nbsp;Clear log</font></div></td></tr>
</tbody></table>
</td>
</tr>
diff --git a/config/havp/havp.inc b/config/havp/havp.inc
index 29a109ba..8118f695 100644
--- a/config/havp/havp.inc
+++ b/config/havp/havp.inc
@@ -48,7 +48,7 @@ if(!function_exists("filter_configure"))
define('HV_DEBUG', 'false');
# use Clamd daemon (another - use libclam)
-define('HV_USE_CLAMD', 'true');
+# define('HV_USE_CLAMD', 'true');
define('HV_CLAMD_TCPSOCKET', 'true');
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -151,6 +151,7 @@ define('HV_SCANTEMPFILE', 'hv_scan_tempfile');
# XML fields
# ------------------------------------------------------------------------------
define('F_ENABLE', 'enable');
+define('F_USECLAMD', 'useclamd');
define('F_PROXYMODE', 'proxymode');
define('F_PROXYINTERFACE', 'proxyinterface');
define('F_PROXYBINDIFACE', 'proxybindiface'); # internal var
@@ -234,11 +235,11 @@ function havp_deinstall()
# ==============================================================================
# before form
# ------------------------------------------------------------------------------
-function havp_before_form($pkg)
+function havp_before_form(&$pkg)
{
}
# ------------------------------------------------------------------------------
-function havp_fscan_before_form($pkg)
+function havp_fscan_before_form(&$pkg)
{
if(is_array($pkg['fields']['field'])) {
foreach($pkg['fields']['field'] as $key => $field) {
@@ -252,7 +253,7 @@ function havp_fscan_before_form($pkg)
# ------------------------------------------------------------------------------
# validation
# ------------------------------------------------------------------------------
-function havp_validate_settings($post, $input_errors)
+function havp_validate_settings($post, &$input_errors)
{
$submit = isset($_GET['submit']) ? $_GET['submit'] : $_POST['submit'];
@@ -515,6 +516,8 @@ function havp_convert_pfxml_xml()
# === GUI Fields ===
$havp_config[F_ENABLE] = ( $pfconf[F_ENABLE] === 'on' ? 'true' : 'false' );
+ # ClamAV mode
+ $havp_config[F_USECLAMD] = $pfconf[F_USECLAMD];
# proxy
$havp_config[F_PROXYMODE] = ( !empty($pfconf[F_PROXYMODE]) ? $pfconf[F_PROXYMODE] : 'standard' );
# ToDo: add check squid transparent
@@ -710,9 +713,9 @@ function havp_config_havp()
$conf[] = "MAXDOWNLOADSIZE {$havp_config[F_MAXDOWNLOADSIZE]}";
#
$conf[] = "\n# ClamAV Library Scanner (libclamav) ";
- $conf[] = "ENABLECLAMLIB " . (HV_USE_CLAMD !== 'true' ? "true" : "false");
+ $conf[] = "ENABLECLAMLIB " . ($havp_config[F_USECLAMD] !== 'true' ? "true" : "false");
# use clamd, if configured
- if (HV_USE_CLAMD === 'true') {
+ if ($havp_config[F_USECLAMD] === 'true') {
$conf[] = "\n# Clamd scanner (Clam daemon)";
$conf[] = "ENABLECLAMD true";
# clamd socket
@@ -1342,7 +1345,7 @@ function havp_startup_script()
$s[] = "\t# start";
$s[] = "\tif [ -z \"`{$havpchk}`\" ];then";
- if (HV_USE_CLAMD === 'true') {
+ if ($havp_config[F_USECLAMD] === 'true') {
$clampid_dir = HVDEF_CLAM_RUNDIR;
$s[] = "\t\t# start clamd before (to be sure)";
$s[] = "\t\t" . HVDEF_CLAM_STARTUP_SCRIPT . " start";
@@ -1563,7 +1566,7 @@ function start_antivirus_scanner($filename)
$param[] = "--max-dir-recursion=255"; # Maximum directory recursion level
$param = implode(" ", $param);
- if (HV_USE_CLAMD === 'true')
+ if ($havp_config[F_USECLAMD] === 'true')
$param = "clamdscan $param $filename"; # use clamd daemon (more quickly)
else $param = "clamscan $param $filename";
@@ -1702,7 +1705,7 @@ function havp_get_av_viruslog()
$log = explode("\n", $log);
$count = 0;
foreach($log as $ln) {
- if (substr_count(strtolower($ln), "virus clamd:"))
+ if (substr_count(strtolower($ln), "virus clam"))
$s[] = $ln;
}
}
@@ -1716,7 +1719,7 @@ function havp_get_av_statistic()
if (file_exists(HVDEF_HAVP_ACCESSLOG)) {
$log = file_get_contents(HVDEF_HAVP_ACCESSLOG);
- $count = substr_count(strtolower($log), "virus clamd:");
+ $count = substr_count(strtolower($log), "virus clam");
$s = "Found $count viruses (total).";
}
diff --git a/config/havp/havp.xml b/config/havp/havp.xml
index 1e50eb5e..51356862 100644
--- a/config/havp/havp.xml
+++ b/config/havp/havp.xml
@@ -3,7 +3,7 @@
<name>havp</name>
<title>Antivirus: HTTP proxy (havp + clamav)</title>
<category>Status</category>
- <version>0.88_03</version>
+ <version>1.02</version>
<include_file>/usr/local/pkg/havp.inc</include_file>
<menu>
<name>Antivirus</name>
@@ -55,6 +55,10 @@
<text>Settings</text>
<url>/pkg_edit.php?xml=havp_avset.xml&amp;id=0</url>
</tab>
+ <tab>
+ <text>Log</text>
+ <url>/havp_log.php</url>
+ </tab>
</tabs>
<fields>
<field>
@@ -64,6 +68,21 @@
<type>checkbox</type>
</field>
<field>
+ <fielddescr>ClamAV mode</fielddescr>
+ <fieldname>useclamd</fieldname>
+ <description>
+ Select ClamAV running mode:&lt;br&gt;
+ &lt;b&gt;Daemon&lt;/b&gt; - HAVP will use ClamAV as socket scanner daemon. Default option.&lt;br&gt;
+ &lt;b&gt;Library&lt;/b&gt; - HAVP will use ClamAV as loaded library scanner. Note: this mode needs much more memory.&lt;br&gt;
+ </description>
+ <type>select</type>
+ <default_value>true</default_value>
+ <options>
+ <option><value>true</value><name>Daemon</name></option>
+ <option><value>false</value><name>Library</name></option>
+ </options>
+ </field>
+ <field>
<fielddescr>Proxy mode</fielddescr>
<fieldname>proxymode</fieldname>
<description>
@@ -288,10 +307,10 @@
</field>
</fields>
<custom_php_command_before_form>
- havp_before_form(&amp;$pkg);
+ havp_before_form($pkg);
</custom_php_command_before_form>
<custom_php_validation_command>
- havp_validate_settings($_POST, &amp;$input_errors);
+ havp_validate_settings($_POST, $input_errors);
</custom_php_validation_command>
<custom_php_resync_config_command>
havp_resync();
@@ -302,4 +321,4 @@
<custom_php_deinstall_command>
havp_deinstall();
</custom_php_deinstall_command>
-</packagegui> \ No newline at end of file
+</packagegui>
diff --git a/config/havp/havp_avset.xml b/config/havp/havp_avset.xml
index 3cea9b76..1b0d5c5d 100644
--- a/config/havp/havp_avset.xml
+++ b/config/havp/havp_avset.xml
@@ -23,6 +23,10 @@
<url>/pkg_edit.php?xml=havp_avset.xml&amp;id=0</url>
<active/>
</tab>
+ <tab>
+ <text>Log</text>
+ <url>/havp_log.php</url>
+ </tab>
</tabs>
<fields>
<field>
@@ -92,10 +96,10 @@
</field>
</fields>
<custom_php_command_before_form>
- havp_before_form(&amp;$pkg);
+ havp_before_form($pkg);
</custom_php_command_before_form>
<custom_php_validation_command>
- havp_validate_settings($_POST, &amp;$input_errors);
+ havp_validate_settings($_POST, $input_errors);
</custom_php_validation_command>
<custom_php_resync_config_command>
havp_avset_resync();
@@ -104,4 +108,4 @@
</custom_php_install_command>
<custom_php_deinstall_command>
</custom_php_deinstall_command>
-</packagegui> \ No newline at end of file
+</packagegui>
diff --git a/config/havp/havp_fscan.xml b/config/havp/havp_fscan.xml
index 1f0ca8dc..91dce25c 100644
--- a/config/havp/havp_fscan.xml
+++ b/config/havp/havp_fscan.xml
@@ -36,10 +36,10 @@
</field>
</fields>
<custom_php_command_before_form>
- havp_fscan_before_form(&amp;$pkg);
+ havp_fscan_before_form($pkg);
</custom_php_command_before_form>
<custom_php_validation_command>
- havp_validate_settings($_POST, &amp;$input_errors);
+ havp_validate_settings($_POST, $input_errors);
</custom_php_validation_command>
<custom_php_resync_config_command>
</custom_php_resync_config_command>
diff --git a/config/havp/havp_log.php b/config/havp/havp_log.php
new file mode 100644
index 00000000..60c02fbf
--- /dev/null
+++ b/config/havp/havp_log.php
@@ -0,0 +1,105 @@
+<?php
+/* $Id$ */
+/*
+ havp_log.php
+ Copyright (C) 2014 Andrew Nikitin <andrey.b.nikitin@gmail.com>.
+ Copyright (C) 2005 Bill Marquette <bill.marquette@gmail.com>.
+ Copyright (C) 2003-2004 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.
+*/
+
+require("guiconfig.inc");
+
+if (file_exists("/usr/local/pkg/havp.inc"))
+ require_once("/usr/local/pkg/havp.inc");
+else echo "No havp.inc found";
+
+$nentries = $config['syslog']['nentries'];
+if (!$nentries)
+ $nentries = 50;
+
+if ($_POST['clear'])
+ file_put_contents(HVDEF_HAVP_ERRORLOG, '');
+
+function dump_havp_errorlog($logfile, $tail) {
+ global $g, $config;
+ $sor = isset($config['syslog']['reverse']) ? "-r" : "";
+ $logarr = "";
+ $grepline = " ";
+ if (is_dir($logfile)) {
+ $logarr = array("File $logfile is a directory.");
+ } elseif(file_exists($logfile) && filesize($logfile) == 0) {
+ $logarr = array(" ... Log file is empty.");
+ } else {
+ exec("cat " . escapeshellarg($logfile) . "{$grepline} | /usr/bin/tail {$sor} -n " . escapeshellarg($tail), $logarr);
+ }
+ foreach ($logarr as $logent) {
+ $logent = preg_split("/\s+/", $logent, 3);
+ echo "<tr valign=\"top\">\n";
+ $entry_date_time = htmlspecialchars($logent[0] . " " . $logent[1]);
+ $entry_text = htmlspecialchars($logent[2]);
+ echo "<td class=\"listlr nowrap\" width=\"130\">{$entry_date_time}</td>\n";
+ echo "<td class=\"listr\">{$entry_text}</td>\n";
+ echo "</tr>\n";
+ }
+}
+
+$pgtitle = "Antivirus: HAVP log";
+include("head.inc");
+
+?>
+
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
+<?php include("fbegin.inc"); ?>
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr><td>
+<?php
+ $tab_array = array();
+ $tab_array[] = array(gettext("General page"), false, "antivirus.php");
+ $tab_array[] = array(gettext("HTTP proxy"), false, "pkg_edit.php?xml=havp.xml&amp;id=0");
+ $tab_array[] = array(gettext("Settings"), false, "pkg_edit.php?xml=havp_avset.xml&amp;id=0");
+ $tab_array[] = array(gettext("Log"), true, "havp_log.php");
+ display_top_tabs($tab_array);
+?>
+ </td></tr>
+ <tr>
+ <td>
+ <div id="mainarea">
+ <table class="tabcont" width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td colspan="2" class="listtopic">
+ <?php printf(gettext("Last %s HAVP log entries"), $nentries);?></td>
+ </tr>
+ <?php dump_havp_errorlog(HVDEF_HAVP_ERRORLOG, $nentries); ?>
+ <tr><td><br/>
+ <form action="havp_log.php" method="post">
+ <input name="clear" type="submit" class="formbtn" value="<?=gettext("Clear log"); ?>" /></form></td></tr>
+ </table>
+ </div>
+ </td>
+ </tr>
+</table>
+<?php include("fend.inc"); ?>
+</body>
+</html>