[pLog-svn] r5656 - in plugins/branches/lifetype-1.2: . httpbl httpbl/class httpbl/class/action httpbl/class/security httpbl/class/view httpbl/locale httpbl/templates

pwestbro at devel.lifetype.net pwestbro at devel.lifetype.net
Sun Jul 15 06:01:26 EDT 2007


Author: pwestbro
Date: 2007-07-15 06:01:25 -0400 (Sun, 15 Jul 2007)
New Revision: 5656

Added:
   plugins/branches/lifetype-1.2/httpbl/
   plugins/branches/lifetype-1.2/httpbl/class/
   plugins/branches/lifetype-1.2/httpbl/class/action/
   plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblconfigaction.class.php
   plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblupdateconfigaction.class.php
   plugins/branches/lifetype-1.2/httpbl/class/security/
   plugins/branches/lifetype-1.2/httpbl/class/security/httpblfilter.class.php
   plugins/branches/lifetype-1.2/httpbl/class/view/
   plugins/branches/lifetype-1.2/httpbl/class/view/pluginhttpblconfigview.class.php
   plugins/branches/lifetype-1.2/httpbl/locale/
   plugins/branches/lifetype-1.2/httpbl/locale/locale_en_UK.php
   plugins/branches/lifetype-1.2/httpbl/pluginhttpbl.class.php
   plugins/branches/lifetype-1.2/httpbl/readme.txt
   plugins/branches/lifetype-1.2/httpbl/templates/
   plugins/branches/lifetype-1.2/httpbl/templates/httpbl.template
Log:
Add the http:BL plugin.  This plugin checks Project Honeypot's http black
list for comment spammers, and blocks those clients


Added: plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblconfigaction.class.php
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblconfigaction.class.php	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblconfigaction.class.php	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,49 @@
+<?php
+
+    /*
+    Copyright 2006 Paul Westbrook (paul at westbrooks.org)
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+    
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+    */
+
+	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+    lt_include( PLOG_CLASS_PATH."plugins/httpbl/class/view/pluginhttpblconfigview.class.php" ); 
+
+    class PluginHttpBLConfigAction extends AdminAction 
+	{
+
+    	/**
+         * Constructor. If nothing else, it also has to call the constructor of the parent
+         * class, BlogAction with the same parameters
+         */
+        function PluginHttpBLConfigAction( $actionInfo, $request )
+        {
+        	$this->AdminAction( $actionInfo, $request );
+        }
+
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+			$this->_view = new PluginHttpBLConfigView( $this->_blogInfo );
+
+            $this->setCommonData();
+
+            // better to return true if everything fine
+            return true;
+        }
+    }
+?>

