showrssプラグインの時間解釈がおかしい†
- ページ: BugTrack
- 投稿者: merlin
- 優先順位: 重要
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2003-09-04 (木) 23:03:05
- バージョン: 1.7(1.4)
メッセージ†
showrss プラグインで recent表示をすると dc:dateが正常に解釈されずにおかしくなっているようです。
- なんか DC タグ が 実装されてないような... うーむ -- merlin
- 困りましたね。showrss.inc.phpは、RSSの<description>内を時刻とみなしてstrtotimeでタイムスタンプを得る仕掛けになっています。これはたぶんrss.inc.phpが<description>内に時刻を入れる仕様だったからだと思うんですが… -- ぱんだ
- showrssを、<dc:date>を見るように修正して、pukiwiki.php?cmd=rss10で呼び出すようにすれば確実かなと。 -- ぱんだ
- ちょっとTryしたんですが、無限ループに入ったぁ(笑)。まだ、PHPが良く分かっないことを露呈.. 次期バージョンでは、RSS関連を1つのクラスにするのがいいのかも.. 他の方がやっているのでは、XML Ext.使っているのと パターンマッチでやっているのがある模様。RSS.0.91/2.0系列と RDF/RSS1.0系列の両方サポートになるので独自クラスになりそう。参考merlin:RSS/Class -- merlin
- 当面としては、DCタグ未対応を表明して recent形式を無しにするのかなぁ? -- merlin
- showrssは、proxy対応ってのも残ってたんでしたっけ? -- merlin
- $trackback=1のときに、#showrssで表示される全部のURLにPingを打つのはまずいんじゃない? --
- showrssで表示しても、そのページのタイムスタンプは変わらないし、trackbackがping打つのは文書更新時だったはず(実際の動作は未確認)なのでそれって起こらないんじゃない? -- merlin
- tb_sendは内部でページソースをconvert_html()して、できたHTMLソースから<a>タグのhref属性の値を抽出し、片っ端からPingを打とうとする仕掛けになっています。#showrssが出力するURLも対象になります。URLの指すページに<rdf:RDF>が埋め込まれていれば実際にPingを打ってしまいます。これは…まずいですね。 -- ぱんだ
- 場当たり的なパッチ(行頭#および表内の#をプラグインとみなさないように、空白を1個入れる XD) お試しください。 -- ぱんだ
diff -u -r1.13 trackback.php
--- trackback.php 3 Sep 2003 05:53:45 -0000 1.13
+++ trackback.php 11 Sep 2003 00:11:43 -0000
@@ -84,6 +84,7 @@
set_time_limit(0); // 処理実行時間制限(php.ini オプション max_execution_time )
+ $data = join("\n",preg_replace('/(^|\|)#/','$1 #',explode("\n",$data)));
$data = convert_html($data);
// convert_html() 変換結果の <a> タグから URL 抽出
- 仕様的から見れば、まずいものでも無いと思います。ダイナミックに生成された結果であっても、その時点でリンクしたのは事実なわけですから。ただ、PukiWiki として、スタティックな定義内容に対して、TrackBack を送信するものとして、各種プラグインなどにより、動的に生成した内容に関しては、取り扱わないこととする。と決めるかどうか?だと思いますが。この内容で、動的な値に関しては取り扱わないこととするのであれば、それは、たぶん、必ずTrackBack を送っても、どこにもリンクの痕跡が無いじゃないか?ということを心配しての内容なのだろうなぁ?と解釈しますが、そうなってくると、pcomment などでのコメントが増殖した際に、ページを分けたいんだけど。しかも自動で。なんてもんも同罪として扱うべき範囲になってくる思っています。なので、どういう場合は、どうするのが適切なのだろう?なんですけどねぇ。-- upk
- Trackback Ping を送って、価値のある期間が、RDFなどの更新間隔に左右され、一定ではない。ということなのでしょうけどね。は、理解した上で、じゃ。それが1年間隔なら、どうしますか?だけのことです。なので、PukiWiki としては、その一定の判断基準から、そうしたと決めてしまえば良いだけだと思います。やはり、価値が無くなる恐れがあるものでかつ、自動的に更新されるもの。というイメージなのでしょうかね? -- upk
- どうしたもんですかね。いたずらで#showrssを大量に書き込まれたりすると参照先に迷惑を掛ける可能性もありますが… -- ぱんだ
- それも確かに、相手サイトに迷惑をかけることになりますね。使い方を間違えば、DoS攻撃にも。やはり、各種プラグインにより動的に設定される内容を除いたもの。ということなのでしょうかね?で、対応は、プラグインと認識される # および &xxx{} など。ということでしょうか? -- upk
- 対応策として、convert する際に、オプションで、プラグイン展開をしない。という逃げと、オリジナル文書から、プラグインと認識される箇所を除く。のどちらがロジック的に簡単か?ということでしょうかね? -- upk
- あ。でも、そんなことを言い出すと、「じゃ、TrackBackサポートのPukiWikiにurlを大量に書き込めばDoS攻撃できちゃうじゃん」などと考える輩も出てくるかもしれないし…うーん。 -- ぱんだ
- いつの間にかproxy対応されたshowrssが添付されていますが、plugin_showrss_get_rss関数を見てみると、http_request()に失敗したらFALSEを返すようになっています。これだと例えばイントラネット内でproxyを通すと取得できないRSSは表示できないようになります。できれば、http_request()に失敗したら今まで通りfopenしてみて、それでもダメだったらFALSEを返す、みたいな感じにするとよいと思うのですが。 --
- http_request()の中身は確認されましたか?
- あ! すみません、$no_proxyの指定が間違っていただけでした。申し訳ありません。 --
- あ。書くの忘れてました。-- ぱんだ
- かなりいじりました。
showrss.inc.php dc:date/pubdate/descriptionの順で日時を取得しようとする仕掛けも入れてあります。どうでしょう。 -- ぱんだ
- proxyの方は試していませんが うまく動作しているようです -- merlin
- proxy でも問題無く動作することを確認しました。 -- merlin
- trackback 関連は、TrackBack でということでこちらは完了にいたします。 -- merlin