Date: 2005-10-11
Tags: zope

COREBlog1.2.1がリリース

COREBlog1.2.1 がリリースされました。今回のリリースを境にメンテナンスモードに入ると言うことで、これまでの延長線上での機能追加はこれが最後になるようです。

ということで、さっそく今回のリリースで追加された コメントやトラックバックの追加前にフックメソッドを呼び出す 機能を使ってみました。

コメント追加前に コメントスパム の可能性があるかどうかをチェックして、 可能性がある場合は 要モデレート 状態にします。

../../_images/coreblog_buzzwords

今回はとりあえずNGワードを含む投稿をチェックすることにします。 まず、 COREBlogインスタンスのmethodsフォルダ(以下blog/methods)のプロパティーに buzz_words という名前のプロパティーを lines 型で追加します。 そして、プロパティーの値として行単位でNGワードを追加します。

自分は最初はpoker等を対象にしていたのですが、最近はきりがなくなってきたので href をNGワードにしてしまいました。

次に、以下のPythonスクリプトを beforeAddComment という名前で blog/methods フォルダに追加します。

## Script (Python) "beforeAddComment"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=d
##title=
##
try:
    if not d["moderated"]:
        return d

    buzz_words = container.getProperty("buzz_words")
    s = str(d).lower()
    for w in buzz_words:
        if s.find(w) >= 0:
            d["moderated"] = 0
            break
    else:
        d["moderated"] = 1

except:
    pass

return d

このへんのコードは lirisさんの記事 から頂いたものをCOREBlog1.2.1用に軽く修正 しています。ありがとうございます。

同様に beforAddTrackback というスクリプトを用意すれば同じ事が出来ます。

../../_images/coreblog_spams

結果、こんな感じでコメントスパムがフィルタリングされています。 チェックの付いていないやつがフィルタされたスパムです。

‥‥大杉。今日だけでコメントスパム投稿数 100件 って何?

.