はじめに

このページには nicky! へ Trackback を実装する方法が記されています。

サーバーチェック

設置するサーバを選びます。ごめんなさい。
まずは、ご利用されているサーバーで本CGIが動作するかチェックするCGIを設置してください(所要時間約2分)。

  1. tbcheck.cgiをダウンロードする

    このリンクを右クリックして、対象をファイルに保存→ファイルの種類=全て、と指定して、ファイルをダウンロード後、ファイルネームを tbcheck.cgi に修正します。

  2. tbcheck.cgiをサーバに設置する

    nicky.cgiと同じフォルダにバイナリモードでtbcheck.cgiを転送し、パーミッションをnicky.cgiと同じ値に設定します。

  3. tbcheck.cgiを実行する

    IE等のブラウザから以下のようにURIを指定し、tbcheck.cgiを呼び出します。

    http://設置したURI/tbcheck.cgi

    実行結果(最後の行に表示)に『inst = 5, OK』と表示されればオッケーです。

    参考までに、OKの場合の表示例NGの場合の表示例

    Jcode / LWPが実装されていない([1]と表示されずに[]と表示される)サーバをご利用の方はJcode / LWPライブラリの追加方法を参考にしてください。

nicky!用TrackbackCGIの設置

独立して動作する Trackback用のCGIを利用する事にしました。
ベースとなるCGIは、MovableType の作者より配布されている tb-stanaloneで、 これを日本語を扱えるようにしたtb.cgiに手を加えて利用する事にしました。
上記はベースCGIの利用規約、ArtisticLicenseに基づいた表示です。

※ここの記事を元に、上記サイト運営者様、またはその関係者の方々へ質問等せぬようお願いいたします。

  1. ダウンロード&設置

    以下の手順に従ってnicky!用のTrackback CGI、tb.cgiをダウンロード&サーバへ設置します。

    • nicky!用tb.cgiのダウンロード

      ここを右クリックして対象をファイルに保存→ファイルの種類=全てと操作し、ダウンロードします。

    • perl/pathの書き換え

      tb.cgiのperlのパスは#!/usr/local/bin/perlとなっています。
      設置されるサーバに合わせてパスを書き換えてください。

      このヘンはnicky.cgiと同じなので詳細は省略します。

    • tb.cgiをサーバに設置

      例によってEUCスクリプトで配布している為、サーバにはバイナリ転送、もしくは漢字変換=無を指定してサーバのnicky.cgiと同じフォルダに設置します。
      設置後はtb.cgiのパーミッションをnicky.cgiと同じ値に設定します。

  2. パスワードの設定

    Trackbackの送信や、受けたTrackbackを削除する操作を行う為、管理用PCを登録する必要があります。

    以下のようにURIを指定し、先ほど設置した tb.cgi へパスワードを設定します。

    http://設置したURI/tb.cgi?__mode=PassWord
    ※tb.cgi?__mode=の『__』はアンダーバー2つです。

nicky!の設定

Trackbackを表示させるには、nicky!をカスタマイズする必要があります。
以下の手順に従ってカスタマイズしてください。

  1. nicky!のユーザーカスタマイズ画面を呼び出す

    以下のようにURIを指定します。

    http://設置したURI/nicky.cgi?UserCustom

  2. 『トラックバック($tbTagに入ります)』の欄に以下のタグをコピー&ペーストする。


    ※『&tb_id』が気になる方は『&tb_id』でもご利用いただけます。
      どちらも同じ動きです。

  3. ユーザーカスタマイズをご利用されていない方

    Customボタンクリックで作業完了です。

  4. ユーザーカスタマイズをご利用の方

    nicky.cgi?UserCustomの各レイアウトパターンの末尾に$tbTagを追加してください。
    ※$tbTagは、記事のヘッダ($UserCustomHead) / 記事のフッタ($UserCustomFoot) / コメントのカスタマイズでも使用可能です。

以上で作業完了です。

早速実験してみる

Trackbackを使ってみましょう。

  • 新規作成ボタンクリックで記事を作成する。

    tb.cgiが実装されている環境では、『日記作成/編集画面』に『Trackbackを受け付ける』チェックボックスが表示されます。

    チェックを入れ、書込ボタンをクリックしてみましょう。以下のような表示が行われているはずです。

    Trackback(0)

    『Trackback(0)』をクリックし、トラックバックの画面を表示させてみてください。

  • Trackbackを送ってみる

    トラックバックの画面に、『以下のメッセージは管理用PCからのみ表示されます』のフィールドにある、『送信先URI』に以下のURLをコピー&ペーストして、『Send』ボタンをクリックします。

    テスト用Trackback送信先URI(nicky!) →  対象記事(nicky!)

    上記はテスト用のページなので、失敗されても構いません。

注!テスト前に他所様のサイトめがけて Trackback を送信するのは止めときましょう!

初期設定にも『トラックバック関連』の項が表示されるようになっているので、見といてください。

