|
|
@ -31,7 +31,7 @@ class Request |
|
|
|
@url = Addressable::URI.parse(url).normalize |
|
|
|
@http_client = options.delete(:http_client) |
|
|
|
@options = options.merge(socket_class: use_proxy? ? ProxySocket : Socket) |
|
|
|
@options = @options.merge(Rails.configuration.x.http_client_proxy) if use_proxy? |
|
|
|
@options = @options.merge(proxy_url) if use_proxy? |
|
|
|
@headers = {} |
|
|
|
|
|
|
|
raise Mastodon::HostValidationError, 'Instance does not support hidden service connections' if block_hidden_service? |
|
|
@ -141,11 +141,23 @@ class Request |
|
|
|
end |
|
|
|
|
|
|
|
def use_proxy? |
|
|
|
Rails.configuration.x.http_client_proxy.present? |
|
|
|
proxy_url.present? |
|
|
|
end |
|
|
|
|
|
|
|
def proxy_url |
|
|
|
if hidden_service? && Rails.configuration.x.http_client_hidden_proxy.present? |
|
|
|
Rails.configuration.x.http_client_hidden_proxy |
|
|
|
else |
|
|
|
Rails.configuration.x.http_client_proxy |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def block_hidden_service? |
|
|
|
!Rails.configuration.x.access_to_hidden_service && /\.(onion|i2p)$/.match?(@url.host) |
|
|
|
!Rails.configuration.x.access_to_hidden_service && hidden_service? |
|
|
|
end |
|
|
|
|
|
|
|
def hidden_service? |
|
|
|
/\.(onion|i2p)$/.match?(@url.host) |
|
|
|
end |
|
|
|
|
|
|
|
module ClientLimit |
|
|
|