diff --git a/modules/spamfilter/queries/updateDeniedIPHit.xml b/modules/spamfilter/queries/updateDeniedIPHit.xml new file mode 100644 index 000000000..cd1771900 --- /dev/null +++ b/modules/spamfilter/queries/updateDeniedIPHit.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/spamfilter/schemas/spamfilter_denied_ip.xml b/modules/spamfilter/schemas/spamfilter_denied_ip.xml index 4911300fb..758053734 100644 --- a/modules/spamfilter/schemas/spamfilter_denied_ip.xml +++ b/modules/spamfilter/schemas/spamfilter_denied_ip.xml @@ -1,5 +1,7 @@
+ +
diff --git a/modules/spamfilter/spamfilter.admin.view.php b/modules/spamfilter/spamfilter.admin.view.php index b6db51b52..b2dc62e3f 100644 --- a/modules/spamfilter/spamfilter.admin.view.php +++ b/modules/spamfilter/spamfilter.admin.view.php @@ -21,9 +21,16 @@ class spamfilterAdminView extends spamfilter */ function dispSpamfilterAdminDeniedIPList() { + // Get sort index + $sort_index = Context::get('sort_index'); + if (!in_array($sort_index, array('regdate', 'latest_hit', 'hit'))) + { + $sort_index = 'regdate'; + } + // Get the list of denied IP addresses and words $oSpamFilterModel = getModel('spamfilter'); - $ip_list = $oSpamFilterModel->getDeniedIPList(); + $ip_list = $oSpamFilterModel->getDeniedIPList($sort_index); Context::set('ip_list', $ip_list); $security = new Security(); diff --git a/modules/spamfilter/spamfilter.class.php b/modules/spamfilter/spamfilter.class.php index d55425133..9d996720f 100644 --- a/modules/spamfilter/spamfilter.class.php +++ b/modules/spamfilter/spamfilter.class.php @@ -47,7 +47,8 @@ class spamfilter extends ModuleObject */ if(!$oDB->isColumnExists('spamfilter_denied_word', 'hit')) return true; if(!$oDB->isColumnExists('spamfilter_denied_word', 'latest_hit')) return true; - + if(!$oDB->isColumnExists('spamfilter_denied_ip', 'hit')) return true; + if(!$oDB->isColumnExists('spamfilter_denied_ip', 'latest_hit')) return true; if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) return true; if(!$oModuleModel->getTrigger('document.manage', 'spamfilter', 'controller', 'triggerManageDocument', 'before')) @@ -102,7 +103,16 @@ class spamfilter extends ModuleObject $oDB->addColumn('spamfilter_denied_word','latest_hit','date'); $oDB->addIndex('spamfilter_denied_word','idx_latest_hit', 'latest_hit'); } - + if(!$oDB->isColumnExists('spamfilter_denied_ip', 'hit')) + { + $oDB->addColumn('spamfilter_denied_ip','hit','number',12,0,true); + $oDB->addIndex('spamfilter_denied_ip','idx_hit', 'hit'); + } + if(!$oDB->isColumnExists('spamfilter_denied_ip', 'latest_hit')) + { + $oDB->addColumn('spamfilter_denied_ip','latest_hit','date'); + $oDB->addIndex('spamfilter_denied_ip','idx_latest_hit', 'latest_hit'); + } if(!$oDB->isColumnExists('spamfilter_denied_ip', 'description')) { $oDB->addColumn('spamfilter_denied_ip','description','varchar', 250); diff --git a/modules/spamfilter/spamfilter.model.php b/modules/spamfilter/spamfilter.model.php index 6ec830706..b5a407aee 100644 --- a/modules/spamfilter/spamfilter.model.php +++ b/modules/spamfilter/spamfilter.model.php @@ -27,10 +27,10 @@ class spamfilterModel extends spamfilter /** * @brief Return the list of registered IP addresses which were banned */ - function getDeniedIPList() + function getDeniedIPList($sort_index = 'regdate') { $args = new stdClass(); - $args->sort_index = "regdate"; + $args->sort_index = $sort_index; $args->page = Context::get('page')?Context::get('page'):1; $output = executeQueryArray('spamfilter.getDeniedIPList', $args); if(!$output->data) return array(); @@ -48,12 +48,14 @@ class spamfilterModel extends spamfilter $ip_ranges = array(); foreach ($ip_list as $ip_range) { - $ip_ranges[] = $ip_range->ipaddress; - } - - if (Rhymix\Framework\Filters\IpFilter::inRanges(\RX_CLIENT_IP, $ip_ranges)) - { - return new BaseObject(-1, 'msg_alert_registered_denied_ip'); + if (Rhymix\Framework\Filters\IpFilter::inRange(\RX_CLIENT_IP, $ip_range->ipaddress)) + { + $args = new stdClass(); + $args->ipaddress = $ip_range->ipaddress; + executeQuery('spamfilter.updateDeniedIPHit', $args); + + return new BaseObject(-1, 'msg_alert_registered_denied_ip'); + } } return new BaseObject(); diff --git a/modules/spamfilter/tpl/denied_ip_list.html b/modules/spamfilter/tpl/denied_ip_list.html index 26d1c664e..b2150dacf 100644 --- a/modules/spamfilter/tpl/denied_ip_list.html +++ b/modules/spamfilter/tpl/denied_ip_list.html @@ -18,7 +18,9 @@ IP {$lang->description} - {$lang->regdate} + {$lang->latest_hit} + {$lang->hit} + {$lang->regdate} @@ -26,11 +28,13 @@ {$ip_info->ipaddress} {$ip_info->description} + {zdate($ip_info->latest_hit,'Y-m-d H:i')}- + {$ip_info->hit} {zdate($ip_info->regdate,'Y-m-d')} - {$lang->no_data} + {$lang->no_data}