如何

2014-09-10 75 views
-1

輸入IP值比較紅寶石 -如何

192.191.*.* 
192.187.*.* 
192.213.*.* 
192.186.*.* 
192.200.*.* 

* =>表示2個或3位數字

請求URL: -

http://www.test.com?ip=192.191.0.1 
http://www.test.com?ip=192.200.0.1 
http://www.test.com?ip=192.200.0.2 

我不喜歡如果請求url包含上面的ip範圍,則不想進行請求調用。

我怎麼能把一個條件,以避免以上的IP範圍。

+0

你是什麼意思 「取消請求」? – xlembouras 2014-09-10 09:55:50

+0

@xlembouras我更新了問題。請看看。 – karan 2014-09-10 10:03:19

回答

2

可以使用IPAddr類從Ruby的標準庫,例如:

require 'ipaddr' 

ranges = [ 
    IPAddr.new('192.191.0.0/16'), 
    IPAddr.new('192.187.0.0/16') 
] 

ranges.any? { |r| r.include?('192.155.0.1') } 
# => false 

ranges.any? { |r| r.include?('192.191.0.1') } 
# => true 
1

如果重新格式化範圍如下

192.191.1.1/16 
192.187.1.1/16 
192.213.1.1/16 
192.186.1.1/16 
192.200.1.1/16 

可以使用IPAddr類的檢查。

例子:

RESTRICTED = ["192.191.1.1/16","192.187.1.1/16"] 
RESTRICTED_IPS = RESTRICTED.map { |ip| IPAddr.new(ip) } 

target_ip1 = "192.123.231.1" 
target_ip2 = IPAddr.new("192.155.0.1") 

RESTRICTED_IPS.any? { |ip_range| ip_range.include? target_ip1 } 
#=> true 

RESTRICTED_IPS.any? { |ip_range| ip_range.include? target_ip2 } 
#=> false