このページには nicky! へ Trackback を実装する方法が記されています。
設置するサーバを選びます。ごめんなさい。
まずは、ご利用されているサーバーで本CGIが動作するかチェックするCGIを設置してください(所要時間約2分)。
このリンクを右クリックして、対象をファイルに保存→ファイルの種類=全て、と指定して、ファイルをダウンロード後、ファイルネームを tbcheck.cgi に修正します。
nicky.cgiと同じフォルダにバイナリモードでtbcheck.cgiを転送し、パーミッションをnicky.cgiと同じ値に設定します。
IE等のブラウザから以下のようにURIを指定し、tbcheck.cgiを呼び出します。
http://設置したURI/tbcheck.cgi
実行結果(最後の行に表示)に『inst = 5, OK』と表示されればオッケーです。
Jcode / LWPが実装されていない([1]と表示されずに[]と表示される)サーバをご利用の方はJcode / LWPライブラリの追加方法を参考にしてください。
独立して動作する Trackback用のCGIを利用する事にしました。
ベースとなるCGIは、MovableType の作者より配布されている
tb-stanaloneで、
これを日本語を扱えるようにしたtb.cgiに手を加えて利用する事にしました。
上記はベースCGIの利用規約、ArtisticLicenseに基づいた表示です。
※ここの記事を元に、上記サイト運営者様、またはその関係者の方々へ質問等せぬようお願いいたします。
以下の手順に従ってnicky!用のTrackback CGI、tb.cgiをダウンロード&サーバへ設置します。
ここを右クリックして対象をファイルに保存→ファイルの種類=全てと操作し、ダウンロードします。
tb.cgiのperlのパスは#!/usr/local/bin/perlとなっています。
設置されるサーバに合わせてパスを書き換えてください。
このヘンはnicky.cgiと同じなので詳細は省略します。
例によってEUCスクリプトで配布している為、サーバにはバイナリ転送、もしくは漢字変換=無を指定してサーバのnicky.cgiと同じフォルダに設置します。
設置後はtb.cgiのパーミッションをnicky.cgiと同じ値に設定します。
Trackbackの送信や、受けたTrackbackを削除する操作を行う為、管理用PCを登録する必要があります。
以下のようにURIを指定し、先ほど設置した tb.cgi へパスワードを設定します。
http://設置したURI/tb.cgi?__mode=PassWord
※tb.cgi?__mode=の『__』はアンダーバー2つです。
Trackbackを表示させるには、nicky!をカスタマイズする必要があります。
以下の手順に従ってカスタマイズしてください。
以下のようにURIを指定します。
http://設置したURI/nicky.cgi?UserCustom
※『&tb_id』が気になる方は『&tb_id』でもご利用いただけます。
どちらも同じ動きです。
Customボタンクリックで作業完了です。
nicky.cgi?UserCustomの各レイアウトパターンの末尾に$tbTagを追加してください。
※$tbTagは、記事のヘッダ($UserCustomHead) / 記事のフッタ($UserCustomFoot) / コメントのカスタマイズでも使用可能です。
以上で作業完了です。
Trackbackを使ってみましょう。
tb.cgiが実装されている環境では、『日記作成/編集画面』に『Trackbackを受け付ける』チェックボックスが表示されます。
チェックを入れ、書込ボタンをクリックしてみましょう。以下のような表示が行われているはずです。
Trackback(0)
『Trackback(0)』をクリックし、トラックバックの画面を表示させてみてください。
トラックバックの画面に、『以下のメッセージは管理用PCからのみ表示されます』のフィールドにある、『送信先URI』に以下のURLをコピー&ペーストして、『Send』ボタンをクリックします。
テスト用Trackback送信先URI(nicky!) → 対象記事(nicky!)
※上記はテスト用のページなので、失敗されても構いません。
注!テスト前に他所様のサイトめがけて Trackback を送信するのは止めときましょう!
初期設定にも『トラックバック関連』の項が表示されるようになっているので、見といてください。
見て判りそうな機能については記載していません。
http://設置したURI/tb.cgi?__mode=PassWord
もしパスワードを忘れてしまった場合は、tb.cgiを設置したフォルダにあるtb_admin.cgiファイルを削除後、本コマンドを実施してください。
『tb.cgi?__mode』の『__』は、アンダーバー2つです。
http://設置したURI/tb.cgi?__mode=custom
徹底したカスタマイズができます。遊び倒してください。
初期状態でもカスタマイズ内容が表示されますので、簡単に変更できます。
もし、何だか判らなくなってしまった場合は、tb.cgiと同じフォルダにある『tb_custom.cgi』ファイルを削除すれば初期状態に復旧します。
以下は各フィールドと使用可能な変数の一覧です。
<html>から始まる画面上部に表示される部分の表示を定義します。
Trackbackの送信先を表示する内容を定義します。
以下に使える変数名を記します。
変数名 | 内容 |
$url_ping | Trackback送信先URI |
$url_nicky | nicky!のURI |
$title | nicky!のタイトル |
$msg | nicky!の概要 |
画面の下部に表示する内容を定義します。
以下に使える変数名を記します。
変数名 | 内容 |
$url_ping | Trackback送信先URI |
受信したTrackbackを表示するフィールドを定義します。
以下に使える変数名を記します。
変数名 | 内容 |
$url | Trackback送信元URI |
$tb_title | 記事のタイトル |
$blog_name | ページのタイトル(ウェブログ) |
$excerpt | 概要 |
$time | Trackback受信時刻 |
$delete | 削除用リンク(管理用PCのみに表示) |
管理用PCからアクセスされた時にのみ表示されるメッセージです。
以下に使える変数名を記します。
変数名 | 内容 |
$url_nicky | 該当記事へのURI |
$page_title | ページのタイトル |
$title | 記事のタイトル |
$msg | 記事の該当 |
簡単なものですがSPAM対策つけました。
予め、ドメインネーム / IPアドレス / URI の何れかを登録しておき、Trackbackを受信した際に左記の項目と比較し、一致した場合は受信を拒否します。
nicky.cgi?editrejectとURIを指定し、nicky!の拒否情報登録画面を呼び出します。
例えば、ドメインhoge.hoo.barからのTrackbackを拒否したい場合は
hoge.hoo.bar
と記載します。
また、『*』を指定する事でワイルドカード指定が可能です。(*hoge.hoo.bar等)
IPアドレス指定は、ドメインを持たないサーバよりTrackbackを送られる場合に有効です。普通に『192.168.1.3』や『192.168.*』等と指定。
特定のサイトやページから送られてきたTrackbackを拒否したい場合に有効。
http://hoge.foo.bar/abc/*
と登録します。
登録が済んだら<write>ボタンをクリックし、データを保存します。
データは1行につき1つです。こんな↓感じで
192.168.1.* hoge.foo.bar abc.def.ghi http://hoge.foo.bar/abc/ 192.168.100.40
データはいくつでも登録できますが、判定処理時間に比例します。
データの登録を済ませたら、テストしてみましょう。
次の方法でテストできます。
tb.cgi?__mode=testrej&ip=192.168.1.3
tb.cgi?__mode=testrej&hn=hogehoge.foo.bar
tb.cgi?__mode=testrej&url=http://hoge.foo.bar/abc/tb.cgi
複合指定もできます。
tb.cgi?__mode=testrej&ip=192.168.1.3&hn=hogehoge.foo.bar
tb.cgi?__mode=testrej&ip=192.168.1.3&hn=hogehoge.foo.bar&url=http://hoge.foo.bar/abc/tb.cgi
tb.cgi2008/01/20版より、数種類の強烈なタイプのスパムに合い、CGIで自動的に拒否するように対策しました。
いたちごっこのようなもので、次から次へと新種が出てくるのでしょうけど(げっそり)
また、既に削除するのがイヤになってしまうくらいスパムを受けてしまっている方用に、ある程度まとめて削除する機能を追加しました。ここではこの機能について記載します。
tb.cgiを設置したフォルダにある「tbdir」内のデータ全てをバックアップしてください。ftpでPCに転送する場合は、必ずバイナリ転送で行ってください。
これは、tb.cgiが本来削除すべきではないデータを削除してしまった、或いは削除中にサーバー系のトラブルが発生してしまった場合等の対処です。
以下のようにWEBブラウザからtb.cgiを呼び出してください。
http://設置したURI/tb.cgi?__mode=spamlistスパムと判断したデータを検出した場合は、表示用のタグ(別窓で開きます)と削除用のタグ(別窓で開かない)を表示します。削除タグをクリックするとスパムと判断したデータを削除します。
表示用のタグで表示される内容のうち、全てのデータを削除するのではありません。表示されているタグで表示される内容のうち、スパムと判定したデータのみ削除します。
削除の対象となるデータのみ表示しようかとも考えたのですが、その機能はちょっと後回しにします。現状は削除の対象となる日のデータのみを表示します。
スパムと判断したデータがなくなると「spam data 0」と表示されます。すみません日本語じゃなくて。
tbckeck.cgiの実行結果がOKとなっているのが前提です。
tbckeck.cgiの実行結果がNGの場合はサーバーの構成上Trackbackの実装は難しいです。
お手数ですが初期設定→過去ログ関連→過去ログをHTMLに保存しない→SETUPボタンクリック、初期設定→過去ログ関連→過去ログをHTMLに保存する→SETUPボタンクリック、と操作してください。
(1度だけ実行していただければオッケーです)
それでも過去ログ(HTML)にTrackbackの受信件数が反映されない場合は、ブラウザのキャッシュと思われます。
強制リロード(IE/NNの場合は[CTRL]ボタンを押しながらリロードボタンクリック)してみてください。
(raelian@din.or.jp) |