mirror of
https://github.com/internetee/registry.git
synced 2025-07-22 18:56:05 +02:00
Some white ip check fixes
This commit is contained in:
parent
bace495f57
commit
f01e59d95a
1 changed files with 28 additions and 4 deletions
|
@ -41,11 +41,35 @@ class WhiteIp < ApplicationRecord
|
||||||
class << self
|
class << self
|
||||||
# rubocop:disable Style/CaseEquality
|
# rubocop:disable Style/CaseEquality
|
||||||
def include_ip?(ip)
|
def include_ip?(ip)
|
||||||
ipv4 = select { |white_ip| IPAddr.new(white_ip.ipv4, Socket::AF_INET) === IPAddr.new(ip) }
|
Rails.logger.info "Checking if whitelist includes ip:#{ip}"
|
||||||
ipv6 = select { |white_ip| IPAddr.new(white_ip.ipv6, Socket::AF_INET6) === IPAddr.new(ip) }
|
return false if ip.blank?
|
||||||
ids = (ipv4 + ipv6).pluck(:id).flatten.uniq
|
|
||||||
where(id: ids).any?
|
where(id: ids_including(ip)).any?
|
||||||
|
end
|
||||||
|
|
||||||
|
def ids_including(ip)
|
||||||
|
ipv4 = ipv6 = []
|
||||||
|
if check_ip4(ip).present?
|
||||||
|
ipv4 = select { |white_ip| IPAddr.new(white_ip.ipv4, Socket::AF_INET) === check_ip4(ip) }
|
||||||
|
end
|
||||||
|
if check_ip6(ip).present?
|
||||||
|
ipv6 = select { |white_ip| IPAddr.new(white_ip.ipv6, Socket::AF_INET6) === check_ip6 }
|
||||||
|
end
|
||||||
|
(ipv4 + ipv6).pluck(:id).flatten.uniq
|
||||||
end
|
end
|
||||||
# rubocop:enable Style/CaseEquality
|
# rubocop:enable Style/CaseEquality
|
||||||
|
|
||||||
|
def check_ip4(ip)
|
||||||
|
IPAddr.new(ip, Socket::AF_INET)
|
||||||
|
rescue StandardError => _e
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_ip6(ip)
|
||||||
|
IPAddr.new(ip, Socket::AF_INET6)
|
||||||
|
rescue StandardError => _e
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue