From bc7b146e914013982652d1deca34c6908015d0b9 Mon Sep 17 00:00:00 2001 From: Niko Abeler Date: Mon, 26 Feb 2024 20:17:53 +0100 Subject: [PATCH] add @context to actor --- web/activity_pub_handler.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/web/activity_pub_handler.go b/web/activity_pub_handler.go index d41f841..4bebe1f 100644 --- a/web/activity_pub_handler.go +++ b/web/activity_pub_handler.go @@ -9,6 +9,7 @@ import ( "owl-blogs/render" vocab "github.com/go-ap/activitypub" + "github.com/go-ap/jsonld" "github.com/gofiber/fiber/v2" ) @@ -42,6 +43,7 @@ func (cfg *ActivityPubConfig) ParseFormData(data model.HttpFormData, binSvc mode type WebfingerResponse struct { Subject string `json:"subject"` + Aliases []string `json:"aliases"` Links []WebfingerLink `json:"links"` } @@ -64,8 +66,18 @@ func (s *ActivityPubServer) HandleWebfinger(ctx *fiber.Ctx) error { s.configRepo.Get(ACT_PUB_CONF_NAME, &apConfig) s.configRepo.Get(config.SITE_CONFIG, &siteConfig) + domain, err := url.Parse(siteConfig.FullUrl) + if err != nil { + return err + } + + subject := ctx.Query("resource", "") + if subject != "acct:"+apConfig.PreferredUsername+"@"+domain.Host { + return ctx.Status(404).JSON(nil) + } + webfinger := WebfingerResponse{ - Subject: ctx.Query("resource"), + Subject: subject, Links: []WebfingerLink{ { @@ -101,8 +113,10 @@ func (s *ActivityPubServer) HandleActor(ctx *fiber.Ctx) error { Owner: vocab.IRI(siteConfig.FullUrl + "/activitypub/actor"), PublicKeyPem: apConfig.PublicKeyPem, } - - data, err := actor.MarshalJSON() + data, err := jsonld.WithContext( + jsonld.IRI(vocab.ActivityBaseURI), + jsonld.IRI(vocab.SecurityContextURI), + ).Marshal(actor) if err != nil { return err }