最近は英語のコメントスパムばかりで、しかもほとんどは「CustomizedCommentfilter」に引っかかるので、実害はありません。 承認制だしね。
で、そうやって引っかかった奴は「AutoIPBan」の刑に処することになります。
でもスパム業者って、フィルターに引っかかってもお構いなしに送って来るんですよね。
定期的にMTのログからスパムコメントの発信IPアドレスを拾って、.htaccessファイルでDenyしたりしてるんですが、キリがないです。
そこで「AutoIPBan」を参考にして、「CustomizedCommentfilter」プラグインに掛かったら、自動的にMTの禁止IPアドレスへ登録されるように改造してみました。
変更するのは Comment.pm というファイルです。 (MTディレクトリ)/plugins/CustomizedCommentfilter/lib/CustomizedCommentfilter/ にあります。
package CustomizedCommentfilter::Comment; use strict; use Data::Dumper; use MT::IPBanList; sub filter_comment { my($cb, $app, $entry) = @_; my $q = $app->param; my $ip = $app->remote_ip; return 0 unless $q->param('text'); my $text = $q->param('text'); return 0 unless $app->blog; my $blog_id = $app->blog->id; my $plugin = MT->component("CustomizedCommentfilter"); my $filter = $plugin->get_config_value('filter', 'blog:'.$blog_id); my $log = $plugin->get_config_value('logout', 'blog:'.$blog_id); my @filter = split('\r?\n', $filter); for (@filter) { if ($text =~ /$_/) { if ($log) { $app->log($plugin->translate('filtered [_1]', $_)); _add_to_ipbanlist($blog_id, $ip); } return 0 ; } } return 1; } sub _add_to_ipbanlist { my ($blog_id, $ip) = @_; unless (MT::IPBanList->load({ blog_id => $blog_id, ip => $ip })) { my $ban = MT::IPBanList->new; $ban->blog_id($blog_id); $ban->ip($ip); $ban->save or die $ban->errstr; } } 1;
この変更を加えると、「CustomizedCommentfilter」プラグインに設定したNGワードを含んだコメントを、問答無用で禁止IPアドレスに登録しますので、くれぐれも取り扱いにはご注意ください。
ところで、上記のソースを表示するにあたって「MovableTypeが自動的に入れる改行」という記事が大変参考になりました。 ありがとうございました。