直したつもりがまだ他にもセキュリティホールが見つかったということで、cvs がバージョンアップされています。
今度こそ本気で Hiki の mod_ruby 化に取り組みはじめました。「本気で」というからには、Hikifarm みたいに複数の Hiki をまとめて mod_ruby で動かすことも可能にするのが大前提です。
今日のところの作業は、以下のとおり。
とりあえず、それなりに動くところまで持って行けました。それにしても、めちゃくちゃ速い。
なお、この作業の途中に設定の保存まわりでバグを見つけたので、とりあえずそれだけはバックポートしておきます。
さて、ToDo もそれなりにたくさんあります。
そういうわけで、まだ実戦投入は先になりそうです。
mod_ruby hiki で、rss.rb の出力の先頭に空行が入るのなんでだろ〜、と悩んだのですが、そういう理由でした。mod_ruby じゃないときは問題なかったのも不思議ですが、とにかく他のプラグインも含めて puts の代りに print CGI#header するように修正しました。あと、$site_name と $author_name の escapeHTML 忘れも修正しました。
何かプログラムを改造しようと思い立ったら、それなりにあちこちのコードを読みまくるので、結果として予想外のバグ修正もしちゃったりするんですよね。
ども、VikiWiki作者です(で通じるのか?)。
Windowsでは\rがCGI#headerに含まれているせいか\r\n\nになるので悩んだ挙句以下のようにしています。
print cgi.header(〜).gsub(/\r/, '')
↑tdiary や hiki では CGI の先頭に
BEGIN { $defout.binmode }
と書くことで対処しています。
気をつけないと\r\nと\nが混在してHTTPヘッダを正しく認識してくれなかったり(hiki.cgiのExceptionとか)。