Added: plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblupdateconfigaction.class.php
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblupdateconfigaction.class.php	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/class/action/pluginhttpblupdateconfigaction.class.php	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,123 @@
+<?php
+
+    /*
+    Copyright 2006 Paul Westbrook (paul at westbrooks.org)
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+    
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+    */
+
+	lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
+    lt_include( PLOG_CLASS_PATH."plugins/httpbl/class/view/pluginhttpblconfigview.class.php" ); 
+
+    $apiKeyValid = true;
+    
+    class PluginHttpBLUpdateConfigAction extends AdminAction 
+	{
+	
+		var $_pluginEnabled;
+		var $_apiKey;
+		var $_maxReportAge;
+
+
+    	/**
+         * Constructor. If nothing else, it also has to call the constructor of the parent
+         * class, BlogAction with the same parameters
+         */
+        function PluginHttpBLUpdateConfigAction( $actionInfo, $request )
+        {
+        	$this->AdminAction( $actionInfo, $request );
+        }
+		
+		function validate()
+		{
+			global $apiKeyValid;
+	   
+        	$apiKeyValid = true;
+
+            $this->_pluginEnabled = $this->_request->getValue( "pluginEnabled" );
+            $this->_pluginEnabled = ($this->_pluginEnabled != "" );			
+        
+            $this->_apiKey = $this->_request->getValue( "apiKey" );
+            $this->_maxReportAge = $this->_request->getValue( "maxReportAge" );
+
+        	lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );	
+     
+            $val = new StringValidator();
+            if( $this->_pluginEnabled == true && !$val->validate($this->_apiKey) ) {
+                $this->_view = new PluginHttpBLConfigView( $this->_blogInfo );
+                $this->_view->setErrorMessage( $this->_locale->tr("httpbl_missing_api_key"));
+                $this->setCommonData();
+
+                return false;
+            }
+            
+        	lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );	
+            $intVal = new IntegerValidator();
+            if( $this->_pluginEnabled == true && ( !$intVal->validate($this->_maxReportAge) || $this->_maxReportAge < 0 || $this->_maxReportAge > 255 ) ) {
+                $this->_view = new PluginHttpBLConfigView( $this->_blogInfo );
+                $this->_view->setErrorMessage( $this->_locale->tr("httpbl_invalid_report_age"));
+                $this->setCommonData();
+
+                return false;
+            }
+            
+
+           
+			return true;
+		}
+		
+        /**
+         * Carries out the specified action
+         */
+        function perform()
+        {
+            // update the plugin configurations to blog setting
+			$blogSettings = $this->_blogInfo->getSettings();
+            $blogSettings->setValue( "plugin_httpbl_enabled", $this->_pluginEnabled );
+
+            $blogSettings->setValue( "plugin_httpbl_api_key", $this->_apiKey );
+
+            $blogSettings->setValue( "plugin_httpbl_max_stale", $this->_maxReportAge );
+
+            $this->_blogInfo->setSettings( $blogSettings ); 
+		
+			// save the blogs settings
+			$blogs = new Blogs();
+            if( !$blogs->updateBlog( $this->_blogInfo )) {
+                $this->_view = new PluginHttpBLConfigView( $this->_blogInfo );
+                $this->_view->setErrorMessage( $this->_locale->tr("error_updating_settings"));
+                $this->setCommonData();
+
+                return false;                       
+            }
+			
+			// if everything went ok...
+            $this->_blogInfo->setSettings( $blogSettings );
+            $this->_session->setValue( "blogInfo", $this->_blogInfo );
+            $this->saveSession();
+			
+			$this->_view = new PluginHttpBLConfigView( $this->_blogInfo );
+			$this->_view->setSuccessMessage( $this->_locale->tr("httpbl_settings_saved_ok"));			
+			$this->setCommonData();
+			
+			// clear the cache
+			CacheControl::resetBlogCache( $this->_blogInfo->getId());					
+            
+            return true;		
+        }
+    }
+    
+
+?>

