Hiki0.7-devel-20040909.では、attach.cgiが今までのHikiFarmディレクトリにattach.cgiを置いておくという方法では使えなくなったので、代わりの方法が提示されていた。Hikiをバージョンアップしたので対応せざるを得なくなった。以下がその内容です。

!attachの位置
:attach.rb:プラグインディレクトリにコピー
:attach.cgi:Hikiインストールディレクトリのhiki.confやhiki.rbと同じ場所にコピー

!HikiFarm用attach.cgiの作成
 #!/usr/bin/env ruby
 hiki=''
 eval( open( '../hikifarm.conf' ){|f|f.read.untaint} )
 $:.unshift "#{hiki}"
 load "#{hiki}/attach.cgi"
これをそれぞれのWikiにattach.cgiとしてコピーの上chmod0744に設定する。これでattach.cgiが使えるようになる.


!HikiFarm内のindex.cgiを改造
HikiFarm内で新しく作られたWikiについてどうするか試してみた。要望が有ってからattach.cgiを個別にコピーした方が安全かもしれないが、一つの可能性と言うことで。

index.cgiの80行目から
 def attach( wiki )
 <<-ATTACH
 #!#{@ruby}
 hiki=''
 eval( open( '../hikifarm.conf' ){|f|f.read.untaint} )
 $:.unshift "\#{hiki}"
 load "\#{hiki}/attach.cgi"
 ATTACH
 end
242行目から
 File::open( "#{wiki}/attach.cgi", 'w' ) do |f|
     f.puts( attach( wiki ) )
     f.chmod( 0744 )
 end
この2つで、新しくWikiを作ったらそのディレクトリに、attach.cgiがchmod0744で作られる。もちろん標準で、hikiconf.rbとindex.cgiも出来ている。

これだけでは、オプションの記述が出来ないので、「tDiaryの一つのインストールで…」を参考に、共有のhikiconf.rbとそれを呼び出す改造を試みた。

共有のhikiconf.rbは/home/hoge/etc/hikiconf.rb等として作っておけばよいattach.cgiに必要な設定は、
 @options['attach.form'] = 'edit'
である、これで編集画面にattach.cgiのFORMが表示される。

これを呼び出す仕組みをHikiFarmのindex.cgiに仕掛けてやれば出来上がり。

105行目 '''eval( File::open( "\#{hiki}/hiki.conf" ){|f| f.read.untaint} )'''
の後に
 eval( File::readlines( "/home/hoge/etc/hikiconf.rb" ).join.untaint )

新しいWikiを作って試して見るべし。いたずらされると怖いなぁ(^