ruby: 2008年12月アーカイブ

photo by  flyzipper  rails上で自分のドメイン名をつかってナンヤカンヤしたい時というのがあって。

ENV['HOSTNAME']

 これは論外っぽい。

[default] ENV
[default] :{"HOSTNAME"=>"xxxx.mogya.com",

仮想ドメインの設定を無視してホスト名を返してくれます。HOST_NAMEという値ですから、当たり前か。

request.env:['SERVER_NAME']


request.env:{"SERVER_NAME"=>"maidmail.jp",

 ねらい通り、ドメイン名を返してくれます。ただ、このヘッダも、あとrequest.env['HTTP_HOST']も、ちょっとしたことで簡単に偽装されてしまうので、迂闊につかえません。

request.domain


[default] request.domain:maidmail.jp

 こっちを見ると、request.env:['SERVER_NAME']が偽装されてしまうような場面でも、正しいドメイン名がとれました。
ソースを見ると、HTTP_X_FORWARDED_HOSTというヘッダを使うみたいです。

# File vendor/rails/actionpack/lib/action_controller/request.rb
318: def domain(tld_length = 1) 319: return nil unless named_host?(host) 320: 321: host.split('.').last(1 + tld_length).join('.') 322: end 280: def host 281: raw_host_with_port.sub(/:\d+$/, '') 282: end 271: def raw_host_with_port 272: if forwarded = env["HTTP_X_FORWARDED_HOST"] 273: forwarded.split(/,\s?/).last 274: else 275: env['HTTP_HOST'] || env['SERVER_NAME'] || "#{env['SERVER_ADDR']}:#{env['SERVER_PORT']}" 276: end 277: end

HTTP_X_FORWARDED_HOSTがとれなかった場合に限り、env['HTTP_HOST']やenv['SERVER_NAME']を見てくれるので、HTTP_X_FORWARDED_HOST非対応のサーバでも、request.domainを見ておけば悪いようにはしない実装になっているみたいです。

HTTP_X_FORWARDED_HOSTのうまい説明が見つけきれなかったのですが、これってどういう環境変数なのかなぁ?どれくらい信用のおける値なのでしょう?



先日公開したmextractr_webapi.rbが、gem経由でインストールできるようになりました。

こんな具合にして使うことが出来ます。

[daisuke@snares ~]$ sudo gem install mextractr_webapi
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed mextractr_webapi-0.0.1
1 gem installed
[daisuke@snares /var/maidmail]$ script/server
>> require "mextractr_webapi"
>> mextractr = MextractrWebApi.new(API_KEY)
>> res = mextractr.parse("11/29(土) 京都で紅葉を楽しむオフ会を開催します。秋深い京都を撮り歩きましょう。 ")
>> pp res
{"id"=>"20081202_0001",
 "where"=>
  [{"georss:point"=>nil, "valueString"=>"京都"},
   {"georss:point"=>nil, "valueString"=>"京都"}],
 "what"=>[{"valueString"=>"オフ会"}],
 "when"=>[{"valueString"=>"11/29(土)", "startTime"=>"2008-11-29"}],
 "updated"=>"2008-12-02T12:16:50+09:00"
 "content"=>
  "11/29(土) 京都で紅葉を楽しむオフ会を開催します。秋深い京都を撮り歩きましょう。 ",
 "response"=>
  "\n\n  Mextractr WebAPI results\n  2008-12-02T12:16:50+09:00\n  \n    Mextractr\n  \n  20081202_0001\n  \n    \n    20081202_0001\n    extracted event metadata\n    \n      Mextractr WebAPI\n    \n    2008-12-02T12:16:50+09:00\n    11/29(土) 京都で紅葉を楽しむオフ会を開催します。秋深い京都を撮り歩きましょう。 \n    \n    \n    \n    \n  \n\n",
  }

enjoy!


このアーカイブについて

このページには、 2008年12月 以降に書かれたブログ記事のうち ruby カテゴリに属しているものが含まれています。

前のアーカイブは ruby: 2008年11月 です。

次のアーカイブは ruby: 2009年1月 です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type