From: henoheno Date: Sun, 4 Mar 2007 10:50:50 +0000 (+0900) Subject: Grouping for badhost X-Git-Url: http://git.osdn.net/view?p=pukiwiki%2Fpukiwiki_sandbox.git;a=commitdiff_plain;h=67ffee54d2fdd14bce4f9cbc21df07214d031773;hp=00f0f87f0affa74e7ddef20741bf22bd9aca7776 Grouping for badhost --- diff --git a/spam.php b/spam.php index 1766489..9714ce7 100644 --- a/spam.php +++ b/spam.php @@ -1,5 +1,5 @@ $value) { - if (is_string($key)) { - $regexs[$_list][$key] = $value; + if (is_array($value)) { + $regexs[$_list][$key] = array(); + foreach($value as $_key => $_value) { + if (is_string($_key)) { + $regexs[$_list][$key][$_key] = $_value; // A regex + } else { + $regexs[$_list][$key][] = + '/^(?:www\.)?' . generate_glob_regex($value, '/') . '$/i'; + } + } } else { - $regexs[$_list][$value] = - '/^(?:www\.)?' . generate_glob_regex($value, '/') . '$/i'; + if (is_string($key)) { + $regexs[$_list][$key] = $value; // A regex + } else { + $regexs[$_list][$value] = + '/^(?:www\.)?' . generate_glob_regex($value, '/') . '$/i'; + } } } } @@ -720,12 +732,24 @@ function is_badhost($hosts = array(), $asap = TRUE, & $remains) $tmp = array(); foreach (get_blocklist('badhost') as $label => $regex) { - $result[$label] = preg_grep($regex, $hosts); - if (empty($result[$label])) { - unset($result[$label]); + if (is_array($regex)) { + $result[$label] = array(); + foreach($regex as $_label => $_regex) { + $_group = preg_grep($_regex, $hosts); + if ($_group) { + $result[$label][$_label] = $_group; + $hosts = array_diff($hosts, $_group); + if ($asap) break; + } + } + if (empty($result[$label])) unset($result[$label]); } else { - $hosts = array_diff($hosts, $result[$label]); - if ($asap) break; + $_group = preg_grep($regex, $hosts); + if ($_group) { + $result[$label] = $_group; + $hosts = array_diff($hosts, $result[$label]); + if ($asap) break; + } } } @@ -960,10 +984,8 @@ function check_uri_spam($target = '', $method = array()) // URI: Bad host if ((! $asap || ! $is_spam) && isset($method['badhost'])) { $__remains = array(); - if ($asap) { - $badhost = is_badhost($hosts, $asap, $__remains); - } else { - $badhost = is_badhost($hosts, $asap, $__remains); + $badhost = is_badhost($hosts, $asap, $__remains); + if (! $asap) { if ($__remains) { $remains['badhost'] = array(); foreach ($__remains as $value) { diff --git a/spam/spam.php b/spam/spam.php index 1766489..9714ce7 100644 --- a/spam/spam.php +++ b/spam/spam.php @@ -1,5 +1,5 @@ $value) { - if (is_string($key)) { - $regexs[$_list][$key] = $value; + if (is_array($value)) { + $regexs[$_list][$key] = array(); + foreach($value as $_key => $_value) { + if (is_string($_key)) { + $regexs[$_list][$key][$_key] = $_value; // A regex + } else { + $regexs[$_list][$key][] = + '/^(?:www\.)?' . generate_glob_regex($value, '/') . '$/i'; + } + } } else { - $regexs[$_list][$value] = - '/^(?:www\.)?' . generate_glob_regex($value, '/') . '$/i'; + if (is_string($key)) { + $regexs[$_list][$key] = $value; // A regex + } else { + $regexs[$_list][$value] = + '/^(?:www\.)?' . generate_glob_regex($value, '/') . '$/i'; + } } } } @@ -720,12 +732,24 @@ function is_badhost($hosts = array(), $asap = TRUE, & $remains) $tmp = array(); foreach (get_blocklist('badhost') as $label => $regex) { - $result[$label] = preg_grep($regex, $hosts); - if (empty($result[$label])) { - unset($result[$label]); + if (is_array($regex)) { + $result[$label] = array(); + foreach($regex as $_label => $_regex) { + $_group = preg_grep($_regex, $hosts); + if ($_group) { + $result[$label][$_label] = $_group; + $hosts = array_diff($hosts, $_group); + if ($asap) break; + } + } + if (empty($result[$label])) unset($result[$label]); } else { - $hosts = array_diff($hosts, $result[$label]); - if ($asap) break; + $_group = preg_grep($regex, $hosts); + if ($_group) { + $result[$label] = $_group; + $hosts = array_diff($hosts, $result[$label]); + if ($asap) break; + } } } @@ -960,10 +984,8 @@ function check_uri_spam($target = '', $method = array()) // URI: Bad host if ((! $asap || ! $is_spam) && isset($method['badhost'])) { $__remains = array(); - if ($asap) { - $badhost = is_badhost($hosts, $asap, $__remains); - } else { - $badhost = is_badhost($hosts, $asap, $__remains); + $badhost = is_badhost($hosts, $asap, $__remains); + if (! $asap) { if ($__remains) { $remains['badhost'] = array(); foreach ($__remains as $value) {