From a6b6a3e60ad3319073c355bce51472a4362dc1f1 Mon Sep 17 00:00:00 2001 From: Alex Sherman Date: Tue, 17 Nov 2020 19:37:24 +0500 Subject: [PATCH] Enable WhiteIp for checking against subnets --- app/models/white_ip.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/models/white_ip.rb b/app/models/white_ip.rb index 303ff5886..e86f62ea7 100644 --- a/app/models/white_ip.rb +++ b/app/models/white_ip.rb @@ -24,7 +24,10 @@ class WhiteIp < ApplicationRecord class << self def include_ip?(ip) - where('ipv4 = :ip OR ipv6 = :ip', ip: ip).any? + ipv4 = select{ |white_ip| IPAddr.new(white_ip.ipv4, Socket::AF_INET) === IPAddr.new(ip) } + ipv6 = select{ |white_ip| IPAddr.new(white_ip.ipv6, Socket::AF_INET6) === IPAddr.new(ip) } + ids = (ipv4.pluck(:id) + ipv6.pluck(:id)).flatten.uniq + where(id: ids).any? end end end