<?php
-// $Id: spam.php,v 1.94 2007/01/03 08:36:11 henoheno Exp $
+// $Id: spam.php,v 1.95 2007/01/03 09:44:23 henoheno Exp $
// Copyright (C) 2006-2007 PukiWiki Developers Team
// License: GPL v2 or (at your option) any later version
}
}
-// (PHP 4 >= 4.2.0): preg_grep() enabels invert option
+// (PHP 4 >= 4.2.0): preg_grep() enables invert option
function preg_grep_invert($pattern = '//', $input = array())
{
static $invert;
if ($invert) {
return preg_grep($pattern, $input, PREG_GREP_INVERT);
} else {
- return array_diff($input, preg_grep($pattern, $input));
+ $result = preg_grep($pattern, $input);
+ if ($result) {
+ return array_diff($input, preg_grep($pattern, $input));
+ } else {
+ return $input;
+ }
}
}
}
}
-function is_badhost($hosts = array(), $asap = TRUE)
+function is_badhost($hosts = array(), $asap = TRUE, & $remains)
{
$result = array();
if (! is_array($hosts)) $hosts = array($hosts);
}
}
+ $remains = $hosts;
+
return $result;
}
),
'is_spam' => array(),
'method' => & $method,
+ 'remains' => array(),
);
$sum = & $progress['sum'];
$is_spam = & $progress['is_spam'];
+ $remains = & $progress['remains'];
$asap = isset($method['asap']);
// Return if ...
$_progress = check_uri_spam($str, $method);
$_sum = & $_progress['sum'];
$_is_spam = & $_progress['is_spam'];
+ $_remains = & $_progress['remains'];
foreach (array_keys($_sum) as $key) {
$sum[$key] += $_sum[$key];
}
- foreach(array_keys($_is_spam) as $key) {
+ foreach (array_keys($_is_spam) as $key) {
if (is_array($_is_spam[$key])) {
// Marge keys (badhost)
foreach(array_keys($_is_spam[$key]) as $_key) {
$is_spam[$key] = TRUE;
}
}
+ foreach ($_remains as $key=>$value) {
+ foreach ($value as $_key=>$_value) {
+ $remains[$key][$_key] = $_value;
+ }
+ }
if ($asap && $is_spam) break;
}
return $progress;
// URI: Bad host
if ((! $asap || ! $is_spam) && isset($method['badhost'])) {
- $badhost = is_badhost($hosts, $asap);
+ if ($asap) {
+ $badhost = is_badhost($hosts, $asap);
+ } else {
+ $__remains = array();
+ $badhost = is_badhost($hosts, $asap, $__remains);
+ if ($__remains) {
+ $progress['remains']['badhost'] = array();
+ foreach ($__remains as $value) {
+ $progress['remains']['badhost'][$value] = TRUE;
+ }
+ unset($__remains);
+ }
+ }
if (! empty($badhost)) {
$sum['badhost'] += array_count_leaves($badhost);
foreach(array_keys($badhost) as $keys) {
<?php
-// $Id: spam.php,v 1.94 2007/01/03 08:36:11 henoheno Exp $
+// $Id: spam.php,v 1.95 2007/01/03 09:44:23 henoheno Exp $
// Copyright (C) 2006-2007 PukiWiki Developers Team
// License: GPL v2 or (at your option) any later version
}
}
-// (PHP 4 >= 4.2.0): preg_grep() enabels invert option
+// (PHP 4 >= 4.2.0): preg_grep() enables invert option
function preg_grep_invert($pattern = '//', $input = array())
{
static $invert;
if ($invert) {
return preg_grep($pattern, $input, PREG_GREP_INVERT);
} else {
- return array_diff($input, preg_grep($pattern, $input));
+ $result = preg_grep($pattern, $input);
+ if ($result) {
+ return array_diff($input, preg_grep($pattern, $input));
+ } else {
+ return $input;
+ }
}
}
}
}
-function is_badhost($hosts = array(), $asap = TRUE)
+function is_badhost($hosts = array(), $asap = TRUE, & $remains)
{
$result = array();
if (! is_array($hosts)) $hosts = array($hosts);
}
}
+ $remains = $hosts;
+
return $result;
}
),
'is_spam' => array(),
'method' => & $method,
+ 'remains' => array(),
);
$sum = & $progress['sum'];
$is_spam = & $progress['is_spam'];
+ $remains = & $progress['remains'];
$asap = isset($method['asap']);
// Return if ...
$_progress = check_uri_spam($str, $method);
$_sum = & $_progress['sum'];
$_is_spam = & $_progress['is_spam'];
+ $_remains = & $_progress['remains'];
foreach (array_keys($_sum) as $key) {
$sum[$key] += $_sum[$key];
}
- foreach(array_keys($_is_spam) as $key) {
+ foreach (array_keys($_is_spam) as $key) {
if (is_array($_is_spam[$key])) {
// Marge keys (badhost)
foreach(array_keys($_is_spam[$key]) as $_key) {
$is_spam[$key] = TRUE;
}
}
+ foreach ($_remains as $key=>$value) {
+ foreach ($value as $_key=>$_value) {
+ $remains[$key][$_key] = $_value;
+ }
+ }
if ($asap && $is_spam) break;
}
return $progress;
// URI: Bad host
if ((! $asap || ! $is_spam) && isset($method['badhost'])) {
- $badhost = is_badhost($hosts, $asap);
+ if ($asap) {
+ $badhost = is_badhost($hosts, $asap);
+ } else {
+ $__remains = array();
+ $badhost = is_badhost($hosts, $asap, $__remains);
+ if ($__remains) {
+ $progress['remains']['badhost'] = array();
+ foreach ($__remains as $value) {
+ $progress['remains']['badhost'][$value] = TRUE;
+ }
+ unset($__remains);
+ }
+ }
if (! empty($badhost)) {
$sum['badhost'] += array_count_leaves($badhost);
foreach(array_keys($badhost) as $keys) {