diff --git a/app/lib/request.rb b/app/lib/request.rb index 731bf76879d..397614fac9d 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -58,7 +58,7 @@ class Request def set_common_headers! @headers[REQUEST_TARGET] = "#{@verb} #{@url.path}" - @headers['User-Agent'] = user_agent + @headers['User-Agent'] = Mastodon::Version.user_agent @headers['Host'] = @url.host @headers['Date'] = Time.now.utc.httpdate @headers['Accept-Encoding'] = 'gzip' if @verb != :head @@ -83,10 +83,6 @@ class Request @headers.keys.join(' ').downcase end - def user_agent - @user_agent ||= "#{HTTP::Request::USER_AGENT} (Mastodon/#{Mastodon::Version}; +#{root_url})" - end - def key_id case @key_id_format when :acct diff --git a/config/initializers/http_client_proxy.rb b/config/initializers/http_client_proxy.rb index f5026d59e28..52c595c5d96 100644 --- a/config/initializers/http_client_proxy.rb +++ b/config/initializers/http_client_proxy.rb @@ -18,7 +18,8 @@ module Goldfinger def self.finger(uri, opts = {}) to_hidden = /\.(onion|i2p)(:\d+)?$/.match(uri) raise Mastodon::HostValidationError, 'Instance does not support hidden service connections' if !Rails.configuration.x.access_to_hidden_service && to_hidden - opts = opts.merge(Rails.configuration.x.http_client_proxy).merge(ssl: !to_hidden) + opts = { ssl: !to_hidden, headers: {} }.merge(Rails.configuration.x.http_client_proxy).merge(opts) + opts[:headers]['User-Agent'] ||= Mastodon::Version.user_agent Goldfinger::Client.new(uri, opts).finger end end diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 849b564e7fc..60f13308585 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -48,5 +48,9 @@ module Mastodon source_base_url end end + + def user_agent + @user_agent ||= "#{HTTP::Request::USER_AGENT} (Mastodon/#{Version}; +http#{Rails.configuration.x.use_https ? 's' : ''}://#{Rails.configuration.x.web_domain}/)" + end end end