Added: plugins/branches/lifetype-1.2/httpbl/class/security/httpblfilter.class.php
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/class/security/httpblfilter.class.php	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/class/security/httpblfilter.class.php	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,163 @@
+<?php
+
+    /*
+    Copyright 2006 Paul Westbrook (paul at westbrooks.org)
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+    
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+    */
+
+	lt_include( PLOG_CLASS_PATH."class/security/pipelinefilter.class.php" );
+
+    
+    $HttpBLError = false;
+
+    // custom error code that will be returned to the pipeline whenever an
+    // error is found... Be careful so as to not to have two different modules
+    // use the same code!!
+    define( "HTTPBL_SPAM", 820 );
+
+	class HttpBLFilter extends PipelineFilter 
+	{
+
+    	function HttpBLFilter( $pipelineRequest )
+        {
+        	$this->PipelineFilter( $pipelineRequest );
+        }
+
+        function filter()
+        {
+           global $HttpBLError;
+           
+           $HttpBLError = false;
+
+        	// get some info
+            $blogInfo = $this->_pipelineRequest->getBlogInfo();
+            $request  = $this->_pipelineRequest->getHttpRequest();
+
+        	// check if this section has been enabled or disabled
+            $blogSettings = $blogInfo->getSettings();
+		    $pluginEnabled = $blogSettings->getValue( "plugin_httpbl_enabled" );
+            if( !$pluginEnabled) {
+            	// if not, nothing to do here...
+                //_debug("ip address filter not enabled! quitting...<br/>");
+            	return new PipelineResult();
+            }
+
+            // we only have to filter the contents if the user is posting a comment
+            // so there's no point in doing anything else if that's not the case
+            if(( $request->getValue( "op" ) != "AddComment" ) && ( $request->getValue( "op" ) != "AddTrackback" )) {
+            	$result = new PipelineResult();
+                return $result;
+            }
+
+            // if this is already rejected, there is no reason to do anything here
+            if ( $this->_pipelineRequest->getRejectedState() )
+                return new PipelineResult();
+                
+  
+            lt_include( PLOG_CLASS_PATH."class/net/client.class.php" );	
+            $clientIp = Client::getIp();
+ 
+            $apiKey = $blogSettings->getValue( "plugin_httpbl_api_key" );
+            
+            $maxReportAge = $blogSettings->getValue( "plugin_httpbl_max_stale" );
+            
+
+
+            // perform the dns query
+            if(!$this->checkHttpBLForIP($apiKey, $maxReportAge, $clientIp)) {
+               $locale = $blogInfo->getLocale();
+               $result = new PipelineResult( false, HTTPBL_SPAM, $locale->tr("error_comment_spam_throw_away") );
+               return $result; 
+            }
+
+
+            // if everything went fine, we can say so by returning
+            // a positive PipelineResult object
+            $result = new PipelineResult( true );
+            
+            return $result;
+        }
+        
+
+        function checkHttpBLForIP( $apiKey, $maxReportAge, $clientIP )
+        {
+            $rev = array_reverse(explode('.', $clientIP));
+        
+            $lookup = $apiKey . '.' . implode('.', $rev) . '.' . 'dnsbl.httpbl.org.';
+        
+            $resultIp = $this->fixed_gethostbyname($lookup);
+            
+            if ($resultIp == false)
+            {
+                // This host is not in the http:bl, so let it through
+                return true;
+            }
+            
+            // Split the response
+            $splitResponse = explode('.', $resultIp);
+            
+            // first make sure that the first octet is 127, if it is not
+            // the query wasn't formatted correctly.  Give the client the benefit of 
+            // the doubt
+            if ($splitResponse[0] != 127)
+            {
+                return true;
+            }
+            
+            // The second octet has information about how stale their information is
+            // the range is 0 - 255 days
+            // XXX this should be a setting that the user can configure how stale the data
+            // can be when they consider a client to be spam
+            
+            // The thrid octet is the "threat score" for the ip address.  The range is 
+            // 0 - 255 where 255 is extremely threatening and 0 is where no score has been 
+            // assigned
+            // XXX the user should be able to specify the minimum threat score that should be used
+            
+            // The forth octet is the type of visitor, in a bit set.  
+            //  0	Search Engine
+            //  1	Suspicious
+            //  2	Harvester
+            //  4	Comment Spammer
+            // XXX There should be check boxes which types of clients they want to block
+            // but for now, assume that if anything marked as a comment spammer is to be blocked
+            
+            if (($splitResponse[3] & 4) == 4)
+            {
+                // Make sure that the last report is with in the age range
+                // that the user has specified
+                if ($splitResponse[1] <= $maxReportAge)
+                {
+                    return false;               
+                }
+            }
+            
+        
+            return true ;
+        }
+        
+        
+        function fixed_gethostbyname ($host) {
+            // Try the lookup as normal...
+            $ip = gethostbyname($host);
+            // ...but if it fails, FALSE is returned instead of the unresolved host
+            if ($ip != $host) { return $ip; } else return false;
+        }
+
+
+    }
+
+?>