nicky!用tb.cgiの使い方

見て判りそうな機能については記載していません。

  • パスワードの設定

    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』ファイルを削除すれば初期状態に復旧します。

    以下は各フィールドと使用可能な変数の一覧です。

    • Header

      <html>から始まる画面上部に表示される部分の表示を定義します。

    • Ping Message

      Trackbackの送信先を表示する内容を定義します。
      以下に使える変数名を記します。

      変数名内容
      $url_pingTrackback送信先URI
      $url_nickynicky!のURI
      $titlenicky!のタイトル
      $msgnicky!の概要

    • Footer

      画面の下部に表示する内容を定義します。
      以下に使える変数名を記します。

      変数名内容
      $url_pingTrackback送信先URI

    • Trackback

      受信したTrackbackを表示するフィールドを定義します。
      以下に使える変数名を記します。

      変数名内容
      $urlTrackback送信元URI
      $tb_title記事のタイトル
      $blog_nameページのタイトル(ウェブログ)
      $excerpt概要
      $timeTrackback受信時刻
      $delete削除用リンク(管理用PCのみに表示)

    • Admin

      管理用PCからアクセスされた時にのみ表示されるメッセージです。
      以下に使える変数名を記します。

      変数名内容
      $url_nicky該当記事へのURI
      $page_titleページのタイトル
      $title記事のタイトル
      $msg記事の該当
SPAM対策

簡単なものですがSPAM対策つけました。
予め、ドメインネーム / IPアドレス / URI の何れかを登録しておき、Trackbackを受信した際に左記の項目と比較し、一致した場合は受信を拒否します。

  1. 拒否情報の登録

    nicky.cgi?editrejectとURIを指定し、nicky!の拒否情報登録画面を呼び出します。

    • ドメインネームを指定する

      例えば、ドメインhoge.hoo.barからのTrackbackを拒否したい場合は

      hoge.hoo.bar
      

      と記載します。
      また、『*』を指定する事でワイルドカード指定が可能です。(*hoge.hoo.bar等)

    • IPアドレスを指定する。

      IPアドレス指定は、ドメインを持たないサーバよりTrackbackを送られる場合に有効です。普通に『192.168.1.3』や『192.168.*』等と指定。

    • URIを指定する。

      特定のサイトやページから送られてきた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

    データはいくつでも登録できますが、判定処理時間に比例します。
    データの登録を済ませたら、テストしてみましょう。

  2. テストしてみる。

    次の方法でテストできます。
    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

SPAM対策その2

tb.cgi2008/01/20版より、数種類の強烈なタイプのスパムに合い、CGIで自動的に拒否するように対策しました。
いたちごっこのようなもので、次から次へと新種が出てくるのでしょうけど(げっそり)

また、既に削除するのがイヤになってしまうくらいスパムを受けてしまっている方用に、ある程度まとめて削除する機能を追加しました。ここではこの機能について記載します。

  1. 一括spam機能を実行する前に

    tb.cgiを設置したフォルダにある「tbdir」内のデータ全てをバックアップしてください。ftpでPCに転送する場合は、必ずバイナリ転送で行ってください。

    これは、tb.cgiが本来削除すべきではないデータを削除してしまった、或いは削除中にサーバー系のトラブルが発生してしまった場合等の対処です。

  2. spamメッセージ一括削除機能の呼び出し方

    以下のようにWEBブラウザからtb.cgiを呼び出してください。

    http://設置したURI/tb.cgi?__mode=spamlist

    スパムと判断したデータを検出した場合は、表示用のタグ(別窓で開きます)と削除用のタグ(別窓で開かない)を表示します。削除タグをクリックするとスパムと判断したデータを削除します。

    表示用のタグで表示される内容のうち、全てのデータを削除するのではありません。表示されているタグで表示される内容のうち、スパムと判定したデータのみ削除します。
    削除の対象となるデータのみ表示しようかとも考えたのですが、その機能はちょっと後回しにします。現状は削除の対象となる日のデータのみを表示します。

    スパムと判断したデータがなくなると「spam data 0」と表示されます。すみません日本語じゃなくて。

よくある質問とその答え

tbckeck.cgiの実行結果がOKとなっているのが前提です。
tbckeck.cgiの実行結果がNGの場合はサーバーの構成上Trackbackの実装は難しいです。

  1. Trackback実装後、過去ログ(HTML)にTrackback受信件数が表示されない。

    お手数ですが初期設定→過去ログ関連→過去ログをHTMLに保存しない→SETUPボタンクリック、初期設定→過去ログ関連→過去ログをHTMLに保存する→SETUPボタンクリック、と操作してください。
    (1度だけ実行していただければオッケーです)

    それでも過去ログ(HTML)にTrackbackの受信件数が反映されない場合は、ブラウザのキャッシュと思われます。
    強制リロード(IE/NNの場合は[CTRL]ボタンを押しながらリロードボタンクリック)してみてください。


(raelian@din.or.jp)