<?php
-// $Id: spam.php,v 1.138 2007/04/30 03:23:33 henoheno Exp $
+// $Id: spam.php,v 1.141 2007/05/02 10:01:19 henoheno Exp $
// Copyright (C) 2006-2007 PukiWiki Developers Team
// License: GPL v2 or (at your option) any later version
//
return $blocked;
}
-function is_badhost($hosts = array(), $asap = TRUE, & $remains)
+// Simple example for badhost (not used now)
+function is_badhost($hosts = array(), $asap = TRUE, $bool = TRUE)
{
$list = get_blocklist('list');
-
$blocked = blocklist_distiller($hosts, array_keys($list), $asap);
- $remains = $hosts;
foreach($list as $key=>$type){
- if (! $type) {
- unset($blocked[$key]); // Ignore goodhost etc
- }
+ if (! $type) unset($blocked[$key]); // Ignore goodhost etc
}
- return $blocked;
+ return $bool ? ! empty($blocked) : $blocked;
}
// Return if ...
if ($asap && $is_spam) return $progress;
- // URI: Bad host
+ // URI: Bad host (Separate good/bad hosts from $hosts)
if ((! $asap || ! $is_spam) && isset($method['badhost'])) {
- $__remains = array();
- $badhost = is_badhost($hosts, $asap, $__remains);
- if (! $asap) {
- if ($__remains) {
- $remains['badhost'] = array();
- foreach ($__remains as $value) {
- $remains['badhost'][$value] = TRUE;
- }
+
+ // is_badhost()
+ $list = get_blocklist('list');
+ $blocked = blocklist_distiller($hosts, array_keys($list), $asap);
+ foreach($list as $key=>$type){
+ if (! $type) unset($blocked[$key]); // Ignore goodhost etc
+ }
+ unset($list);
+
+ if (! $asap && $hosts) {
+ $remains['badhost'] = array();
+ foreach ($hosts as $value) {
+ $remains['badhost'][$value] = TRUE;
}
}
- unset($__remains);
- if (! empty($badhost)) {
- //var_dump($badhost); // BADHOST detail
+ if (! empty($blocked)) {
+
+ //var_dump($blocked); // BADHOST detail
- $sum['badhost'] += array_count_leaves($badhost);
- foreach(array_keys($badhost) as $keys) {
+ $sum['badhost'] += array_count_leaves($blocked);
+ foreach(array_keys($blocked) as $keys) {
$is_spam['badhost'][$keys] =
- array_count_leaves($badhost[$keys]);
+ array_count_leaves($blocked[$keys]);
}
- unset($badhost);
}
}
return $count;
}
+// Merge two leaves
+function array_merge_leaves($array1 = array(), $array2 = array())
+{
+ return array_merge_recursive($array1, $array2);
+}
+
// ---------------------
// Reporting
return implode(', ', $tmp);
}
+function summarize_detail_badhost($is_spam_badhost = array())
+{
+ $badhost = array();
+ foreach($is_spam_badhost as $glob=>$number) {
+ $badhost[] = $glob . '(' . $number . ')';
+ }
+ return implode(', ', $badhost);
+
+}
+
+function summarize_detail_newtral($remains_badhost = array())
+{
+ return count($remains_badhost) .
+ ' (' . implode(', ', array_keys($remains_badhost)) . ')';
+}
+
+
// ---------------------
// Exit
$summary['METRICS'] = summarize_spam_progress($progress);
}
if (isset($progress['is_spam']['badhost'])) {
- $badhost = array();
- foreach($progress['is_spam']['badhost'] as $glob=>$number) {
- $badhost[] = $glob . '(' . $number . ')';
- }
- $summary['DETAIL_BADHOST'] = implode(', ', $badhost);
+ $summary['DETAIL_BADHOST'] = summarize_detail_badhost($progress['is_spam']['badhost']);
}
if (! $asap && $progress['remains']['badhost']) {
- $count = count($progress['remains']['badhost']);
- $summary['DETAIL_NEUTRAL_HOST'] = $count .
- ' (' .
- preg_replace(
- '/[^, a-z0-9.-]/i', '',
- implode(', ', array_keys($progress['remains']['badhost']))
- ) .
- ')';
+ $summary['DETAIL_NEUTRAL_HOST'] = summarize_detail_newtral($progress['remains']['badhost']);
}
$summary['COMMENT'] = $action;
$summary['PAGE'] = '[blocked] ' . (is_pagename($page) ? $page : '');