diff options
author | Jeong Arm <kjwonmail@gmail.com> | 2022-08-25 11:41:14 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-25 04:41:14 +0200 |
commit | 861b35dd54d266bc0a40b3cacb28e5b82ff6faaa (patch) | |
tree | 26299d1d1a3c4f934fa5652b6cbc08ea4f6cbe09 /app | |
parent | 1165943968f8c79cfaccf30c392b14b4930d68e6 (diff) |
Support "http_hidden_proxy" ENV var for hidden service only proxy (#18427)
* Support "http_hidden_proxy" ENV var for hidden service only proxy * Fallback to http_proxy if http_hidden_proxy is not set
Diffstat (limited to 'app')
-rw-r--r-- | app/lib/request.rb | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/app/lib/request.rb b/app/lib/request.rb index 4289da933..f5123d776 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -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 |