about summary refs log tree commit diff
path: root/app/lib
diff options
context:
space:
mode:
authorEugen <eugen@zeonfederated.com>2017-04-25 02:47:31 +0200
committerGitHub <noreply@github.com>2017-04-25 02:47:31 +0200
commit17c591ffba59bda512fe43a09c06c40324acc472 (patch)
treec03ba1c23b0adf46230b3b97b62efb018c26ded5 /app/lib
parentbb04a9be52e005fb8bbeef22e5b8d30f0d202903 (diff)
Punycode URI normalization (#2370)
* Fix #2119 - Whenever about to send a HTTP request, normalize the URI

* Add test for IDN request in FetchLinkCardService

* Perform IDN normalization on domains before they are stored in the DB
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/tag_manager.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/app/lib/tag_manager.rb b/app/lib/tag_manager.rb
index f26c943d2..3bddfba7c 100644
--- a/app/lib/tag_manager.rb
+++ b/app/lib/tag_manager.rb
@@ -64,6 +64,12 @@ class TagManager
     domain.nil? || domain.gsub(/[\/]/, '').casecmp(Rails.configuration.x.local_domain).zero?
   end
 
+  def normalize_domain(domain)
+    uri = Addressable::URI.new
+    uri.host = domain
+    uri.normalize.host
+  end
+
   def same_acct?(canonical, needle)
     return true if canonical.casecmp(needle).zero?
     username, domain = needle.split('@')
@@ -71,7 +77,7 @@ class TagManager
   end
 
   def local_url?(url)
-    uri    = Addressable::URI.parse(url)
+    uri    = Addressable::URI.parse(url).normalize
     domain = uri.host + (uri.port ? ":#{uri.port}" : '')
     TagManager.instance.local_domain?(domain)
   end