discourse/app/services/wildcard_url_checker.rb
David Taylor b60b57cddd
FIX: Allow any protocol in wildcard url checker ()
This is required for people using apps with custom protocols. We still verify the entire URL (including protocol) against the site setting value.

Refactored wildcard_url_checker so that it always returns a boolean, rather than sometimes returning a regex match.
2020-01-02 16:03:13 +00:00

22 lines
458 B
Ruby

# frozen_string_literal: true
module WildcardUrlChecker
def self.check_url(url, url_to_check)
return false if !valid_url?(url_to_check)
escaped_url = Regexp.escape(url).sub("\\*", '\S*')
url_regex = Regexp.new("\\A#{escaped_url}\\z", 'i')
url_to_check.match?(url_regex)
end
private
def self.valid_url?(url)
uri = URI.parse(url)
uri&.scheme.present? && uri&.host.present?
rescue URI::InvalidURIError
false
end
end