~cloutier/bird.makeup#3: 
Unable to follow from GoToSocial instance

I've been able to follow bird.makeup accounts from my Mastodon account on mas.to. It works great.

I tried to follow some from my personal GoToSocial instance. I can search with my client and click the "follow" button just fine, but the follow never completes. There doesn't seem to be any return connection from bird.makeup to my instance.

It's not clear if the issue is with GoToSocial or with bird.makeup. I've logged a bug report with GotoSocial here: https://github.com/superseriousbusiness/gotosocial/issues/1340

Status
RESOLVED FIXED
Submitter
Darrin Smart
Assigned to
No-one
Submitted
1 year, 11 months ago
Updated
1 year, 1 month ago
Labels
No labels applied.

~darrinsmart 1 year, 9 months ago

A little update on this - I am now seeing the return connection from bird.makeup (well I was yesterday, but it does not seem to be happening today).

I believe there are two reasons it isn't working.

  1. GoToSocial currently refuses to talk to servers that don't set the User-Agent HTTP header.
  2. GoToSocial requires requires requests to the /users/:username request to have a HTTP signature. My understanding is that it is the same as Mastodon instasnces running in "secure mode" (https://docs.joinmastodon.org/spec/security/).

Looking at ActivityPubService.cs, I see the signing code is there and is used in BuildRequest(), but it is not used in GetUser().

~darrinsmart 1 year, 9 months ago*

I've been hacking my local GoToSocial instance to see if i can get it to work. I've found a couple of other issues:

  1. bird.makeup advertises a sharedInbox for users (via https://bird.makeup/users/:name). GoToSocial accordingly sends the follow request to the shared inbox. The HTTP request is accepted but no follow-acccept comes back. If I'm reading InboxController.cs correctly, only "Delete" activities are implemented for the shared inbox. Simply removing the sharedInbox field should force all servers to send to the user-specific inbox. [I might be wrong here, I'm just reading the bird.makeup source code. I'm surprised as I would have thought this would affect many ActivityPub servers]

  2. When delivering responses to Follow requests, bird.makeup always connects to the /inbox endpoint. This doesn't work with GTS as it doesn't implement or advertise a sharedInbox. BuildRequest() & PostDataAsync() can take a 4th 'inbox' parameter, but it isn't used by SendAcceptFollowAsync() etc

~darrinsmart 1 year, 9 months ago

Also bird.makeup uses a content-type of

application/ld+json; charset=utf-8

when POSTing to other ActivityPub servers. My understanding is the standard (https://www.w3.org/TR/activitypub/#server-to-server-interactions) requires it to be

application/ld+json; profile="https://www.w3.org/ns/activitystreams"

~rursache referenced this from #4 1 year, 9 months ago

~fencken 1 year, 5 months ago

Recently decided to check out Calckey which recently rebranded as firefish. I migrated my list of bird.makeup accounts there and no luck.

Per @Admin at firefish.social "bird.makeup has problems federating with authorized fetch, so it's a technical problem on their side".

Gareth Coles 1 year, 2 months ago · edit

Having done some googling around a while ago, it seems that sending a follow-accept should go a long way to solving this problem.

I'm also using Firefish, for the record, which is a fork of Misskey.

It'd be nice to maybe see some movement on this soon if you have the time - a lot of Fedi users are uncomfortable maintaining an account on the birdsite given how quickly it's sliding into supporting hate.

~jofkos 1 year, 1 month ago*

I implemented the changes necessary for GoToSocial to accept the communications from bird.makeup in https://git.sr.ht/~jofkos/bird.makeup/commit/3bfb1fadc5f20680eea8e9ae4e1bca8b8535935b – so basically, just fixed everything ~darrinsmart pointed out :)

Gareth Coles 1 year, 1 month ago · edit

Has this changeset made it to production? If so, I can confirm that this does not appear to be fixed for following from Firefish instances.

My instance has authorized fetch enabled, but I'm not sure whether that should matter?

~jofkos 1 year, 1 month ago

No, I just submitted it!

Gareth Coles 1 year, 1 month ago · edit

Ah heck, yeah, you're right, obviously!

Sorry, I find sourcehut incredibly difficult to understand.

~jofkos 1 year, 1 month ago*

No worries, same here. I wasn't even sure where to send the patchset to, so I hope it reached ~cloutier.

~cloutier 1 year, 1 month ago

Thank you for your contribution ~jofkos! I have pulled your changes and deployed them to production. Any GoToSocial user here can confirm if it works now?

~jofkos 1 year, 1 month ago

Thanks! One thing I just noticed in the code I submitted, though, is that DeleteRequestedAsync will likely fail right now. GetUser requires a local user (to specify a location for the keyid) and I wasn't sure where to get that from, so I had just put null as a placeholder for now. Just a heads-up!

Also, I was indeed able to follow bird.makeup users from my GoToSocial. :)

Gareth Coles 1 year, 1 month ago · edit

Awesome, glad GoToSocial is working now.

I can confirm this is still an issue for Firefish instances, and presumably Misskey-based instances in general. My assumption is that this tree of forks requires the receipt of a follow acknowledgement.

Is there any information I can dig up that might be useful, or should this go into a different issue?

~jofkos 1 year, 1 month ago

Follow-acknowledgements should be sent (part of the problem with GoToSocial was, that those had the wrong Content-Type), so if you have any more information about what is going wrong (like an error message or something similar) I'd be happy to have a look!

Gareth Coles 1 year, 1 month ago · edit

I've been digging through the logs, but I'm not really finding a whole lot of information. However, maybe comparing what happens when someone follows a bird.makeup user vs another Fediverse user might help?

For bird.makeup users - Nothing logged other than a slow SQL query, which isn't relevant to bird.makeup.

query is slow: INSERT INTO "follow_request"("id", "createdAt", "followeeId", "followerId", "requestId", "followerHost", "followerInbox", "followerSharedInbox", "followeeHost", "followeeInbox", "followeeSharedInbox") VALUES ($1, $2, $3, $4, DEFAULT, $5, DEFAULT, DEFAULT, $6, $7, $8) -- PARAMETERS: ["9n04rgr4gte9dyfb","2023-12-08T11:51:10.480Z","9l3vgu3mku3uabml","9kzivktzxya4s1l7",null,"bird.makeup","https://bird.makeup/users/ujicosnail/inbox","https://bird.makeup/inbox"]
execution time: 908

For other users...

Accept: https://peoplemaking.games/users/jaco#accepts/follows/179221
Fetching metadata of peoplemaking.games ...
Fetching nodeinfo of peoplemaking.games ...
Fetching HTML of peoplemaking.games ...
query is slow: INSERT INTO "following"("id", "createdAt", "followeeId", "followerId", "followerHost", "followerInbox", "followerSharedInbox", "followeeHost", "followeeInbox", "followeeSharedInbox") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) -- PARAMETERS: ["9n04sna4o2fol32s","2023-12-08T11:52:05.596Z","9l5es7igff3ftg83","9kzivktzxya4s1l7",null,null,null,"peoplemaking.games","https://peoplemaking.games/users/jaco/inbox","https://peoplemaking.games/inbox"]
execution time: 388
Successfuly fetched nodeinfo of peoplemaking.games

I dunno, it does still feel like bird.makeup still isn't sending some kind of acknowledgement here?

~jofkos 1 year, 1 month ago*

As I have debugging already set up, I just had a look: Turns out, bird.makeup fails to deserialize activities originating from Firefish because it assumes the @context is a string – which it isn't. This patchset should fix it: :)

https://git.sr.ht/~jofkos/bird.makeup/commit/948ad963a048d961b9f897f0e33b76b8a261cfee

~cloutier 1 year, 1 month ago

Thanks again! Sounds like a correct diagnostic.

I've pulled your changes and made some tweaks as those broke some tests. I just deployed that.

Can people on Firefish test if it works now too?

~cloutier REPORTED FIXED 1 year, 1 month ago

I'm going to close this todo since ~jofkos made GoToSocial work!

There is already a todo for Firefish https://todo.sr.ht/~cloutier/bird.makeup/13 if we can continue the conversation there, we would avoid sending notification to the GoToSocial users following this issue :)

Gareth Coles referenced this from #13 1 year, 1 month ago

Register here or Log in to comment, or comment via email.