電網工房・匠のWikiFarmでのHikiのspam対策の改造
ここしばらく電網工房・匠のWikiFarmにて、忘れたときに備えた記録 - Hikiへのスパムの改造に手を加えて適用しております。AタグとBBcodeの入った書き込みを排除するだけで、spam投稿を消して回る必要が飛躍的になくなり、たいへん心安らかになりました。
特定のキーワードを排除すればスパムの大半は排除できるというのは、自前の掲示板などではずいぶん昔から導入して効果があったのですが、Hikiについては、コードを追いかけるのが面倒で放置していたんですよね。Spam対策のプラグインを作るといった話題のあったblogもありましたし。
しかしまあ、いいかげん二万ページ以上にもなりますと、監視もおっくうです。特にBBSプラグインでのコメント投稿のSpamを一々元に戻すのにはウンザリしていました。そこで久しぶりに検索してみて回って、スパム対策の改造をみかけたので入れてみたのでした。
しかし元々のコードは、通常の[編集]での時にしか機能しないようで。メソッド名からすると、てっきり hiki/command.rb のcmd_saveメソッドで全部まとめて弾けるかと思ってたら、そうもいかんようでした。しかたないので /misc/plugin/trackback.rb の trackback_post と /misc/plugin/comment.rb の comment_post にも同様のものを入れてみました。もっとまとめて処理できる適切な場所とか、フックとか、あるのかもしれませんけどね。
うちでは、command.rbのは以下のようにしてます。antispamary という配列に条件を仕込んでメンテナンス性をすこし上げといたのと、キーワードにhttpを含む時にもスパムと判定するようにしたのが改変点ですね。あとページのWikiNameを入れるようにしました。
unless @plugin.admin?
antispamary = [ /\[\/URL/i, /viagra/i, /<a>]*href=[^>]*>/i, /ringtone/i , /xxx/i ]
case title+text+@params['keyword'][0].to_s
when *antispamary
open(%[|mail -s "Anti spam on Hiki" sf\@trpg.net], "w") do |f|
f.puts "page: #{page}"
f.puts "text:\n#{text}\n----\n\n"
f.puts "keyword:\n----\n#{@params['keyword'][0].to_s}\n----"
end
@cmd = 'edit'
return cmd_edit( page, text, "It's NG-Word!!!Are you SPAMMER!?")
end
case @params['keyword'][0].to_s
when /http/
open(%[|mail -s "Anti spam on Hiki" sf\@trpg.net], "w") do |f|
f.puts "REMOTE_ADDR : #{ENV['REMOTE_ADDR']}"
f.puts "page: #{page}"
f.puts "text:\n#{text}\n----\n\n"
f.puts "keyword:\n----\n#{@params['keyword'][0].to_s}\n----"
end
@cmd = 'edit'
return cmd_edit( page, text, "Are you SPAMMER!?")
end
end
最近のコメント
14時間 43分前
15時間 59分前
2日 15時間前
2週 5日前
2週 5日前
3週 2日前
4週 5日前
6週 2時間前
7週 7時間前
8週 2日前