fix: assorted ActivityPub code only refactors (#8708)

Fix parts of issue #8221 and part of PR #4767

Is linked to https://codeberg.org/forgejo/forgejo/pulls/8274

The commit 555f6e57ad fixes timeout forgejo/forgejo#8274 (Kommentar)

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/8708
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Jerger <michael.jerger@meissa-gmbh.de>
Co-committed-by: Michael Jerger <michael.jerger@meissa-gmbh.de>
This commit is contained in:
Michael Jerger 2025-07-28 15:17:29 +02:00 committed by Earl Warren
commit 388e4eb44b
20 changed files with 744 additions and 69 deletions

View file

@ -4,6 +4,7 @@
package federation
import (
"context"
"crypto/x509"
"database/sql"
"encoding/pem"
@ -15,13 +16,12 @@ import (
"forgejo.org/models/user"
"forgejo.org/modules/activitypub"
fm "forgejo.org/modules/forgefed"
context_service "forgejo.org/services/context"
ap "github.com/go-ap/activitypub"
)
// Factory function for ActorID. Created struct is asserted to be valid
func NewActorIDFromKeyID(ctx *context_service.Base, uri string) (fm.ActorID, error) {
func NewActorIDFromKeyID(ctx context.Context, uri string) (fm.ActorID, error) {
parsedURI, err := url.Parse(uri)
parsedURI.Fragment = ""
if err != nil {
@ -54,7 +54,7 @@ func NewActorIDFromKeyID(ctx *context_service.Base, uri string) (fm.ActorID, err
return result, err
}
func FindOrCreateFederatedUserKey(ctx *context_service.Base, keyID string) (pubKey any, err error) {
func FindOrCreateFederatedUserKey(ctx context.Context, keyID string) (pubKey any, err error) {
var federatedUser *user.FederatedUser
var keyURL *url.URL
@ -122,7 +122,7 @@ func FindOrCreateFederatedUserKey(ctx *context_service.Base, keyID string) (pubK
return nil, nil
}
func FindOrCreateFederationHostKey(ctx *context_service.Base, keyID string) (pubKey any, err error) {
func FindOrCreateFederationHostKey(ctx context.Context, keyID string) (pubKey any, err error) {
keyURL, err := url.Parse(keyID)
if err != nil {
return nil, err
@ -183,8 +183,9 @@ func FindOrCreateFederationHostKey(ctx *context_service.Base, keyID string) (pub
return nil, nil
}
func fetchKeyFromAp(ctx *context_service.Base, keyURL url.URL) (pubKey any, pubKeyBytes []byte, apPerson *ap.Person, err error) {
func fetchKeyFromAp(ctx context.Context, keyURL url.URL) (pubKey any, pubKeyBytes []byte, apPerson *ap.Person, err error) {
actionsUser := user.NewAPServerActor()
clientFactory, err := activitypub.GetClientFactory(ctx)
if err != nil {
return nil, nil, nil, err