コメントSPAM対策として、
・コメントのリンク先のURLを、ブラックリストを使ってBlockする
・そのURLブラックリストを「コメント通知メール」から1クリックで更新する。
という2つをやっていましたが、このブラックリストをtrackbackの方にも適用。
lib/MT/App/Trackback.pmの242行目あたりからに以下の行を追加。(赤い行を追加)
if (my $fixed = MT::Util::is_valid_url($url || "")) {
$url = $fixed;
} else {
return $app->_response(Error =>
$app->translate("Invalid URL '[_1]'", $url));
}
#############################################################
#From here
use FileHandle;
my %banned_url;
my $blacklist = "/usr1/okoshi/okoshi.org/WWW/tadashi/weblog/MT/URLblacklist\
.txt";
my $fh = FileHandle->new($blacklist) or die "$blacklist: $!";
while (<$fh>) {
chomp;
$banned_url{$_} = 1;
}
if ($banned_url{$url}) {
return $app->_response(Error => $app->translate("Error"));
}
my $ngword = "/usr1/okoshi/okoshi.org/WWW/tadashi/weblog/MT/ngword.txt";
my $fh2 = FileHandle->new($ngword) or die "$ngword: $!";
while (<$fh2>) {
chomp;
if($_ ne ""){
if ($excerpt) {
if( $excerpt =~ /$_/){
return $app->_response(Error => $app->translate("Error"));
}
}
if( $url =~ /$_/){
return $app->_response(Error => $app->translate("Error"));
}
}
}
#To here
#############################################################
require MT::TBPing;
return $app->_response(Error =>
$app->translate("This TrackBack item is disabled."))
if $tb->is_disabled;
$blacklistのところが、サーバー上でのURLブラックリストファイルの絶対PATHですな。さらに当サイトでは$ngwordのPATHのところに「NGワード」を入れております。このPATHで指定されたファイルに一行一単語ずつ、poker viagraなどと書いていけば、trackback元のURLやexcerpt記述内にそういう単語があればtrackback拒否します。
これで快適。
この記事に対するコメント