Added: plugins/branches/lifetype-1.2/httpbl/class/view/pluginhttpblconfigview.class.php
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/class/view/pluginhttpblconfigview.class.php	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/class/view/pluginhttpblconfigview.class.php	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,53 @@
+<?php
+	
+    /*
+    Copyright 2006 Paul Westbrook (paul at westbrooks.org)
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+    
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+    */
+
+	lt_include( PLOG_CLASS_PATH."class/view/admin/adminplugintemplatedview.class.php" );
+
+	/**
+	 * implements the main view of the validate trackback plugin
+	 */
+	class PluginHttpBLConfigView extends AdminPluginTemplatedView
+	{
+
+		function PluginHttpBLConfigView( $blogInfo )
+		{
+			$this->AdminPluginTemplatedView( $blogInfo, "httpbl", "httpbl" );
+		}
+		
+		function render()
+		{
+			// load some configuration settings
+			$blogSettings = $this->_blogInfo->getSettings();
+			$pluginEnabled = $blogSettings->getValue( "plugin_httpbl_enabled" );
+
+			$apiKey = $blogSettings->getValue( "plugin_httpbl_api_key" );
+			
+			$maxReportAge = $blogSettings->getValue( "plugin_httpbl_max_stale" );
+			if ($maxReportAge == "") $maxReportAge = 30;
+			
+			// create a view and export the settings to the template
+			$this->setValue( "pluginEnabled", $pluginEnabled );
+			$this->setValue( "apiKey", $apiKey );
+			$this->setValue( "maxReportAge", $maxReportAge );
+			
+			parent::render();
+		}
+	}
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.2/httpbl/locale/locale_en_UK.php
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/locale/locale_en_UK.php	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/locale/locale_en_UK.php	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,21 @@
+<?php
+$messages["manageAntiSpamPlugins"] = "Anti Spam Management";
+$messages["httpblPluginSettings"] = "http:BL";
+$messages["httpbl"] = "http:BL";
+
+$messages["httpbl_plugin_enabled"] = "Enable this plugin";
+$messages["httpbl_api_key"] = "http:BL API key to be used for spam checking.  To obtain key go to <a href='http://www.projecthoneypot.org/httpbl_configure.php'>http://www.projecthoneypot.org/httpbl_configure.php</a>";
+$messages["httpbl_max_age"] = "The maximum age of http:bl report that should be used for blocking comments.";
+$messages["httpbl_plugin"] = "http:BL Plugin";
+
+$messages["httpbl_settings_saved_ok"] = "http:BL settings saved successfully!";
+$messages["httpbl_missing_api_key"] = "http:BL API key needs to be specified!";
+$messages["httpbl_invalid_report_age"] = "Specify a maximum report age  (0 - 255).";
+
+$messages["label_configuration"] = "Configuration";
+$messages["label_enable"] = "Enable";
+$messages["label_httpbl_api_key"] = "http:BL API key";
+$messages["label_httpbl_max_age"] = "Maximum age";
+
+
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.2/httpbl/pluginhttpbl.class.php
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/pluginhttpbl.class.php	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/pluginhttpbl.class.php	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,87 @@
+<?php
+
+    /*
+    Copyright 2006 Paul Westbrook (paul at westbrooks.org)
+    
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+    
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+    
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+    */
+
+	lt_include( PLOG_CLASS_PATH."class/plugin/pluginbase.class.php" );
+
+	class PluginHttpBL extends PluginBase
+	{
+		var $pluginEnabled;
+		
+		function PluginHttpBL( $source = "" )
+		{
+			$this->PluginBase( $source );
+
+			$this->id      = "httpbl";
+			$this->desc    = "http:BL checks your comments against the Project Honeypot's http:BL.";
+			$this->author  = "Paul Westbrook ";
+			$this->locales = Array( "en_UK" );
+            $this->version = "200707014";
+
+			if( $source == "admin" )
+				$this->initAdmin();
+			else
+				$this->init();
+		}
+
+        function init()
+        {
+            lt_include( PLOG_CLASS_PATH."plugins/httpbl/class/security/httpblfilter.class.php" );
+            //register the filter
+            $this->registerFilter( "HttpBLFilter" );
+        }
+        
+		function initAdmin()
+		{
+            $this->init();
+
+            $this->registerAdminAction( "httpbl", "PluginHttpBLConfigAction" );
+			$this->registerAdminAction( "updateHttpBLConfig", "PluginHttpBLUpdateConfigAction" );
+			
+			$menu =& Menu::getMenu();
+			if( !$menu->entryExists( "/menu/controlCenter/manageAntiSpamPlugins" ))						
+				$this->addMenuEntry( "/menu/controlCenter", "manageAntiSpamPlugins", "", "", true, false );			
+            $this->addMenuEntry( "/menu/controlCenter/manageAntiSpamPlugins", "httpbl", "?op=httpbl", "" );            
+		}
+
+		function register()
+		{
+		    $blogSettings = $this->blogInfo->getSettings();
+			$this->pluginEnabled = $blogSettings->getValue( "plugin_httpbl_enabled" );
+		}
+
+	    function isEnabled()
+	    {
+	        return $this->pluginEnabled;
+	    }
+	    
+	    function getPluginConfigurationKeys()
+		{
+			lt_include( PLOG_CLASS_PATH."class/data/validator/stringvalidator.class.php" );
+			lt_include( PLOG_CLASS_PATH."class/data/validator/integervalidator.class.php" );
+			
+			return( Array(
+				Array( "name" => "plugin_httpbl_enabled", "type" => "boolean" ),
+				Array( "name" => "plugin_httpbl_api_key", "validator" => new StringValidator(), "type" => "string", "allowEmpty" => true ),
+				Array( "name" => "plugin_httpbl_max_stale", "validator" => new IntegerValidator(), "type" => "string", "allowEmpty" => true ),
+			));
+		}
+
+	}
+?>
\ No newline at end of file

