summaryrefslogtreecommitdiffstats
path: root/app/lib
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-09-20 23:30:26 +0200
committerGitHub <noreply@github.com>2022-09-20 23:30:26 +0200
commit1145dbd327ae9b56357cc488801d723051f58e0b (patch)
treeb35c66b69988ec67b4af8c733486efca9529b3d4 /app/lib
parent14c7c9e40e72ac7ba2ba098b2c11d35ba463b56a (diff)
Improve error reporting and logging when processing remote accounts (#15605)
* Add a more descriptive PrivateNetworkAddressError exception class * Remove unnecessary exception class to rescue clause * Remove unnecessary include to JsonLdHelper * Give more neutral error message when too many webfinger redirects * Remove unnecessary guard condition * Rework how “ActivityPub::FetchRemoteAccountService” handles errors Add “suppress_errors” keyword argument to avoid raising errors in ActivityPub::FetchRemoteAccountService#call (default/previous behavior). * Rework how “ActivityPub::FetchRemoteKeyService” handles errors Add “suppress_errors” keyword argument to avoid raising errors in ActivityPub::FetchRemoteKeyService#call (default/previous behavior). * Fix Webfinger::RedirectError not being a subclass of Webfinger::Error * Add suppress_errors option to ResolveAccountService Defaults to true (to preserve previous behavior). If set to false, errors will be raised instead of caught, allowing the caller to be informed of what went wrong. * Return more precise error when failing to fetch account signing AP payloads * Add tests * Fixes * Refactor error handling a bit * Fix various issues * Add specific error when provided Digest is not 256 bits of base64-encoded data * Please CodeClimate * Improve webfinger error reporting
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/request.rb6
-rw-r--r--app/lib/webfinger.rb2
2 files changed, 4 insertions, 4 deletions
diff --git a/app/lib/request.rb b/app/lib/request.rb
index f5123d776ab..eac04c798da 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -208,7 +208,7 @@ class Request
addresses.each do |address|
begin
- check_private_address(address)
+ check_private_address(address, host)
sock = ::Socket.new(address.is_a?(Resolv::IPv6) ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0)
sockaddr = ::Socket.pack_sockaddr_in(port, address.to_s)
@@ -264,10 +264,10 @@ class Request
alias new open
- def check_private_address(address)
+ def check_private_address(address, host)
addr = IPAddr.new(address.to_s)
return if private_address_exceptions.any? { |range| range.include?(addr) }
- raise Mastodon::HostValidationError if PrivateAddressCheck.private_address?(addr)
+ raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr)
end
def private_address_exceptions
diff --git a/app/lib/webfinger.rb b/app/lib/webfinger.rb
index a681e0815fa..7c0c10c3385 100644
--- a/app/lib/webfinger.rb
+++ b/app/lib/webfinger.rb
@@ -3,7 +3,7 @@
class Webfinger
class Error < StandardError; end
class GoneError < Error; end
- class RedirectError < StandardError; end
+ class RedirectError < Error; end
class Response
attr_reader :uri