class PactBroker::Webhooks::CheckHostWhitelist
Public Class Methods
Source
# File lib/pact_broker/webhooks/check_host_whitelist.rb, line 7 def self.call(host, whitelist = PactBroker.configuration.webhook_host_whitelist) whitelist.select{ | whitelist_host | match?(host, whitelist_host) } end
Source
# File lib/pact_broker/webhooks/check_host_whitelist.rb, line 37 def self.host_matches_domain_with_wildcard(host, whitelist_domain) OpenSSL::SSL.verify_hostname(host, whitelist_domain) end
Source
# File lib/pact_broker/webhooks/check_host_whitelist.rb, line 33 def self.host_matches_regexp(host, whitelist_regexp) host =~ whitelist_regexp end
Source
# File lib/pact_broker/webhooks/check_host_whitelist.rb, line 29 def self.ip_address_matches_range(host, maybe_whitelist_range) parse_ip_address(maybe_whitelist_range) === parse_ip_address(host) end
Source
# File lib/pact_broker/webhooks/check_host_whitelist.rb, line 11 def self.match?(host, whitelist_host) if parse_ip_address(host) ip_address_matches_range(host, whitelist_host) elsif whitelist_host.is_a?(Regexp) host_matches_regexp(host, whitelist_host) elsif whitelist_host.start_with?("*") OpenSSL::SSL.verify_hostname(host, whitelist_host) else host == whitelist_host end end
Source
# File lib/pact_broker/webhooks/check_host_whitelist.rb, line 23 def self.parse_ip_address(addr) IPAddr.new(addr) rescue IPAddr::Error nil end