Plone CaptchaをCOREBlog2のコメントに利用してみる

いっつも「これでいいのか?」って思いながら。

まぁ、あれです。ソースとか読めなくて禿しく辛いんですが、私の場合は何でもかんでも「試す」のが好きなわけで、「使う」のが好きなのかどうかは二の次なのです。

で、このエントリなんですが、一度書いた後に試したらできてなくて、非公開にしてからもう一度調べ直すという、とてもかっこわるいことをしています。一度調べ始めるとキリがつくまで見て回るのがたたって結局今日も3時就寝になりそうな悪寒。最近4時間半以上寝てないし、タバコも吸いまくりなので、たぶん私は結構早い段階で肺ガンで死ぬと思います。

そんな私のことはどうでもいいのですが、とりあえず調べた事・やった事を時系列で並べていってみることにします。

  1. まずは http://captchas.netにいって、アカウントを作ります。そうするとメール経由でname(id)とsecret keyがもらえます。
  2. Plone Captchaをダウンロードして通常のZope Productと同じようにインストール…
  3. と、待ってください。その前に「Zope-instance/Products/PloneCaptcha/config.py」を開いて、 http://captchas.netからもらったnameとsecret keyを設定しておきます。
  4. Zopeのリスタート→Ploneの「プロダクトの追加と削除」からインストール、と定番の道筋をたどります。
  5. 「Zope-instance/Products/PloneCaptcha/README.txt」を読むと、まずはページテンプレートにCaptchaマクロをぶち込め、と書いてあるので「portal_skins/COREBlog2/cbcomment_form」の適所に(私はクッキーボタンの直前に書きました)以下のコードをぶち込んでやります。
    <div metal:use-macro="here/captcha/macros/edit" />
    これだけじゃ寂しいという人はcaptchaのテストコードから以下をぱくってきます。
          <div class="field"
               tal:define="error errors/captcha| nothing;"
               tal:attributes="class python:test(error, 'field error', 'field')">

              <label i18n:translate="label_captcha_help">Verification Code</label>
              <div class="formHelp" i18n:translate="help_plone_captcha">
                 This helps us prevent automated spamming.
              </div>

              <div tal:content="error">Validation error output</div>
              <div metal:use-macro="here/captcha/macros/edit" />
          </div>
  6. で、README.txtは、次にフォームのメタデータファイルにvalidatorとしてvalidate_captchaを指定しろと言っておられる。はて…。さて…。いかがしよう…。validaterがどういうものか抽象的な概念はうっすらと持っている。しかし、フォームのメタデータとかいわれてもさっぱりである。こういうときはボケーっとZMIを眺めてみるのがよい、というのが私の経験則としてある。よって、ボケーっとZMIを眺めていると…。あった。ミラクルである。奇跡である。自分でも信じられない。「portal_form_controller」の中に「validation」とかいう、まさしくビンゴくさい方が鎮座していらっしゃっいました。入力の仕方は何となく雰囲気で「Template」に「cbcomment_form」、「Validators」に「validate_captcha」をしてやりました。…と、ここで「できた」と勘違いしてしまったのが寝不足の始まりです。

ここでの私のミスは、portal_form_controllerというのは確かにvalidatorを設定してくれるのですが、「フツーの」Page Templateじゃダメだという点でした。設定の対象となるのは「Controller」 Page Templateとか「Controller」 Python Scriptとかなのであって、こいつらは「フツーの」Page Templateとはちょっと違った人たちなのだそうです。このことはportal_form_controllerのdocumentに書いてありました(ということに気づくのが遅すぎるという罠)。

で、ここからが無知な私の無駄なあがきの連続で、cbcomment_formを何とかしようと必死になっていたのが運の尽きでした。結果から言うといじるのは「cbentry_view」と「cbcomment_preview」なのでした。ここまでたどりつくために何度コメントをテストしたことか…。この二つに、validatorとしてvalidate_captchaを設定してやるとできるようです(というかできると信じたい)。

さてそれじゃあどうやって「cbentry_view」と「cbcomment_preview」にvalidate_captchaを設定してやるのかということに考えが向かうわけですが、一般に、Controller Page Templateにvalidatorを設定するにはいくつかのアプローチがあるようです。

 

ファイルシステム上のテンプレート.メタデータをいじくる
ファイルシステム上のファイルをいじることができる場合は、ファイルを直接編集する事でvalidatorを設定できる
060411-1←こんなふうにcpt(controller page templete)ファイルに「.metadata」をひっつけたやつで設定する

060411-2
 「validators = 」のあとにvalidatorを指定する。複数ある場合はカンマ区切りで羅列する
portal_form_controllerをいじる
portal_form_controllerのvalidatorタブに行くと設定画面がある(関連アイテム参照)。
Controller Page Templateオブジェクトをいじる
 「cbentry_view」や「cbcomment_preview」はController Page Templateオブジェクトなわけで(ファイルシステム上のファイルを見ると拡張子が.cptとなっている)、これらのオブジェクトをZMI上で見ると、フツーのPage Templateと違って、「Validation」やら「Actions」というタブがあるのでここで設定してやる

060411-4

設定は直感的にわかるかと思います。今回はvalidatorを設定しただけでしたが、validatorが返す値(基本的にsuccessとfailure?)によってその後の挙動を設定したり(Actions)、そのほかにもオブジェクトの種類やボタンの名前やらで制御したりもできるようです。

今回はお手軽に、 「cbentry_view」と「cbcomment_preview」の各オブジェクトのValidationタブで設定しました。ということで、お決まりなんですが「これでいいんだろうか…」。

でもどうせウチのサイトにコメントなんてほとんど来ないんだから、コメントスパム様いらっしゃいまし~くらいのスタンスで行った方が賑わいがあっていいんじゃないかと、そんなふうにも思っちゃう今日この頃。

この時間まで私を起こしていてくれた、くるりとCoccoの音楽に感謝しつつ眠りにつく事にしよう。

追記:このエントリは自分の頭の中で考えた事を時系列で書いているのでわかりにくいかもしれません。COREblog-enのMLにて手順をまとめる機会があったのでとりあえずリンクを貼っておきます。つたない英語ですが、手順そのものはエントリを参照するよりもわかりやすいと思います。

 

portal_form_controller

トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/plone-captcha-and-coreblog2/tbping

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

投稿者 Anonymous User 投稿日時: 2006年08月06日 17時38分

ご苦労様です。ではテスター代わりにコメント。

成功するかな?

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

投稿者 takanori 投稿日時: 2006年08月06日 17時38分

間違った Verification Code を入れてみよう。
はれられるかな?

ちゃんとはねられました!!

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

投稿者 nyusuke 投稿日時: 2006年08月06日 17時38分

>どなたか

テストありがとうございます。反応があるのはとてもうれしいです。

>たかのりさん

演奏会がんばってください。
あんどラディッシュによるついでに私の演奏会聴きに来ちゃったりしてください(・∀・)

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

投稿者 しみずかわ 投稿日時: 2006年08月06日 17時38分

おお~。captcha画像はcaptcha.netに取りに行ってるんですね。

Re:Plone CaptchaをCOREBlog2のコメントに利用してみる

投稿者 nyusuke 投稿日時: 2006年08月06日 17時38分

>清水川さん

いいですよね。楽で。
captcha関連の作業はcaptcha.netのアカウント作成とconfig.pyの編集だけですから。

コメント入力に Captcha

投稿者 takalog 投稿日時: 2006年08月06日 17時38分
2日ほど、恐ろしい量のコメントスパムがこの Blog に来ました。 というわけで、残念ですが Captcha 画像を使っての認証を行うようにしました。 使用したプロダクトは Plone Captcha で、手順は Plone C...

コメントスパム対策 - 認証コード入力欄を追加

投稿者 s@s 投稿日時: 2006年08月06日 17時38分
  Plone CaptchaをCOREBlog2のコメントに利用してみる — nagosui.org このところ、あまりにも大量のコメントスパムが届くので、上記サイトの内容をそのまま使わせていただいて、コメント記入欄に、認...

コメント スパム 対策

投稿者 GwBS 投稿日時: 2006年08月06日 17時38分
最近、コメントとトラックバックのスパムが激しい。消して回るのも疲れてきたので、先人の英知をありがたく拝借させていただきました。Plone CaptchaをCOREBlog2のコメントに利用してみるhttp://postaria.com/...
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

このBlogについて
Plone, Zope, Pythonなどのトピックについてのメモです。
カテゴリ
Plone (100)
Plone Products (23)
COREBlog2 (31)
COREBlog1 (29)
ReadingCOREBlog (7)
Zope (66)
Turbogears (18)
Django (12)
Python (27)
Linux (32)
Nagosui (13)
Design (34)
Misc (49)
moblog (5)
Mac (1)
最近のエントリ
MacOSXにPython2.4をインストール nyusuke 2009年03月21日
Ploneを3.1から3.2へアップグレード nyusuke 2009年03月01日
Plone3.2+その他もろもろのレシピ nyusuke 2009年03月01日
さらばファッキンKDDI nyusuke 2008年12月10日
最近のコメント
Re:WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007年06月01日
Re:WebデザイナーのためのDjangoはじめの一歩 pateo 2007年05月31日
Re:東海Python Workshop 01終了 nyusuke 2007年05月31日
Re:東海Python Workshop 01終了 kfuruhata 2007年05月30日