diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2019-08-07 21:14:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-07 21:14:08 +0200 |
commit | f51c7c105f1d04520656c1235f8a5f58d256fd0e (patch) | |
tree | 5e80a460c637b71daa7ab81f6bf7c6afde1ad5e5 /app/services | |
parent | 3a6b6c63f22e31c9b113428d6c69be451a3bcc17 (diff) |
Fix acct URIs with IDN domains not being resolved (#11520)
Fix #11494
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/resolve_account_service.rb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb index 7864c4bcd..12e6544a0 100644 --- a/app/services/resolve_account_service.rb +++ b/app/services/resolve_account_service.rb @@ -60,17 +60,23 @@ class ResolveAccountService < BaseService @account = uri @username = @account.username @domain = @account.domain - @uri = [@username, @domain].compact.join('@') else - @uri = uri @username, @domain = uri.split('@') end - @domain = nil if TagManager.instance.local_domain?(@domain) + @domain = begin + if TagManager.instance.local_domain?(@domain) + nil + else + TagManager.instance.normalize_domain(@domain) + end + end + + @uri = [@username, @domain].compact.join('@') end def process_webfinger!(uri, redirected = false) - @webfinger = Goldfinger.finger("acct:#{@uri}") + @webfinger = Goldfinger.finger("acct:#{uri}") confirmed_username, confirmed_domain = @webfinger.subject.gsub(/\Aacct:/, '').split('@') if confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero? |