Tag: ip

Rails 3 – 通过路由将IP列入白名单

这是一个两部分问题。 我需要将我在开发服务器上的rails网站限制为只有几个IP地址,因此公众无法访问它。 (基本HTTP身份validation不会“完全”工作,因为auth会破坏项目中的Flash上​​传器。) 根据我用Google搜索的内容,这就是我在路线文件中提出的内容…… class WhitelistConstraint def initialize @ips = ‘127.0.0.1’ end def matches?(request) @ips.include?(request.remote_ip) end end MyProject::Application.routes.draw do constraints WhitelistConstraint.new do # all my routing stuff here end end 工作得很好。 但是,我需要修改它以便使用多个IP地址。 我尝试在@ips上使用数组,以及循环遍历每个循环,但都没有工作。 最重要的是,我的问题的第二部分…我可能只需要检查IP的一部分,如’127.0.0’。 我该怎么办?

如何在Heroku上阻止或过滤IP地址?

有没有办法实现IP过滤或IP访问规则,就像我使用nginx / apache来限制或阻止Heroku上的某些IP一样? 注意:我知道这可以在我的应用程序(Rails 3.2)中轻松完成,但我不认为这是Heroku上最有效的资源使用。 此外,基于Rack的解决方案比在Rails中实现过滤更好。

Ruby / Rails中的IP范围到CIDR?

我想做两件事:将IP地址输入转换为CIDR以下是一些示例输入: 1.1.1.1 192.168.*.* #=> 192.168.0-255.0-255 192.168.1.2-20 1.1.1-10.1-100 检查给定的IP地址是否属于任何CIDR。 这必须是一个非常快速的查询,因为它是我的Web应用程序中非常常见的查找。 我想做这样的事情: def matches?(request) valid = @ips.select {|cidr| cidr.contains?(request.remote_ip) } !valid.empty? end 我认为将IP范围转换为CIDR将使查找比我们现在所做的更快,这将IP分解为整数八位字节。 然后,我们将前两组八位字节编入索引以部分匹配IP。 另一个选择可能是将所有内容转换为int并以这种方式进行比较。 我将使用类似IPAddr.new(“1.1.1.1”).to_i转换为int IPAddr.new(“1.1.1.1”).to_i然后我需要为每个范围存储一个上限和下限IP,而不是仅存储一个CIDR。 如果我忽视任何主流方法,流行gem或回购,请告诉我。 谢谢!

Ruby:如何将IP范围转换为IP数组

有没有简单的方法将IP范围转换为IP数组? def convertIPrange (start_ip, end_ip) #output: array of ips end end 例如输入 (‘192.168.1.105’, ‘192.168.1.108’) 产量 [‘192.168.1.105′,’192.158.1.106′,’192.158.1.107′,’192.158.1.108’]

如何检查字符串中的值是否为IP地址

当我这样做的时候 ip = request.env[“REMOTE_ADDR”] 我得到了客户端的IP地址。 但是如果我想validation变量中的值是否真的是IP呢? 我怎么做? 请帮忙。 提前致谢。 抱歉,如果重复这个问题,我没有努力找到它…… 编辑 那么IPv6 IP呢?

ruby中的网络掩码到CIDR

我一直在使用ip-address gem,它似乎没有能力从表单的网络掩码转换 255.255.255.0 进入CIDR表格 /24 有没有人有想法如何快速将前者转换为后者?

如何在不利用其他IP地址的情况下从Ruby获取我的机器的IP地址?

我到处搜索,但他们的解决方案需要某种forms的IP地址。 以下是我找到的解决方案。 require ‘socket’ #METHOD 1 ip = IPSocket.getaddress(Socket.gethostname) puts ip #METHOD 2 host = Socket.gethostname puts host #METHOD 3(uses Google’s address) ip = UDPSocket.open {|s| s.connect(“64.233.187.99”, 1); s.addr.last} puts ip #METHOD 4(uses gateway address) def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily UDPSocket.open do |s| s.connect ‘192.168.1.1’, 1 […]