Commit f91650940a2d4ed5ee7cbfdf865f5c84c092de3b

Authored by Larissa Reis
1 parent e0a279d0

Lookup webfinger based on scheme

app/models/concerns/external_user.rb
... ... @@ -18,10 +18,13 @@ module ExternalUser
18 18 module ClassMethods
19 19 def webfinger_lookup(login, domain, environment)
20 20 if login && domain && environment.has_federated_network?(domain)
21   - url = URI.parse('https://'+ domain +'/.well-known/webfinger?resource=acct:'+
  21 + external_environment = environment.external_environments.find_by_url(domain)
  22 + scheme = "http#{external_environment.uses_ssl? ? 's' : ''}"
  23 + url = URI.parse(scheme+"://"+ domain +'/.well-known/webfinger?resource=acct:'+
22 24 login+'@'+domain)
  25 + http = build_request(url)
23 26 req = Net::HTTP::Get.new(url.to_s)
24   - res = Net::HTTP.start(url.host, url.port) { |http| http.request(req) }
  27 + res = http.request(req)
25 28 JSON.parse(res.body)
26 29 else
27 30 nil
... ... @@ -48,7 +51,9 @@ module ExternalUser
48 51 result = nil
49 52 response = nil
50 53 redirections_allowed = 3
51   - location = 'http://' + domain + '/api/v1/login'
  54 + external_environment = ExternalEnvironment.find_by_url(domain)
  55 + scheme = "http#{external_environment.uses_ssl? ? 's' : ''}"
  56 + location = scheme + '://' + domain + '/api/v1/login'
52 57 request_params = CGI.unescape({ login: login, password: password }.to_query)
53 58 begin
54 59 while redirections_allowed > 0 && (response.blank? || response.code == '301')
... ...
app/models/external_environment.rb
... ... @@ -6,4 +6,9 @@ class ExternalEnvironment < ActiveRecord::Base
6 6  
7 7 has_many :environment_external_environments, dependent: :destroy
8 8 has_many :environments, through: :environment_external_environments
  9 +
  10 + def uses_ssl?
  11 + url.starts_with? 'https'
  12 + end
  13 +
9 14 end
... ...