diff options
author | 2024-07-26 13:11:07 +0200 | |
---|---|---|
committer | 2024-07-26 13:11:07 +0200 | |
commit | ecfea10e359b9c9e7c0e6b5fd092e3caa5587df6 (patch) | |
tree | cc5cb01cf7d97baf7e47bb7a246fbc392c41fe9e /internal/federation/dereferencing/account.go | |
parent | [feature] Federate interaction policies + Accepts; enforce policies (#3138) (diff) | |
download | gotosocial-ecfea10e359b9c9e7c0e6b5fd092e3caa5587df6.tar.xz |
[bugfix] Use punycode for `host` part of `resource` query param when doing webfinger requests (#3133)
* [bugfix] use punycode when webfingering
* account for punycode when checking if final URI matches expected
* hmm
* fix test
Diffstat (limited to 'internal/federation/dereferencing/account.go')
-rw-r--r-- | internal/federation/dereferencing/account.go | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/internal/federation/dereferencing/account.go b/internal/federation/dereferencing/account.go index e48507124..65436f9ea 100644 --- a/internal/federation/dereferencing/account.go +++ b/internal/federation/dereferencing/account.go @@ -706,13 +706,26 @@ func (d *Dereferencer) enrichAccount( return nil, nil, gtserror.Newf("empty domain for %s", uri) } - // Ensure the final parsed account URI / URL matches + // Ensure the final parsed account URI or URL matches // the input URI we fetched (or received) it as. - if expect := uri.String(); latestAcc.URI != expect && - latestAcc.URL != expect { + matches, err := util.URIMatches( + uri, + append( + ap.GetURL(apubAcc), // account URL(s) + ap.GetJSONLDId(apubAcc), // account URI + )..., + ) + if err != nil { + return nil, nil, gtserror.Newf( + "error checking dereferenced account uri %s: %w", + latestAcc.URI, err, + ) + } + + if !matches { return nil, nil, gtserror.Newf( "dereferenced account uri %s does not match %s", - latestAcc.URI, expect, + latestAcc.URI, uri.String(), ) } |