aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2006-01-29 02:39:51 +0000
committerScott Ullrich <sullrich@pfsense.org>2006-01-29 02:39:51 +0000
commitf242b672713002a2e8fa6ab27a7051f64e35be1f (patch)
tree85c5275f6882a6a6a97be419777fd008c6396275
parentc984b6957630ba90c785cdfb047f1edbc75fdc4a (diff)
downloadpfsense-packages-f242b672713002a2e8fa6ab27a7051f64e35be1f.tar.gz
pfsense-packages-f242b672713002a2e8fa6ab27a7051f64e35be1f.tar.bz2
pfsense-packages-f242b672713002a2e8fa6ab27a7051f64e35be1f.zip
Add spamd_db.php a tool that allows you to whitelist or blacklist items that are in the db.
-rw-r--r--packages/spamd.xml11
-rw-r--r--packages/spamd_db.php181
-rw-r--r--packages/spamd_settings.xml8
-rw-r--r--packages/spamd_whitelist.xml4
4 files changed, 201 insertions, 3 deletions
diff --git a/packages/spamd.xml b/packages/spamd.xml
index 900055f3..f8c4e10d 100644
--- a/packages/spamd.xml
+++ b/packages/spamd.xml
@@ -28,6 +28,10 @@
<tab>
<text>SpamD Settings</text>
<url>/pkg_edit.php?xml=spamd_settings.xml&amp;id=0</url>
+ </tab>
+ <tab>
+ <text>SpamD Database</text>
+ <url>/spamd_db.php</url>
</tab>
</tabs>
<additional_files_needed>
@@ -49,7 +53,12 @@
<prefix>/usr/local/pkg/</prefix>
<chmod>0755</chmod>
<item>http://www.pfsense.com/packages/config/spamd_settings.xml</item>
- </additional_files_needed>
+ </additional_files_needed>
+ <additional_files_needed>
+ <prefix>/usr/local/www/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.com/packages/config/spamd_db.php</item>
+ </additional_files_needed>
<!-- configpath gets expanded out automatically and config items will be
stored in that location -->
<configpath>['installedpackages']['spamd']['config']</configpath>
diff --git a/packages/spamd_db.php b/packages/spamd_db.php
new file mode 100644
index 00000000..09ea4052
--- /dev/null
+++ b/packages/spamd_db.php
@@ -0,0 +1,181 @@
+<?php
+/* $Id$ */
+/*
+ spamd_db.php
+ Copyright (C) 2004 Scott Ullrich
+ 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($_GET['action'] or $_POST['action']) {
+ if($_GET['action'])
+ $action = $_GET['action'];
+ if($_POST['action'])
+ $action = $_POST['action'];
+ if($_GET['srcip'])
+ $srcip = $_GET['srcip'];
+ if($_POST['srcip'])
+ $srcip = $_POST['srcip'];
+ $pkgdb = split("\n", `/usr/local/sbin/spamdb`);
+ if($action == "whitelist") {
+ mwexec("/usr/local/sbin/spamdb -a {$srcip}");
+ } else if($action == "spamtrap") {
+ mwexec("/usr/local/sbin/spamdb -a {$srcip} -t");
+ } else if($action == "trapped") {
+ mwexec("/usr/local/sbin/spamdb -a {$srcip} -t");
+ }
+ mwexec("killall -HUP spamlogd");
+ exit;
+}
+
+$pgtitle = "SpamD: Database";
+include("head.inc");
+
+?>
+<body link="#000000" vlink="#000000" alink="#000000">
+<?php include("fbegin.inc"); ?>
+<p class="pgtitle"><?=$pgtitle?></font></p>
+<form action="spamd_db.php" method="post" name="iform">
+<script src="/javascript/scriptaculous/prototype.js" type="text/javascript"></script>
+<script src="/javascript/scriptaculous/scriptaculous.js" type="text/javascript"></script>
+<script type="text/javascript" language="javascript" src="row_toggle.js">
+</script>
+<script language="javascript">
+function outputrule(req) {
+ //alert(req.content);
+}
+if (typeof getURL == 'undefined') {
+ getURL = function(url, callback) {
+ if (!url)
+ throw 'No URL for getURL';
+ try {
+ if (typeof callback.operationComplete == 'function')
+ callback = callback.operationComplete;
+ } catch (e) {}
+ if (typeof callback != 'function')
+ throw 'No callback function for getURL';
+ var http_request = null;
+ if (typeof XMLHttpRequest != 'undefined') {
+ http_request = new XMLHttpRequest();
+ }
+ else if (typeof ActiveXObject != 'undefined') {
+ try {
+ http_request = new ActiveXObject('Msxml2.XMLHTTP');
+ } catch (e) {
+ try {
+ http_request = new ActiveXObject('Microsoft.XMLHTTP');
+ } catch (e) {}
+ }
+ }
+ if (!http_request)
+ throw 'Both getURL and XMLHttpRequest are undefined';
+ http_request.onreadystatechange = function() {
+ if (http_request.readyState == 4) {
+ callback( { success : true,
+ content : http_request.responseText,
+ contentType : http_request.getResponseHeader("Content-Type") } );
+ }
+ }
+ http_request.open('GET', url, true);
+ http_request.send(null);
+ }
+}
+</script>
+<?php if ($savemsg) print_info_box($savemsg); ?>
+<?php if (file_exists($d_natconfdirty_path)): ?><p>
+<?php endif; ?>
+<table width="99%" border="0" cellpadding="0" cellspacing="0">
+ <tr><td>
+<?php
+ $tab_array = array();
+ $tab_array[] = array("SpamD Sources", false, "/pkg.php?xml=spamd.xml");
+ $tab_array[] = array("SpamD Whitelist", false, "/pkg.php?xml=spamd_whitelist.xml");
+ $tab_array[] = array("SpamD Settings", false, "/pkg_edit.php?xml=spamd_settings.xml&id=0");
+ $tab_array[] = array("SpamD Database", true, "/spamd_db.php");
+ display_top_tabs($tab_array);
+?>
+ </td></tr>
+ <tr>
+ <td>
+ <div id="mainarea">
+ <table class="tabcont" width="100%" border="0" cellpadding="0" cellspacing="0">
+ <tr id="frheader">
+ <td class="listhdrr">Action</td>
+ <td class="listhdrr">Type</td>
+ <td class="listhdrr">IP</td>
+ <td class="listhdrr">From</td>
+ <td class="listhdrr">To</td>
+ <td class="listhdr">Attempts</td>
+ </tr>
+<?php
+ $pkgdb = split("\n", `/usr/local/sbin/spamdb`);
+ $rows = 0;
+ $lastseenip = "";
+ $srcip = "|";
+ foreach($pkgdb as $pkgdb_row) {
+ $dontdisplay = false;
+ $rowtext = "";
+ $rowtext .= "<span class=\"{$rows}\"></span>";
+ $rowtext .= "<tr id=\"{$rows}\">";
+ $pkgdb_split = split("\|", $pkgdb_row);
+ $rowtext .= "<td class=\"listr\">";
+ $srcip = $pkgdb_split[1];
+ $rowtext .= "<a onClick='getURL(\"spamd_db.php?srcip={$srcip}&action=whitelist\", outputrule);' href='#{$rows}'>Whitelist</a> ";
+ $rowtext .= " | <a onClick='getURL(\"spamd_db.php?srcip={$srcip}&action=spamtrap\", outputrule);' href='#{$rows}'>Blacklist</a> ";
+ $rowtext .= "</td>";
+ $column = 0;
+ foreach($pkgdb_split as $col) {
+ if($column == 4 || $column == 5 || $column == 6 || $column == 8) {
+ $column++;
+ continue;
+ }
+ if($col == "")
+ $dontdisplay = true;
+ $col = str_replace("<","",$col);
+ $col = str_replace(">","",$col);
+ $rowtext .= "<td class=\"listr\">{$col}</td>";
+ $column++;
+ }
+ $rowtext .= "</tr>";
+ if($srcip == "")
+ $dontdisplay = true;
+ if($lastseenip == $srcip)
+ $dontdisplay = true;
+ if($dontdisplay == false) {
+ echo $rowtext;
+ $lastseenip = $srcip;
+ }
+ $rows++;
+ }
+?>
+ </table>
+ </div>
+ </td>
+ </tr>
+</table>
+</form>
+<?php include("fend.inc"); ?>
+</body>
+</html>
diff --git a/packages/spamd_settings.xml b/packages/spamd_settings.xml
index e9f9a053..1dba571b 100644
--- a/packages/spamd_settings.xml
+++ b/packages/spamd_settings.xml
@@ -29,7 +29,11 @@
<text>SpamD Settings</text>
<url>/pkg_edit.php?xml=spamd_settings.xml&amp;id=0</url>
<active/>
- </tab>
+ </tab>
+ <tab>
+ <text>SpamD Database</text>
+ <url>/spamd_db.php</url>
+ </tab>
</tabs>
<!-- configpath gets expanded out automatically and config items will be
stored in that location -->
@@ -82,7 +86,7 @@
<field>
<fielddescr>White Exp</fielddescr>
<fieldname>whiteexp</fieldname>
- <description>Adjust the three time parameters for greylisting. White expiration defaults to 864 (hours, approximately 36 days). spamd removes whitelist entries from the database if no mail delivery activity has been seen from the whitelisted address within whiteexp hours from the initial time an address is whitelisted.</description>
+ <description>Adjust the three time parameters for greylisting. White expiration defaults to 864 (hours, approximately 36 days). SpamD removes whitelist entries from the database if no mail delivery activity has been seen from the whitelisted address within whiteexp hours from the initial time an address is whitelisted.</description>
<type>input</type>
<size>30</size>
<value>25:4:864</value>
diff --git a/packages/spamd_whitelist.xml b/packages/spamd_whitelist.xml
index 354a002e..cc283872 100644
--- a/packages/spamd_whitelist.xml
+++ b/packages/spamd_whitelist.xml
@@ -24,6 +24,10 @@
<text>SpamD Settings</text>
<url>/pkg_edit.php?xml=spamd_settings.xml&amp;id=0</url>
</tab>
+ <tab>
+ <text>SpamD Database</text>
+ <url>/spamd_db.php</url>
+ </tab>
</tabs>
<!-- configpath gets expanded out automatically and config items will be
stored in that location -->