Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 8108

Show
Ignore:
Timestamp:
11/07/07 14:57:51 (1 year ago)
Author:
david
Message:

Fixed handling of non-domain hosts (closes #9479) [purp]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/CHANGELOG

    r8104 r8108  
    11*SVN* 
     2 
     3* Fixed handling of non-domain hosts #9479 [purp] 
    24 
    35* Fix syntax error in documentation example for cycle method. Closes #8735 [foca] 
  • trunk/actionpack/lib/action_controller/request.rb

    r7992 r8108  
    192192    # a different <tt>tld_length</tt>, such as 2 to catch rubyonrails.co.uk in "www.rubyonrails.co.uk". 
    193193    def domain(tld_length = 1) 
    194       return nil if !/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.match(host).nil? or host.nil? 
     194      return nil unless named_host?(host) 
    195195 
    196196      host.split('.').last(1 + tld_length).join('.') 
     
    201201    # in "www.rubyonrails.co.uk". 
    202202    def subdomains(tld_length = 1) 
    203       return [] unless host 
     203      return [] unless named_host?(host) 
    204204      parts = host.split('.') 
    205205      parts[0..-(tld_length+2)] 
     
    386386          "exception" => "#{e.message} (#{e.class})", 
    387387          "backtrace" => e.backtrace } 
     388      end 
     389 
     390      def named_host?(host) 
     391        !(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host)) 
    388392      end 
    389393 
  • trunk/actionpack/test/controller/request_test.rb

    r8064 r8108  
    5252    assert_nil @request.domain 
    5353 
     54    @request.host = "foo.192.168.1.200" 
     55    assert_nil @request.domain 
     56 
     57    @request.host = "192.168.1.200.com" 
     58    assert_equal "200.com", @request.domain 
     59 
    5460    @request.host = nil 
    5561    assert_nil @request.domain 
     
    6874    @request.host = "foobar.foobar.com" 
    6975    assert_equal %w( foobar ), @request.subdomains 
     76 
     77    @request.host = "192.168.1.200" 
     78    assert_equal [], @request.subdomains 
     79 
     80    @request.host = "foo.192.168.1.200" 
     81    assert_equal [], @request.subdomains 
     82 
     83    @request.host = "192.168.1.200.com" 
     84    assert_equal %w( 192 168 1 ), @request.subdomains 
    7085 
    7186    @request.host = nil