class CC::Service::SafeWebhook
Constants
- InternalWebhookError
- PRIVATE_ADDRESS_SUBNETS
Attributes
url[R]
Public Class Methods
ensure_safe!(url)
click to toggle source
# File lib/cc/service/safe_webhook.rb, line 18 def self.ensure_safe!(url) instance = new(url) instance.ensure_safe! end
new(url)
click to toggle source
# File lib/cc/service/safe_webhook.rb, line 23 def initialize(url) @url = url end
Public Instance Methods
ensure_safe!()
click to toggle source
# File lib/cc/service/safe_webhook.rb, line 27 def ensure_safe! uri = URI.parse(url) if !allow_internal_webhooks? && internal?(uri.host) raise InternalWebhookError, "#{url.inspect} maps to an internal address" end end
Private Instance Methods
allow_internal_webhooks?()
click to toggle source
# File lib/cc/service/safe_webhook.rb, line 49 def allow_internal_webhooks? var = ENV["CODECLIMATE_ALLOW_INTERNAL_WEBHOOKS"] || "" var == "1" || var == "true" end
internal?(host)
click to toggle source
# File lib/cc/service/safe_webhook.rb, line 39 def internal?(host) address = ::Resolv.getaddress(host) PRIVATE_ADDRESS_SUBNETS.any? do |subnet| subnet === IPAddr.new(address.to_s) end rescue ::Resolv::ResolvError true # localhost end