まちゅダイアリー

base_url の設定プラグイン (もどき)

2007-07-27

tDiaryの脆弱性に関する報告(2007-07-23)を受けての今なら conf.base_url を設定画面から変更できるようにするパッチを書くと…という話。

とはいえ、 base_url をわざわざ設定するのは面倒。 問題は base_url 中の SERVER_NAME が書き換えられるということなので、以下のようにしてみた。

add_conf_proc('server_name', 'SERVER_NAME') do
  if @mode == 'saveconf'
    @conf['server_name'] = ENV['SERVER_NAME']
    "Thank you."
  else
    "SERVER_NAME is #{ENV['SERVER_NAME']}. If correct, please press 'OK'"
  end
end

@conf.instance_eval { alias :base_url_org :base_url }
def @conf.base_url
  base_url_org.gsub(%r|(https?://)([^:/]+)|, "\\1#{self['server_name']}")
end

正規表現はちょっと自信ない。 本当は update.rb から index.rb の base_url が取得できるといいんだけど。 @index は相対パスっぽいからなぁ。