(これで動かせる人は、今すぐ試せるはずです)
試す場合は自己責任で、以下のようにして下さい。
spam.phpをロードする部分。lib/init.php 307行目あたり
$post = & $_POST; $cookie = & $_COOKIE; +if (! empty($post)) { + require(LIB_DIR . 'spam.php'); +}
チェックする部分。lib/init.phpあたりでもっとうまくやれるはずですが、現状は各プラグイン(のplugin_xxx_action())に仕掛けており、面倒です。editプラグインについては、割り切ったサイトでもない限り、現状は設置しない方がよいでしょう。
pcommentの場合 (commentもほぼ同じ)
--- pcomment.inc.php 3 Oct 2006 14:16:31 -0000 1.44 +++ pcomment.inc.php 12 Nov 2006 15:24:28 -0000 @@ -51,6 +51,11 @@ if (! isset($vars['msg']) || $vars['msg'] == '') return array(); $refer = isset($vars['refer']) ? $vars['refer'] : ''; + // ========================================= + // Spam filter test + pkwk_spamfilter('POST to #pcomment', $vars['refer'], $vars); + // ========================================= +
trackerの場合 (bugtrackもほぼ同じだが下記参照)
--- tracker.inc.php 28 Nov 2005 17:48:30 -0000 1.34 +++ tracker.inc.php 12 Nov 2006 14:22:18 -0000 @@ -84,6 +84,11 @@ if (PKWK_READONLY) die_message('PKWK_READONLY prohibits editing'); + // ========================================= + // Spam filter test + pkwk_spamfilter('POST to #tracker', $post['_base'], $vars); + // ========================================= +
$varsが無い場合は、適宜作って下さい。
function plugin_bugtrack_action() { - global $post; + global $post, $vars;
一通り終わったら、そのへんにあるspam uriの羅列(uriが沢山含まれている方が良い)を突っ込んでみるとブロックされるはずです。基本的に全ての入力フォームの値がチェックされます。管理者がメールを受けとっているならばメールが飛びます。
後日専用のBugTrackを立てます。*1