WikiBack - FSWikiLite[に|で]TrackBack & Comment
ねらい
FSWikiLiteの各ページで、TrackBackを受信できるようにしたい。
また、wikiに併設したウェブ日記にTrackBack受信機能をつけるために、wikiを利用したい。
付加的な機能として、コメントプラグインとしても使えるような拡張を考えている。(blosxomのwritebackプラグインのよう?)
TrackBack送信機能は、今のところ興味ない・必要ないと考えている。代りに拙作「PingProxy HTA Client」(デスクトップ用の、TrackBack送信専用アプリ)が使える。
補足
WikiBackという名前は、ここで紹介している特定の実装、「TrackBack受信とコメント機能のための実装群」を言い表しているだけで、技術的に新しい要素は特にありませんです。
方針
まず、やってくるTrackBack Pingは、リモートからwikiを編集(追記)する要求だと位置付ける。よって受信した情報はwikiデータとして取り込まれる。これは、本文とTrackBackの区別なく再編集が可能である事を意味している。
存在しないwikiページへのPingを受取った場合、新しいページを自動的に作る。これによって外部アプリのためのTrackBackサーバーとして機能するようになる。ただしオプションでこの動作を無効にできるようにする。フォームを直接返すように変更した。
FreeStyleWikiの開発方針にできるだけ反しない方法をとる。(データ互換性、拡張性の確保、前提条件をできるだけ作らない⇒プラグイン同士の依存関係はどうしても発生してしまうが…。)
実装
受信に関して、あおしまさんのYukiWiki?への実装とほぼ似通ったものになっていると思う。
setup.plにいくつか項目を追加したが、設定がなくても規定値で動作する。
TrackBackPing?プラグインv0.3との違い
何も考えずに作り始めて、あとになって存在に気付いた(当時v0.2)。よってこのFreeStyleWiki用の既存の実装との整合性は考えられていない。それよりは自分の考え・趣味を優先して作ることにしよう。
とはいえ少なくともプラグイン名として「trackback」は使えないということになりますでしょうか。
以下列挙
TrackBack idは、PATH_INFOから取得するv0.31とURIに互換性がある。エンコードされたページ名をさらに変換することはしない⇒MTで問題が起こる?これはping発信時のことなので、無関係。埋め込みRDF(TrackBack Autodiscovery)対応。v0.3も対応- (今のところ)対応するWikiページに直接追記する
- もし別ページにするなら、TrackBackPing?プラグインv0.2と書式を揃えるほうがいいと思う。
- 一覧ではリスト形式にしない。かわりに見出しをつけるので、アンカーが設定される。
- 受信日時はepochで保存する。そのほうがあとで再利用するときパースする手間が省ける。
- たとえばFooterにプラグインを仕込めば、全てのページでTrackBack Ping URLを表示するようになる。個別のページで受信可否を判定しない。ただし、特殊なページを除外する。
FSWikiLiteならではのつくり
主に2つのスクリプトから構成される。
- 受信用サーバ(tb.cgi)⇒ドキュメントFSWikiLite/プラグイン開発でいうところの「アクションスクリプト」
- プラグイン数点(plugin/ext_wikiback.pl)
- 拡張ライブラリ(lib/plugin_util.pl)
文字コード判定に関して、jcode.plではUTF-8に対応できない。これは困った問題である。Jcode.pmを使ってしまおうか。あるいはPingProxy(Webサービス)で対応とするか。
今後の課題
- UTF-8からの文字コード変換に対応する
- __mode=rssに対応する
- HEADメソッドでLast-Modifiedを返す?(__mode=rss関連)
- 各ページ毎の、コメント&TB一覧をRSSで取得?
- 「RECENT〜」のようなリストを出力する?
- TrackBackは別ページに保存する。この部分は「TB/ページ名」というように、TrackBackPing?プラグインv0.2の仕様を踏襲する。
- サニタイジングの強化。プラグインは基本的に禁止する方針。
wiki記法はどこまで認めるか…?(半角空白1文字のみの行の扱いなど) - 外部アプリケーションとの連携。具体的にはAkiary。
- GETでのTrackBackを受信する(MovableType? 2.x対応)
問題点を整理しよう
- GETのクエリからページを自動生成する部分に、根本的に問題がある。ホワイトリストやブラックリストを元に、フィルタリングを施さないと運用に支障をきたすというのは良くわかった。 - いしだなおと (2004-06-23 14:44:38)
- 粗悪なbotや、検索エンジンのキャッシュなどからやってくるとき、urlエンコードされた部分が壊れたuriを投げてくるケースが多い。 - いしだなおと (2004-06-23 14:47:05)
- サニタイズや整形にもう一工夫いる。データの保存形式との絡みも。 - いしだなおと (2004-06-23 14:51:18)
- TrackBackとコメントの切り分けを整理しなおす。 - いしだなおと (2004-06-23 14:52:19)
- __mode=rss対応したい。RSS 0.91のようなもの。 - いしだなおと (2004-06-23 14:54:21)
参考にした情報
- Blog Developer's Cookbook
- Aoshimak YukiWiki?
- FreeStyleWiki BugTrack?-plugin/46,108
- Discreet Blog
コメントとTrackBack
いしだなおと it@isnot.jp