]> cat aescling's git repositories - mastodon.git/commitdiff
Add environment variable to allow requests to some private addresses (#14722)
authorThibG <thib@sitedethib.com>
Sat, 26 Sep 2020 18:57:39 +0000 (20:57 +0200)
committerGitHub <noreply@github.com>
Sat, 26 Sep 2020 18:57:39 +0000 (20:57 +0200)
app/lib/request.rb

index 89fbeaf9529e3abcfd8f3ecea89853a8a895f012..38048dad7b552e1718ce50710311b358c4d166e4 100644 (file)
@@ -253,7 +253,15 @@ class Request
       alias new open
 
       def check_private_address(address)
-        raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(IPAddr.new(address.to_s))
+        addr = IPAddr.new(address.to_s)
+        return if private_address_exceptions.any? { |range| range.include?(addr) }
+        raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(addr)
+      end
+
+      def private_address_exceptions
+        @private_address_exceptions = begin
+          (ENV['ALLOWED_PRIVATE_ADDRESSES'] || '').split(',').map { |addr| IPAddr.new(addr) }
+        end
       end
     end
   end