Ticket #9479: action_controller_request_treats_dotted_quad_correctly.patch
| File action_controller_request_treats_dotted_quad_correctly.patch, 2.3 kB (added by purp, 1 year ago) |
|---|
-
actionpack/test/controller/request_test.rb
old new 51 51 @request.host = "192.168.1.200" 52 52 assert_nil @request.domain 53 53 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 54 60 @request.host = nil 55 61 assert_nil @request.domain 56 62 end … … 68 74 @request.host = "foobar.foobar.com" 69 75 assert_equal %w( foobar ), @request.subdomains 70 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 85 71 86 @request.host = nil 72 87 assert_equal [], @request.subdomains 73 88 end -
actionpack/lib/action_controller/request.rb
old new 172 172 # Returns the domain part of a host, such as rubyonrails.org in "www.rubyonrails.org". You can specify 173 173 # a different <tt>tld_length</tt>, such as 2 to catch rubyonrails.co.uk in "www.rubyonrails.co.uk". 174 174 def domain(tld_length = 1) 175 return nil if !/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/.match(host).nil? or host.nil?175 return nil unless named_host?(host) 176 176 177 177 host.split('.').last(1 + tld_length).join('.') 178 178 end … … 181 181 # You can specify a different <tt>tld_length</tt>, such as 2 to catch ["www"] instead of ["www", "rubyonrails"] 182 182 # in "www.rubyonrails.co.uk". 183 183 def subdomains(tld_length = 1) 184 return [] unless host184 return [] unless named_host?(host) 185 185 parts = host.split('.') 186 186 parts[0..-(tld_length+2)] 187 187 end … … 353 353 "backtrace" => e.backtrace } 354 354 end 355 355 356 def named_host?(host) 357 !(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host)) 358 end 359 356 360 class << self 357 361 def parse_query_parameters(query_string) 358 362 return {} if query_string.blank?