COREBlog2簡易spam-filter¶
コメント追加の許可設定の件を調べようと思ったら、コメント追加が可能になったとたんspamコメントが10件以上投稿されていた。ムカツク。とりあえず、COREBlog1のBuzzWordsチェック機構をCOREBlog2用に改造してチェックするようにしたので、これで様子見。
追加コードは意外と少なくて、portal_skins/COREBlog2/validateCommentを以下のようにカスタマイズする。これでBuzzWordsに引っかかった項目がエラーとなって投稿できない。
for key in ['title', 'body', 'author', 'email', 'url']:
if REQUEST.has_key(key):
m = context.validateBuzzWords(REQUEST[key])
if not m:
state.setError(key, 'Pleae remove NG words.', new_status='failure')
if state.getErrors():
いちおうvalidateBuzzWordsも載せておく。これもportal_skins/custom等に置いて、引数textを取るようにしておく。今回の用途ではmoderated変数が用をなしていないけど、まぁいいか。
buzz_words = (
'casino',
'poker',
)
moderated=True
try:
if not moderated:
return moderated
s = str(text).lower()
for w in buzz_words:
if s.find(w) >= 0:
moderated = False
break
else:
moderated = True
except:
pass
return moderated