Added: plugins/branches/lifetype-1.2/httpbl/readme.txt
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/readme.txt	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/readme.txt	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,11 @@
+Plugin: http:BL
+Author: Paul Westbrook
+Release Date: 07/13/2007
+Version: 1.0
+
+http:BL checks your comments against the Project Honeypot's http:BL.
+
+This plugin requires a Project Honeypot http:BL API key.  To obtain go to: http://www.projecthoneypot.org/httpbl_configure.php
+
+Install:
+1. Configurate your http:BL plugin in your LifeType control center
\ No newline at end of file

Added: plugins/branches/lifetype-1.2/httpbl/templates/httpbl.template
===================================================================
--- plugins/branches/lifetype-1.2/httpbl/templates/httpbl.template	                        (rev 0)
+++ plugins/branches/lifetype-1.2/httpbl/templates/httpbl.template	2007-07-15 10:01:25 UTC (rev 5656)
@@ -0,0 +1,41 @@
+{include file="$admintemplatepath/header.template"}
+{include file="$admintemplatepath/navigation.template" showOpt=httpbl title=$locale->tr("httpbl_plugin")}
+<form name="httpblPluginSettings" method="post">
+ <fieldset class="inputField">
+ <legend>{$locale->tr("label_configuration")}</legend>  
+  {include file="$admintemplatepath/successmessage.template"}
+  {include file="$admintemplatepath/errormessage.template"}   
+  <div class="field">
+   <label for="pluginEnabled">{$locale->tr("label_enable")}</label>
+   <div class="formHelp">   
+    <input class="checkbox" type="checkbox" name="pluginEnabled" id="pluginEnabled" {if $pluginEnabled} checked="checked" {/if} value="1" />{$locale->tr("httpbl_plugin_enabled")}
+   </div>
+  </div>
+
+  <div class="field">
+   <label for="apiKey">{$locale->tr("label_httpbl_api_key")}</label>
+   <span class="required">*</span>
+   <div class="formHelp">{$locale->tr("httpbl_api_key")}
+     <input class="text" type="text" name="apiKey" id="apiKey" value="{$apiKey}" width="10" />
+   </div>
+  </div>
+
+  <div class="field">
+   <label for="maxReportAge">{$locale->tr("label_httpbl_max_age")}</label>
+   <span class="required">*</span>
+   <div class="formHelp">{$locale->tr("httpbl_max_age")}
+     <input class="text" type="text" name="maxReportAge" id="maxReportAge" value="{$maxReportAge}" width="10" />
+   </div>
+  </div>
+
+  
+ </fieldset>  
+
+ <div class="buttons">
+  <input type="hidden" name="op" value="updateHttpBLConfig" />
+  <input type="reset" name="{$locale->tr("reset")}" />    
+  <input type="submit" name="{$locale->tr("update_settings")}" value="{$locale->tr("update")}" />
+ </div>
+</form>
+{include file="$admintemplatepath/footernavigation.template"}
+{include file="$admintemplatepath/footer.template"}
\ No newline at end of file



More information about the pLog-svn mailing list