lemmy icon indicating copy to clipboard operation
lemmy copied to clipboard

[Bug]: Lemmy is asking for a application/ld+json webfinger where it should be jrd+json or xrd+xml

Open Cl0v1s opened this issue 2 years ago • 3 comments

Requirements

  • [X] Is this a bug report? For questions or discussions use https://lemmy.ml/c/lemmy_support
  • [X] Did you check to see if this issue already exists?
  • [X] Is this only a single bug? Do not put multiple bugs in one issue.
  • [ ] Is this a UI / front end issue? Use the lemmy-ui repo.

Summary

When trying to follow a Lemmy instance from external softwares (such as Akkoma), Lemmy starts webfinger queries accepting only a application/ld+json MIME type where it should be jrd+json or xrd+xml https://datatracker.ietf.org/doc/html/rfc7033#page-11

This leads to fails on the foreign server.

Steps to Reproduce

  1. From a foreign instance follow a lemmy account or community
  2. Wait for the Lemmy server to ask for webfinger
  3. Foreign instance fails to answer because of the wrong MIME type

(With foreign instance being pleroma / akkoma)

Technical Details

Crash on Akkoma side, after the Lemmy request:

[error] Internal server error: %Phoenix.NotAcceptableError{message: "no supported media type in accept header.\n\nExpected one of [\"json\", \"jrd+json\", \"xml\", \"xrd+xml\"] but got the following formats:\n\n  * \" application/ld+json\" with extensions: [\"activity+json\", \"application/ld+json\"]\n  \"application/activity+json\" with extensions: [\"activity+json\", \"\"]\n\nTo accept custom formats, register them under the :mime library\nin your config/config.exs file:\n\n    config :mime, :types, %{\n      \"application/xml\" => [\"xml\"]\n    }\n\nAnd then run `mix deps.clean --build mim 
` to force it to be recompiled.\n", accepts: ["json", "jrd+json", "xml", "xrd+xml"], plug_status: 406}

Version

BE: 0.17.4

Lemmy Instance URL

lemmy.world

Cl0v1s avatar Jun 20 '23 16:06 Cl0v1s

I posted about an issue about webfinger searching of lemmy posts in mastodon now not working here and someone mentioned I should mention it in this issue as well in case its related

wakest avatar Jun 23 '23 21:06 wakest

Haven't been able to follow almost any Lemmy groups from Akkoma due to this error, except one for some reason: [email protected], which works just fine.

Maybe they answer differently to the webfinger request?

And maybe that community is all I need... rule

pimeys avatar Jun 23 '23 23:06 pimeys

The root of this issue is in activitypub_federation crate. Webfinger is resolved using generic object fetching here: https://github.com/LemmyNet/activitypub-federation-rust/blob/af92e0d53204a2ccd13bc0db3c58de24bff646bf/src/fetch/webfinger.rs#L39C26-L39C43

And the function for fetching, which due to it being generic has nothing to do with webfinger, accepts only one MIME type and it is activity+json https://github.com/LemmyNet/activitypub-federation-rust/blob/af92e0d53204a2ccd13bc0db3c58de24bff646bf/src/fetch/mod.rs#L54

Houkime avatar Jul 12 '23 10:07 Houkime

Does this need work for the other way around? I notice we don't have handling of this mimetype in our default nginx config

lionirdeadman avatar Jul 21 '23 05:07 lionirdeadman

We route all requests to .well-known path to backend:

https://github.com/LemmyNet/lemmy-ansible/blob/main/templates/nginx_internal.conf#L86

Nutomic avatar Jul 21 '23 11:07 Nutomic

Thanks for your work !

Cl0v1s avatar Jul 26 '23 08:07 Cl0v1s