aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/postfix/postfix.php2
-rwxr-xr-xconfig/postfix/postfix.widget.php117
-rw-r--r--config/postfix/postfix.xml6
-rwxr-xr-xconfig/postfix/postfix_search.php17
4 files changed, 137 insertions, 5 deletions
diff --git a/config/postfix/postfix.php b/config/postfix/postfix.php
index 992c82c2..d50fd326 100644
--- a/config/postfix/postfix.php
+++ b/config/postfix/postfix.php
@@ -268,7 +268,7 @@ if ($_REQUEST['files']!= ""){
$stm_fetch=array();
$total_result=0;
foreach ($files as $postfix_db)
- if (file_exists($postfix_dir.'/'.$postfix_db)){
+ if (file_exists($postfix_dir.'/'.$postfix_db)){
$last_next="";
$dbhandle = sqlite_open($postfix_dir.'/'.$postfix_db, 0666, $error);
$stm='select * from '.$queue;
diff --git a/config/postfix/postfix.widget.php b/config/postfix/postfix.widget.php
new file mode 100755
index 00000000..dd43afa4
--- /dev/null
+++ b/config/postfix/postfix.widget.php
@@ -0,0 +1,117 @@
+<?php
+/*
+ Copyright 2011 Marcello Coutinho
+ Part of pfSense widgets (www.pfsense.com)
+
+ 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("guiconfig.inc");
+@require_once("pfsense-utils.inc");
+@require_once("functions.inc");
+function open_table(){
+ echo "<table style=\"padding-top:0px; padding-bottom:0px; padding-left:0px; padding-right:0px\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
+ echo" <tr>";
+}
+function close_table(){
+ echo" </tr>";
+ echo"</table>";
+
+}
+
+$pfb_table=array();
+$img['Sick']="<img src ='/themes/{$g['theme']}/images/icons/icon_interface_down.gif'>";
+$img['Healthy']="<img src ='/themes/{$g['theme']}/images/icons/icon_interface_up.gif'>";
+
+
+#var_dump($pfb_table);
+#exit;
+?><div id='postfix'><?php
+
+$postfix_dir="/var/db/postfix/";
+$curr_time = time();
+for ($z = 0; $z > -3; $z--){
+
+if ($z==0)
+ $postfix_db=date("Y-m-d");
+else
+ $postfix_db=date("Y-m-d",strtotime("$z day",$curr_time));
+
+if (file_exists($postfix_dir.'/'.$postfix_db.".db")){
+ $dbhandle = sqlite_open($postfix_dir.'/'.$postfix_db.".db", 0666, $error);
+ #noqueue
+ open_table();
+ print "<td class=\"vncellt\"><strong><center>$postfix_db</center></strong></td>";
+ close_table();
+ open_table();
+ $stm="select count(*) as total from mail_noqueue";
+ $result = sqlite_query($dbhandle, $stm);
+ $row_noqueue = sqlite_fetch_array($result, SQLITE_ASSOC);
+
+ #queue
+ $result = sqlite_query($dbhandle, $stm);
+ $stm="select status,count(*) as total from mail_queue group by status order by status";
+ $result = sqlite_query($dbhandle, $stm);
+ $reader="";
+ $count="";
+ for ($i = 1; $i <= 15; $i++) {
+ $row = sqlite_fetch_array($result, SQLITE_ASSOC);
+ if (is_array($row)){
+ if (preg_match("/\w+/",$row['status'])){
+ $reader.="<td class=\"listlr\"width=50%><strong>".ucfirst($row['status'])."</strong></td>\n";
+ if ($row['status']=="reject")
+ $row['total']=+$row_noqueue['total'];
+ $count.="<td class=\"listlr\">".$row['total']."</td>\n";
+ }
+ }
+ }
+ print "<tr>".$reader."</tr>";
+ print "<tr>".$count."</tr>";
+ close_table();
+ echo "<br>";
+ $result = sqlite_query($dbhandle, $stm);
+ sqlite_close($dbhandle);
+}
+}
+echo" </tr>";
+echo"</table></div>";
+
+?>
+<script type="text/javascript">
+ function getstatus_postfix() {
+ scroll(0,0);
+ var url = "/widgets/widgets/postfix.widget.php";
+ var pars = 'getupdatestatus=yes';
+ var myAjax = new Ajax.Request(
+ url,
+ {
+ method: 'get',
+ parameters: pars,
+ onComplete: activitycallback_postfix
+ });
+ //I know it's ugly but works.
+ setTimeout('getstatus_postfix()', 60000);
+ }
+ function activitycallback_postfix(transport) {
+ $('postfix').innerHTML = transport.responseText;
+ }
+ getstatus_postfix();
+</script>
diff --git a/config/postfix/postfix.xml b/config/postfix/postfix.xml
index 06caf4ec..aaa279f7 100644
--- a/config/postfix/postfix.xml
+++ b/config/postfix/postfix.xml
@@ -109,7 +109,11 @@
<prefix>/usr/local/www/</prefix>
<chmod>0755</chmod>
</additional_files_needed>
-
+ <additional_files_needed>
+ <item>http://www.pfsense.org/packages/config/postfix/postfix.widget.php</item>
+ <prefix>/usr/local/www/widget/widget/</prefix>
+ <chmod>0755</chmod>
+ </additional_files_needed>
<additional_files_needed>
<item>http://www.pfsense.org/packages/config/postfix/adexport.pl</item>
<prefix>/usr/local/etc/postfix/</prefix>
diff --git a/config/postfix/postfix_search.php b/config/postfix/postfix_search.php
index f347dbf0..d11505d4 100755
--- a/config/postfix/postfix_search.php
+++ b/config/postfix/postfix_search.php
@@ -91,7 +91,7 @@ include("head.inc");
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext("Subject: ");?></td>
<td width="78%" class="vtable"><input type="text" class="formfld unknown" id="subject" size="65%">
- <br><?=gettext("");?></td>
+ <br><?=gettext("Subject to search, wildcard is '%'");?></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext("Message_id: ");?></td>
@@ -168,7 +168,7 @@ include("head.inc");
<tr>
<td width="22%" valign="top"></td>
- <td width="78%"><input name="Submit" type="submit" class="formbtn" value="<?=gettext("Search");?>" onclick="getsearch_results(true)">
+ <td width="78%"><input name="Submit" type="submit" class="formbtn" id="search" value="<?=gettext("Search");?>" onclick="getsearch_results(true)">
</table>
</div>
@@ -197,12 +197,20 @@ function loopSelected(id)
}
function getsearch_results() {
- scroll(0,0);
var $new_from=$('from').value.replace("\n", "','");
var $new_to=$('to').value.replace("\n", "','");
var $new_sid=$('sid').value.replace("\n", "','");
var $files=loopSelected('Select1');
var $fields=loopSelected('fields');
+ if ($files ==""){
+ alert ("Please select at least one file.");
+ }
+ if ($fields ==""){
+ alert ("Please select at least one message field to display results.");
+ }
+ else{
+ $('search').value="Searching...";
+ $('search_results').innerHTML="";
var $queuetype=$('queuetype').options[$('queuetype').selectedIndex].text;
var $queuemax=$('queuemax').options[$('queuemax').selectedIndex].text;
var $pars="from="+$new_from+"&to="+$new_to+"&sid="+$new_sid+"&limit="+$queuemax+"&fields="+$fields+"&status="+$('status').value;
@@ -217,8 +225,11 @@ function getsearch_results() {
onComplete: activitycallback_postfix_search
});
}
+ }
function activitycallback_postfix_search(transport) {
$('search_results').innerHTML = transport.responseText;
+ scroll(0,900);
+ $('search').value="Search";
}
</script>
<!-- </form> -->