Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support Pleroma #12

Open
snarfed opened this issue Oct 16, 2017 · 45 comments
Open

support Pleroma #12

snarfed opened this issue Oct 16, 2017 · 45 comments

Comments

@snarfed
Copy link
Owner

snarfed commented Oct 16, 2017

https://gitgud.io/lambadalambda/pleroma . haven't found a website apart from that. doesn't seem to be used very widely. claims to be OStatus compatible.

@snarfed snarfed changed the title support pleroma support Pleroma Oct 16, 2017
@leenaars
Copy link

leenaars commented Jan 1, 2018

The project meanwhile seems to have matured to its own domain and git repo:

https://git.pleroma.social/pleroma/pleroma

@archaeme
Copy link

archaeme commented Mar 21, 2018

Should note that it's also ActivityPub-compatible as well now.

@vikanezrimaya
Copy link

vikanezrimaya commented Dec 20, 2018

Pleroma seems to gain popularity. It even caused some drama on the fediverse, causing in defederation with several mastodon instances. It is said to be light on resources and I'm moving to it (if you need some assistance with testing, I'd be happy to help!)

@aqeeliz
Copy link

aqeeliz commented Apr 1, 2019

Pleroma is compatible with Mastodon clients, so if Mastodon is working, Pleroma should (at least theoretically) work too.

@swentel
Copy link
Contributor

swentel commented Oct 6, 2020

While working on the Drupal plugin, I finally got successful requests with Pleroma.
You can see a notice at https://kiwifarms.cc/notice/9zpG1WBnWG67cro7bk

@snarfed thinks to look out for:

  • Accept request: you need to pass on the 'id' from the received Follow object into the 'object'. Otherwise it won't work
  • Posting notes/reply: the id of the activity and object must be different. The object also needs the attributedTo property.

That should do it.

@snarfed
Copy link
Owner Author

snarfed commented Oct 6, 2020

thank you @swentel! great sleuthing, really useful info.

and funny coincidence, i've been troubleshooting Pleroma compatibility in Bridgy itself recently too, eg snarfed/bridgy#977 .

@jk-na
Copy link

jk-na commented Mar 10, 2021

I'm sure this doesn't add much of any substance that you didn't already know, however, I've just configured my site to use bridgy-fed and was successfully able to reply to a mastodon post (yours @snarfed ) but not a pleroma post on my site.

The following is the feedback from webmention.app:

source= https://fed.brid.gy/
target= 502 https://fed.brid.gy/webmention
400 Client Error: Bad Request for url: https://social.nipponalba.scot/users/jk/inbox ; "error" 

Apologies in advance if once again this is down to my particular instance not playing ball.

@jk-na
Copy link

jk-na commented Mar 10, 2021

The following are the (debug enabled) logs of an attempt to reply to pleroma:

Mar 10 13:54:17 MatrixRock pleroma[7585]: 13:54:17.446 [info] POST /users/jk/inbox
Mar 10 13:54:17 MatrixRock pleroma[7585]: 13:54:17.448 request_id=Fmr_mvne5kH7O3MADlJi [debug] POST /users/jk/inbox
Mar 10 13:54:17 MatrixRock pleroma[7585]: 13:54:17.462 request_id=Fmr_mvne5kH7O3MADlJi [debug] Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2
Mar 10 13:54:17 MatrixRock pleroma[7585]:   Parameters: %{"@context" => "https://www.w3.org/ns/activitystreams", "nickname" => "jk", "object" => %{"@context" => "https://www.w3.org/ns/activitystreams", "attachment" => [%{"name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿's avatar Wed, 10 Mar 2021 10:50:00 GMT\nRight then, if I've fixed my atom feed and added the link to bridgy fed for posts.. nginx rule added.. so long as my beehive -&gt; webmention.app process works then maybe my site is now activitypubbed.. maybe.. (https://jk.nipponalba.scot/note/6048a457/)", "type" => "Note"}], "attributedTo" => [%{"icon" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "id" => "https://fed.brid.gy/jk.nipponalba.scot", "image" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername" => "jk.nipponalba.scot", "type" => "Person", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot"}], "cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://social.nipponalba.scot/users/jk", "https://social.nipponalba.scot/users/jk/followers"], "content" => "<br/><p>If you can see this, it worked!</p>", "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6048bcde/", "inReplyTo" => "https://social.nipponalba.scot/objects/1bf56236-fe1f-4f3c-9978-7b3eabcf73b5", "name" => "If you can see this, it worked!", "published" => "10 Mar 2021 12:34 GMT", "tag" => [%{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}, %{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}], "type" => "Note", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6048bcde/", "urls" => [%{"value" => "https://jk.nipponalba.scot/response/6048bcde/"}, %{"value" => "https://fed.brid.gy/"}]}, "type" => "Create"}
Mar 10 13:54:17 MatrixRock pleroma[7585]:   Pipelines: [:activitypub]
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.128 request_id=Fmr_mvne5kH7O3MADlJi [debug] Couldn't parse XML: "{\n  \"subject\": \"acct:jk.nipponalba.scot@jk.nipponalba.scot\",\n  \"aliases\": [\n    \"https://jk.nipponalba.scot/\",\n    \"https://social.nipponalba.scot/jk\",\n    \"https://px.nipponalba.scot/jk\"\n  ],\n  \"magic_keys\": [\n    {\n      \"value\": \"data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB\"\n    }\n  ],\n  \"links\": [\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"type\": \"text/html\",\n      \"href\": \"https://jk.nipponalba.scot/\"\n    },\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"type\": \"text/html\",\n      \"href\": \"https://social.nipponalba.scot/jk\"\n    },\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"type\": \"text/html\",\n      \"href\": \"https://px.nipponalba.scot/jk\"\n    },\n    {\n      \"rel\": \"http://webfinger.net/rel/avatar\",\n      \"href\": {\n        \"value\": \"https://jk.nipponalba.scot/images/profile.jpg\",\n        \"alt\": \"profile picture\"\n      }\n    },\n    {\n      \"rel\": \"canonical_uri\",\n      \"type\": \"text/html\",\n      \"href\": \"https://jk.nipponalba.scot/\"\n    },\n    {\n      \"rel\": \"self\",\n      \"type\": \"application/activity+json\",\n      \"href\": \"https://fed.brid.gy/jk.nipponalba.scot\"\n    },\n    {\n      \"rel\": \"inbox\",\n      \"type\": \"application/activity+json\",\n      \"href\": \"https://fed.brid.gy/jk.nipponalba.scot/inbox\"\n    },\n    {\n      \"rel\": \"http://schemas.google.com/g/2010#updates-from\",\n      \"type\": \"application/atom+xml\",\n      \"href\": \"http://jk.nipponalba.scot/atom.xml\"\n    },\n    {\n      \"rel\": \"hub\",\n      \"href\": \"https://bridgy-fed.superfeedr.com/\"\n    },\n    {\n      \"rel\": \"magic-public-key\",\n      \"href\": \"data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB\"\n    },\n    {\n      \"rel\": \"salmon\",\n      \"href\": \"https://fed.brid.gy/jk.nipponalba.scot/salmon\"\n    }\n  ]\n}"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.130 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: "text/html"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.131 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: "text/html"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.131 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: "text/html"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.132 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: nil
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.133 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: "text/html"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.134 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: "application/activity+json"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.136 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: "application/atom+xml"
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.137 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: nil
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.138 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: nil
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.139 request_id=Fmr_mvne5kH7O3MADlJi [debug] Unhandled type: nil
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.140 request_id=Fmr_mvne5kH7O3MADlJi [debug] Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}}
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.141 request_id=Fmr_mvne5kH7O3MADlJi [debug] Signature missing or not from author, relayed Create message, fetching object from source
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.150 request_id=Fmr_mvne5kH7O3MADlJi [debug] QUERY OK source="objects" db=6.3ms queue=0.4ms idle=261.1ms
Mar 10 13:54:21 MatrixRock pleroma[7585]: SELECT o0."id", o0."data", o0."inserted_at", o0."updated_at" FROM "objects" AS o0 WHERE ((o0."data")->>'id' = $1) ["https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6048bcde/"]
Mar 10 13:54:21 MatrixRock pleroma[7585]: 13:54:21.150 request_id=Fmr_mvne5kH7O3MADlJi [debug] Fetching object https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6048bcde/ via AP
Mar 10 13:54:22 MatrixRock pleroma[7585]: 13:54:22.200 request_id=Fmr_mvne5kH7O3MADlJi [debug] Sent 200 in 4751ms
Mar 10 13:54:22 MatrixRock pleroma[7585]: 13:54:22.200 request_id=Fmr_mvne5kH7O3MADlJi [info] Sent 200 in 4754ms

@snarfed
Copy link
Owner Author

snarfed commented Mar 10, 2021

Thanks for the details!

Here's also the complete AS2 activity that Bridgy Fed sent to https://social.nipponalba.scot/users/jk/inbox , and got a 200 back for, from Bridgy Fed's log.

One thing I notice is that the object has an id, but the activity doesn't, and @swentel said above:

Posting notes/reply: the id of the activity and object must be different. The object also needs the attributedTo property.

I can look into adding an activity id.

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "type": "Create",
  "object": {
    "published": "10 Mar 2021 12:34 GMT",
    "content": "<br/><p>If you can see this, it worked!</p>",
    "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6048bcde/",
    "urls": [
      {"value": "https://jk.nipponalba.scot/response/6048bcde/"},
      {"value": "https://fed.brid.gy/"}
    ],
    "inReplyTo": "https://social.nipponalba.scot/objects/1bf56236-fe1f-4f3c-9978-7b3eabcf73b5",
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Note",
    "name": "If you can see this, it worked!",
    "attachment": [
      {
        "type": "Note",
        "name": "J K \ud83c\uddef\ud83c\uddf5\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f's avatar Wed, 10 Mar 2021 10:50:00 GMT\nRight then, if I've fixed my atom feed and added the link to bridgy fed for posts.. nginx rule added.. so long as my beehive -&gt; webmention.app process works then maybe my site is now activitypubbed.. maybe.. (https://jk.nipponalba.scot/note/6048a457/)"
      }
    ],
    "attributedTo": [
      {
        "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot",
        "type": "Person",
        "name": "J K \ud83c\uddef\ud83c\uddf5\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f | personal site",
        "image": [
          {
            "url": "https://jk.nipponalba.scot/images/profile.jpg",
            "type": "Image"
          }
        ],
        "icon": [
          {
            "url": "https://jk.nipponalba.scot/images/profile.jpg",
            "type": "Image"
          }
        ],
        "preferredUsername": "jk.nipponalba.scot",
        "id": "https://fed.brid.gy/jk.nipponalba.scot"
      }
    ],
    "tag": [
      {
        "type": "Mention",
        "href": "https://social.nipponalba.scot/users/jk"
      },
      {
        "type": "Mention",
        "href": "https://social.nipponalba.scot/users/jk"
      }
    ],
    "id": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6048bcde/",
    "cc": [
      "https://www.w3.org/ns/activitystreams#Public",
      "https://social.nipponalba.scot/users/jk",
      "https://social.nipponalba.scot/users/jk/followers"
    ]
  }
}

snarfed added a commit that referenced this issue Mar 11, 2021
@snarfed
Copy link
Owner Author

snarfed commented Mar 11, 2021

I've added an id to outbound AS2 activities. Feel free to try again!

@jk-na
Copy link

jk-na commented Mar 11, 2021

I've tried again and am seeing a similar pattern to above - there are 200 responses but there are also errors relating to signatures and failures to parse xml.

Mar 11 09:42:22 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] POST /users/jk/inbox
Mar 11 09:42:22 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012  Parameters: %{"@context" => "https://www.w3.org/ns/activitystreams", "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d413/#bridgy-fed-create", "nickname" => "jk", "object" => %{"@context" => "https://www.w3.org/ns/activitystreams", "attributedTo" => [%{"icon" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "id" => "https://fed.brid.gy/jk.nipponalba.scot", "image" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername" => "jk.nipponalba.scot", "type" => "Person", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot"}], "cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://social.nipponalba.scot/users/jk", "https://social.nipponalba.scot/users/jk/followers"], "content" => "<br/><p>Testing</p>", "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d413/", "inReplyTo" => "https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61", "name" => "Testing", "published" => "11 Mar 2021 08:25 GMT", "tag" => [%{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}, %{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}], "type" => "Note", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d413/", "urls" => [%{"value" => "https://jk.nipponalba.scot/response/6049d413/"}, %{"value" => "https://fed.brid.gy/"}]}, "type" => "Create"}#012  Pipelines: [:activitypub]
Mar 11 09:42:25 MatrixRock pleroma: [debug] QUERY OK source="users" db=1077.5ms decode=0.7ms queue=0.1ms idle=110.3ms#012SELECT distinct split_part(u0."nickname", '@', 2) FROM "users" AS u0 WHERE (u0."local" != $1) [true]
Mar 11 09:42:25 MatrixRock pleroma: [debug] QUERY OK source="users" db=4.6ms queue=0.2ms idle=194.6ms#012SELECT sum(u0."note_count") FROM "users" AS u0 WHERE (NOT (u0."nickname" IS NULL)) AND (NOT (u0."nickname" LIKE 'internal.%')) AND (u0."local" = $1) [true]
Mar 11 09:42:25 MatrixRock pleroma: [debug] QUERY OK source="users" db=4.9ms queue=1.1ms idle=197.8ms#012SELECT count(u0."id") FROM "users" AS u0 WHERE (u0."is_active" = TRUE) AND (u0."local" = TRUE) AND (NOT (u0."nickname" IS NULL)) AND (NOT (u0."invisible")) []
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Couldn't parse XML: "{\n  \"subject\": \"acct:jk.nipponalba.scot@jk.nipponalba.scot\",\n  \"aliases\": [\n    \"https://jk.nipponalba.scot/\",\n    \"https://social.nipponalba.scot/jk\",\n    \"https://px.nipponalba.scot/jk\"\n  ],\n  \"magic_keys\": [\n    {\n      \"value\": \"data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB\"\n    }\n  ],\n  \"links\": [\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"type\": \"text/html\",\n      \"href\": \"https://jk.nipponalba.scot/\"\n    },\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"type\": \"text/html\",\n      \"href\": \"https://social.nipponalba.scot/jk\"\n    },\n    {\n      \"rel\": \"http://webfinger.net/rel/profile-page\",\n      \"type\": \"text/html\",\n      \"href\": \"https://px.nipponalba.scot/jk\"\n    },\n    {\n      \"rel\": \"http://webfinger.net/rel/avatar\",\n      \"href\": {\n        \"value\": \"https://jk.nipponalba.scot/images/profile.jpg\",\n        \"alt\": \"profile picture\"\n      }\n    },\n    {\n      \"rel\": \"canonical_uri\",\n      \"type\": \"text/html\",\n      \"href\": \"https://jk.nipponalba.scot/\"\n    },\n    {\n      \"rel\": \"self\",\n      \"type\": \"application/activity+json\",\n      \"href\": \"https://fed.brid.gy/jk.nipponalba.scot\"\n    },\n    {\n      \"rel\": \"inbox\",\n      \"type\": \"application/activity+json\",\n      \"href\": \"https://fed.brid.gy/jk.nipponalba.scot/inbox\"\n    },\n    {\n      \"rel\": \"http://schemas.google.com/g/2010#updates-from\",\n      \"type\": \"application/atom+xml\",\n      \"href\": \"http://jk.nipponalba.scot/atom.xml\"\n    },\n    {\n      \"rel\": \"hub\",\n      \"href\": \"https://bridgy-fed.superfeedr.com/\"\n    },\n    {\n      \"rel\": \"magic-public-key\",\n      \"href\": \"data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB\"\n    },\n    {\n      \"rel\": \"salmon\",\n      \"href\": \"https://fed.brid.gy/jk.nipponalba.scot/salmon\"\n    }\n  ]\n}"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: "text/html"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: "text/html"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: "text/html"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: nil
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: "text/html"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: "application/activity+json"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: "application/atom+xml"
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: nil
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: nil
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Unhandled type: nil
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}}
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Signature missing or not from author, relayed Create message, fetching object from source
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] QUERY OK source="objects" db=5.6ms queue=0.4ms idle=258.2ms#012SELECT o0."id", o0."data", o0."inserted_at", o0."updated_at" FROM "objects" AS o0 WHERE ((o0."data")->>'id' = $1) ["https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d413/"]
Mar 11 09:42:25 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Fetching object https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d413/ via AP
Mar 11 09:42:26 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] QUERY OK source="objects" db=6.4ms queue=0.2ms idle=348.7ms#012SELECT o0."id", o0."data", o0."inserted_at", o0."updated_at" FROM "objects" AS o0 WHERE ((o0."data")->>'id' = $1) ["https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d413/#bridgy-fed-create"]
Mar 11 09:42:26 MatrixRock pleroma: request_id=FmtAcEQM0DZ8z1UAFDvB [debug] Sent 200 in 3997ms

Not sure if perhaps:
Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}}
or
Couldn't parse XML
are at all relevant?

The first of those seems similar in nature to the pixelfed error, could it be that the AP spec has it that the key needs to be formatted in a certain way (which pixelfed and pleroma perhaps require) but mastodon have a workaround in place that converts one format to the other?

@jk-na
Copy link

jk-na commented Mar 11, 2021

The mastodon activitypub page has the key id in the format of "https://mastodon.social/users/Gargron#main-key" rather than the webfinger format above. I may however be reading way too much into this, and it could well be a red herring.

@snarfed
Copy link
Owner Author

snarfed commented Mar 11, 2021

@jk-na those are all good clues!

I did notice one other quirk: it looks like your site's redirects to Bridgy Fed are duplicating the query parameters. eg https://jk.nipponalba.scot/.well-known/webfinger?resource=acct:jk.nipponalba.scot@jk.nipponalba.scot currently redirects to https://fed.brid.gy/.well-known/webfinger?resource=acct:jk.nipponalba.scot@jk.nipponalba.scot?resource=acct:jk.nipponalba.scot@jk.nipponalba.scot. Bridgy Fed still serves that request fine though, for just jk.nipponalba.scot@jk.nipponalba.scot, so I doubt it's the cause here.

@jk-na
Copy link

jk-na commented Mar 11, 2021

How bizarre, I just copied and pasted the nginx redirect from the set up instructions to my proxy server, I'll double-check it though.

@snarfed
Copy link
Owner Author

snarfed commented Mar 11, 2021

Also, Couldn't parse XML is odd. ActivityPub is all JSON afaik, the term XML literally doesn't appear anywhere on https://w3c.github.io/activitypub/ , so I'm not sure where Pleroma is expecting XML.

@snarfed
Copy link
Owner Author

snarfed commented Mar 11, 2021

Based on the logs, it looks like Pleroma is trying to parse the JSON WebFinger response as XML, which explains that error and why it can't find or validate your public key. I'll try to figure out why.

@jk-na
Copy link

jk-na commented Mar 11, 2021

I fixed the duplication by adding a ? to the end of the rewrite target..

rewrite ^/.well-known/(host-meta|webfinger).* https://fed.brid.gy$request_uri? redirect;

Interestingly, I don't now get the webmention.app error, instead receiving a 200 response. Received the error on the second attempt.. same errors at the pleroma end.

@jk-na
Copy link

jk-na commented Mar 11, 2021

The following is an excerpt from a successful POST to my inbox and might provide a clue or more confusion, it is from a mastodon account, I think:

Mar 11 21:48:56 MatrixRock pleroma: [info] POST /inbox
Mar 11 21:48:56 MatrixRock pleroma: request_id=FmtoFl8HNVPrWxgAEQ-j [debug] POST /inbox
Mar 11 21:48:56 MatrixRock pleroma: request_id=FmtoFl8HNVPrWxgAEQ-j [debug] Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012  Parameters: %{"@context" => ["https://www.w3.org/ns/activitystreams", %{"atomUri" => "ostatus:atomUri", "conversation" => "ostatus:conversation", "inReplyToAtomUri" => "ostatus:inReplyToAtomUri", "ostatus" => "http://ostatus.org#", "sensitive" => "as:sensitive", "toot" => "http://joinmastodon.org/ns#", "votersCount" => "toot:votersCount"}], "actor" => "https://rage.love/users/pfx", "cc" => [], "id" => "https://rage.love/users/pfx/statuses/105873364426273091/activity", "object" => %{"atomUri" => "https://rage.love/users/pfx/statuses/105873364426273091", "attachment" => [], "attributedTo" => "https://rage.love/users/pfx", "cc" => [], "content" => "<p>mmm nectarines with the texture of a old apple</p>", "contentMap" => %{"en" => "<p>mmm nectarines with the texture of a old apple</p>"}, "conversation" => "tag:rage.love,2021-03-11:objectId=5836645:objectType=Conversation", "id" => "https://rage.love/users/pfx/statuses/105873364426273091", "inReplyTo" => nil, "inReplyToAtomUri" => nil, "published" => "2021-03-11T21:48:55Z", "replies" => %{"first" => %{"items" => [], "next" => "https://rage.love/users/pfx/statuses/105873364426273091/replies?only_other_accounts=true&page=true", "partOf" => "https://rage.love/users/pfx/statuses/105873364426273091/replies", "type" => "CollectionPage"}, "id" => "https://rage.love/users/pfx/statuses/105873364426273091/replies", "type" => "Collection"}, "sensitive" => true, "summary" => "food", "tag" => [], "to" => ["https://rage.love/users/pfx/followers"], "type" => "Note", "url" => "https://rage.love/@pfx/105873364426273091"}, "published" => "2021-03-11T21:48:55Z", "to" => ["https://rage.love/users/pfx/followers"], "type" => "Create"}#012  Pipelines: [:activitypub]
Mar 11 21:48:56 MatrixRock pleroma: request_id=FmtoFl8HNVPrWxgAEQ-j [debug] Signature: IUDKbTJA9AnMERaKNHEN8ayG9G+jrsHsy8gFGoUjA3fqcgioDGkg+Cz4S+MZnvnB5LwZRDsMNb/AoquHESVbY6GPvEVusUk0JVz8WcIKFEwDdCqoVkhW7rnXMYLBs8bJ4+qpUBKV2lfljJCE4xVLVT8L9ZHXrYaksKk3qOkAq0P1/QQqaXrkvOniVw0T33RnY5MggQyXPidc1rtxPTqlCHogvsRpWMKplr3qo4xIIM36TT2zpsvzThJBTs5q0zrd9HfCreHx8NOYyDaO95L0y5Jdnnb1wfKi9yLY45mv8oBw7yCT4oy7UWpi/zvFq1/QLvKHXqrEcz4FaJNMCxWUQw==
Mar 11 21:48:56 MatrixRock pleroma: request_id=FmtoFl8HNVPrWxgAEQ-j [debug] Sigstring: (request-target): post /inbox#012host: social.nipponalba.scot#012date: Thu, 11 Mar 2021 21:48:56 GMT#012digest: SHA-256=ZaO6N06SYi9mA9R095sODVeuVud3eiPukDra3aYwCvc=#012content-type: application/activity+json
Mar 11 21:48:56 MatrixRock pleroma: request_id=FmtoFl8HNVPrWxgAEQ-j [debug] QUERY OK source="instances" db=4.7ms queue=0.2ms idle=440.6ms#012SELECT i0."id", i0."host", i0."unreachable_since", i0."favicon", i0."favicon_updated_at", i0."inserted_at", i0."updated_at" FROM "instances" AS i0 WHERE (i0."host" = $1) ["rage.love"]
Mar 11 21:48:56 MatrixRock pleroma: request_id=FmtoFl8HNVPrWxgAEQ-j [debug] Sent 200 in 30ms

@snarfed
Copy link
Owner Author

snarfed commented Mar 11, 2021

The WebFinger spec says:

The WebFinger resource returns a JSON Resource Descriptor (JRD) as the resource representation to convey information about an entity on the Internet.

I did notice that the official mime type for JRD is application/jrd+json, but Bridgy Fed currently returns application/json. I've fixed that, feel free to try again.

@jk-na
Copy link

jk-na commented Mar 11, 2021

After much backslash removal, this is the bit that pleroma seems to be having with:

Couldn't parse XML: "{
			"subject": "acct:jk.nipponalba.scot@jk.nipponalba.scot",
			"aliases": ["https://jk.nipponalba.scot/", "https://social.nipponalba.scot/jk", "https://px.nipponalba.scot/jk"],
			"magic_keys": [{"value": "data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB"}],
			"links": [{"rel": "http://webfinger.net/rel/profile-page",
			         "type": "text/html",
				 "href": "https://jk.nipponalba.scot/"},
		         {"rel": "http://webfinger.net/rel/profile-page",
			 	 "type": "text/html",
			 	 "href": "https://social.nipponalba.scot/jk"},
			 {"rel": "http://webfinger.net/rel/profile-page",
			 	 "type": "text/html", 
				 "href": "https://px.nipponalba.scot/jk"},
			 {"rel": "http://webfinger.net/rel/avatar",
	                         "href": {"value": "https://jk.nipponalba.scot/images/profile.jpg",
			           	    "alt": "profile picture"}},
			 {"rel": "canonical_uri",
				 "type": "text/html",
				 "href": "https://jk.nipponalba.scot/"},
			 {"rel": "self",
				 "type": "application/activity+json",
				 "href": "https://fed.brid.gy/jk.nipponalba.scot"},
			 {"rel": "inbox",
				 "type": "application/activity+json",
				 "href": "https://fed.brid.gy/jk.nipponalba.scot/inbox"},
			 {"rel": "http://schemas.google.com/g/2010#updates-from",
				 "type": "application/atom+xml"
				 "href": "http://jk.nipponalba.scot/atom.xml"},
			 {"rel": "hub",
			   	 "href": "https://bridgy-fed.superfeedr.com/"},
			 {"rel": "magic-public-key",
				 "href": "data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB"},
			 {"rel": "salmon",
				 "href": "https://fed.brid.gy/jk.nipponalba.scot/salmon"}]}"

I'll try again.

@jk-na
Copy link

jk-na commented Mar 11, 2021

The WebFinger spec says:

The WebFinger resource returns a JSON Resource Descriptor (JRD) as the resource representation to convey information about an entity on the Internet.

I did notice that the official mime type for JRD is application/jrd+json, but Bridgy Fed currently returns application/json. I've fixed that, feel free to try again.

Still the same error.

For ease of reading, I've tried to format the payload being processed by the inbox controller, I can see some differences but I don't know what is and isn't mandatory unfortunately.

First one is the mastodon transaction from above, second is one of my attempts via bridgy fed

Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012  
Parameters: 
	%{"@context" => 
		["https://www.w3.org/ns/activitystreams", 
		 %{
			"atomUri" => "ostatus:atomUri", 
			"conversation" => "ostatus:conversation", 
			"inReplyToAtomUri" => "ostatus:inReplyToAtomUri", 
			"ostatus" => "http://ostatus.org#", "
			sensitive" => "as:sensitive", 
			"toot" => "http://joinmastodon.org/ns#", 
			"votersCount" => "toot:votersCount"
		 }
		], 
		"actor" => "https://rage.love/users/pfx", 
		"cc" => [], 
		"id" => "https://rage.love/users/pfx/statuses/105873364426273091/activity", 
		"object" => %{
				"atomUri" => "https://rage.love/users/pfx/statuses/105873364426273091", 
				"attachment" => [], 
				"attributedTo" => "https://rage.love/users/pfx", 
				"cc" => [], 
				"content" => "<p>mmm nectarines with the texture of a old apple</p>", 
				"contentMap" => %{"en" => "<p>mmm nectarines with the texture of a old apple</p>"}, 
				"conversation" => "tag:rage.love,2021-03-11:objectId=5836645:objectType=Conversation", 
				"id" => "https://rage.love/users/pfx/statuses/105873364426273091", 
				"inReplyTo" => nil, 
				"inReplyToAtomUri" => nil, 
				"published" => "2021-03-11T21:48:55Z", 
				"replies" => %{
						"first" => %{
								"items" => [], 
								"next" => "https://rage.love/users/pfx/statuses/105873364426273091/replies?only_other_accounts=true&page=true", 
								"partOf" => "https://rage.love/users/pfx/statuses/105873364426273091/replies", 
								"type" => "CollectionPage"}, 
						"id" => "https://rage.love/users/pfx/statuses/105873364426273091/replies", 
						"type" => "Collection"}, 
				"sensitive" => true, 
				"summary" => "food", 
				"tag" => [], 
				"to" => ["https://rage.love/users/pfx/followers"], 
				"type" => "Note", 
				"url" => "https://rage.love/@pfx/105873364426273091"}, 
		"published" => "2021-03-11T21:48:55Z", 
		"to" => ["https://rage.love/users/pfx/followers"], 
		"type" => "Create"}
#012  Pipelines: [:activitypub]


Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012  
Parameters: 
	%{"@context" => "https://www.w3.org/ns/activitystreams", 
	"id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/#bridgy-fed-create", 
	"nickname" => "jk", 
	"object" => %{
		"@context" => "https://www.w3.org/ns/activitystreams", 
		"attributedTo" => [%{"icon" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], 
			"id" => "https://fed.brid.gy/jk.nipponalba.scot", 
			"image" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], 
			"name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", 
			"preferredUsername" => "jk.nipponalba.scot", 
			"type" => "Person", 
			"url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot"}], 
		"cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://social.nipponalba.scot/users/jk", "https://social.nipponalba.scot/users/jk/followers"], 
		"content" => "<br/><p>Test #2</p>", 
		"id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", 
		"inReplyTo" => "https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61", 
		"name" => "Test #2", 
		"published" => "11 Mar 2021 08:44 GMT", 
		"tag" => [%{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}, %{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}], 
		"type" => "Note", 
		"url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", 
		"urls" => [%{"value" => "https://jk.nipponalba.scot/response/6049d880/"}, %{"value" => "https://fed.brid.gy/"}]
         }, 
	"type" => "Update"}

#012  Pipelines: [:activitypub]

@jk-na
Copy link

jk-na commented Mar 11, 2021

I had a look at my webfinger response for my pleroma account and the following is the output (I found the xml)

<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
   <Subject>acct:jk@social.nipponalba.scot</Subject>
   <Alias>https://social.nipponalba.scot/users/jk</Alias>
   <Link href="https://social.nipponalba.scot/users/jk" rel="http://webfinger.net/rel/profile-page" type="text/html" />
   <Link href="https://social.nipponalba.scot/users/jk" rel="self" type="application/activity+json" />
   <Link href="https://social.nipponalba.scot/users/jk" rel="self" type="application/ld+json; profile=&quot;https://www.w3.org/ns/activitystreams&quot;" />
   <Link rel="http://ostatus.org/schema/1.0/subscribe" template="https://social.nipponalba.scot/ostatus_subscribe?acct={uri}" />
</XRD>

@snarfed
Copy link
Owner Author

snarfed commented Mar 11, 2021

Thanks! Yup, that's XML-based XRD. I can try supporting that and see if it works then.

@jk-na
Copy link

jk-na commented Mar 11, 2021

This one is from my test mastodon account:

{
"subject":"acct:jk_na@mastodon.scot",
"aliases":["https://mastodon.scot/@jk_na","https://mastodon.scot/users/jk_na"],
"links":[
	{"rel":"http://webfinger.net/rel/profile-page",
	 "type":"text/html","href":"https://mastodon.scot/@jk_na"},
	{"rel":"self",
	 "type":"application/activity+json",
	 "href":"https://mastodon.scot/users/jk_na"},
	{"rel":"http://ostatus.org/schema/1.0/subscribe",
	 "template":"https://mastodon.scot/authorize_interaction?uri={uri}"}
	]
}

@snarfed
Copy link
Owner Author

snarfed commented Mar 12, 2021

OK, Bridgy Fed's WebFinger now supports XRD. If you fetch it with `Accept: application/xrd' or 'application/xml', it now returns similar XRD to Pleroma's. Feel free to retry. Thanks again for all the testing!

@jk-na
Copy link

jk-na commented Mar 12, 2021

I think we're almost there.. the error message is smaller!

Couldn't parse XML: "{\"links\": [\n  {\n    \"rel\": \"lrdd\",\n    \"type\": \"application/json\",\n    \"template\": \"https://fed.brid.gy/.well-known/webfinger?resource={uri}\"\n   }\n  ]\n}"
Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}}

When I look at the webfinger, I don't see any rel for lrdd so I'm not sure but also the subject element is empty.

<?xml version='1.0' encoding='UTF-8'?>
<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'>

    <Subject></Subject>
    <Alias>https://jk.nipponalba.scot/</Alias>

    
    <Link rel='http://webfinger.net/rel/profile-page' type='text/html' href='https://jk.nipponalba.scot/' />
    
    <Link rel='http://webfinger.net/rel/profile-page' type='text/html' href='https://social.nipponalba.scot/jk' />
    
    <Link rel='http://webfinger.net/rel/profile-page' type='text/html' href='https://px.nipponalba.scot/jk' />
    
    <Link rel='http://webfinger.net/rel/avatar' type='' href='https://jk.nipponalba.scot/images/profile.jpg' />
    
    <Link rel='canonical_uri' type='text/html' href='https://jk.nipponalba.scot/' />
    
    <Link rel='self' type='application/activity+json' href='https://fed.brid.gy/jk.nipponalba.scot' />
    
    <Link rel='inbox' type='application/activity+json' href='https://fed.brid.gy/jk.nipponalba.scot/inbox' />
    
    <Link rel='http://schemas.google.com/g/2010#updates-from' type='application/atom+xml' href='http://jk.nipponalba.scot/atom.xml' />
    
    <Link rel='hub' type='' href='https://bridgy-fed.superfeedr.com/' />
    
    <Link rel='magic-public-key' type='' href='data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB' />
    
    <Link rel='salmon' type='' href='https://fed.brid.gy/jk.nipponalba.scot/salmon' />
    

    
    <Property xmlns:mk="http://salmon-protocol.org/ns/magic-key"
              type="http://salmon-protocol.org/ns/magic-key">
      data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB
    </Property>
    
</XRD>

snarfed added a commit that referenced this issue Mar 12, 2021
@snarfed
Copy link
Owner Author

snarfed commented Mar 12, 2021

Thanks! I should really set up my own local Pleroma instance to do this testing. 😆

That new JSON is .well-known/host-meta, it needs to be XRD too. I'll do that.

@jk-na
Copy link

jk-na commented Mar 12, 2021

I'm more than happy to troubleshoot and help with the services I host, which looking at the list of compatibility issues is currently just pleroma and pixelfed as I no longer have plume, peertube, friendica or diaspora instances.

@snarfed
Copy link
Owner Author

snarfed commented Mar 12, 2021

OK, /.well-known/host-meta now defaults to XRD, as the spec says it's supposed to. Ready to retry.

@jk-na
Copy link

jk-na commented Mar 12, 2021

Sorry to say that it has gone back to having issues parsing /.well-known/webfinger, the property element at the end seems to be missing from the error.. so possibly it is struggling with that?

Couldn't parse XML: "{\n \"subject\": \"acct:jk.nipponalba.scot@jk.nipponalba.scot\",\n \"aliases\": [\n \"https://jk.nipponalba.scot/\",\n \"https://social.nipponalba.scot/jk\",\n \"https://px.nipponalba.scot/jk\"\n ],\n \"magic_keys\": [\n {\n \"value\": \"data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB\"\n }\n ],\n \"links\": [\n {\n \"rel\": \"http://webfinger.net/rel/profile-page\",\n \"type\": \"text/html\",\n \"href\": \"https://jk.nipponalba.scot/\"\n },\n {\n \"rel\": \"http://webfinger.net/rel/profile-page\",\n \"type\": \"text/html\",\n \"href\": \"https://social.nipponalba.scot/jk\"\n },\n {\n \"rel\": \"http://webfinger.net/rel/profile-page\",\n \"type\": \"text/html\",\n \"href\": \"https://px.nipponalba.scot/jk\"\n },\n {\n \"rel\": \"http://webfinger.net/rel/avatar\",\n \"href\": \"https://jk.nipponalba.scot/images/profile.jpg\"\n },\n {\n \"rel\": \"canonical_uri\",\n \"type\": \"text/html\",\n \"href\": \"https://jk.nipponalba.scot/\"\n },\n {\n \"rel\": \"self\",\n \"type\": \"application/activity+json\",\n \"href\": \"https://fed.brid.gy/jk.nipponalba.scot\"\n },\n {\n \"rel\": \"inbox\",\n \"type\": \"application/activity+json\",\n \"href\": \"https://fed.brid.gy/jk.nipponalba.scot/inbox\"\n },\n {\n \"rel\": \"http://schemas.google.com/g/2010#updates-from\",\n \"type\": \"application/atom+xml\",\n \"href\": \"https://jk.nipponalba.scot/atom.xml\"\n },\n {\n \"rel\": \"hub\",\n \"href\": \"https://bridgy-fed.superfeedr.com/\"\n },\n {\n \"rel\": \"magic-public-key\",\n \"href\": \"data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB\"\n },\n {\n \"rel\": \"salmon\",\n \"href\": \"https://fed.brid.gy/jk.nipponalba.scot/salmon\"\n }\n ]\n}"

    <Property xmlns:mk="http://salmon-protocol.org/ns/magic-key"
              type="http://salmon-protocol.org/ns/magic-key">
      data:application/magic-public-key,RSA.3Wq8cM8ZzWydoZ3ljmB5GCaMJKcooELcZVHdFY4EkB8MVPZFqn26xwVQA8k7XKov-HQM0Hd1JwiNUzzZ5-Cz2WPT1qIlnd2ZdfxHyxcTuy1PRku33Ei0JMo-STYUpTdyPED7nWW8m64EQ1WWKKA3tQ_uduSixqgtmo6yFTog0U0=.AQAB
    </Property>

@snarfed
Copy link
Owner Author

snarfed commented Mar 12, 2021

Ugh, thanks. We're back to serving JSON (JRD), and they're trying to parse it as XML (XRD), and failing.

I finally got a look at the HTTP request headers Pleroma is sending, and notably they include Accept: application/xrd+xml, application/jrd+json. We're returning JRD, with Content-Type: application/jrd+json, which they say they'll accept, but then they incorrectly try to parse it as XML. May be worth filing as a bug with them.

In the meantime, I'll work on more sophisticated Accept parsing and actual content negotiation. Ugh. Conneg is the worst. 😆

@snarfed
Copy link
Owner Author

snarfed commented Mar 14, 2021

OK! Done, we now handle their Accept header and return XRD for both host-meta and webfinger queries.

snarfed added a commit to snarfed/webutil that referenced this issue Mar 14, 2021
@jk-na
Copy link

jk-na commented Mar 14, 2021

Parsing-wise it looks better indeed, it seems like the request is being processed by pleroma but I don't see a follow up DB write.. and still getting this Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}}

As per below it looks like it is passing the earlier hurdles.

Mar 14 19:45:48 MatrixRock pleroma: request_id=FmxNG-wPPPOMM-IAKYFh [debug] POST /users/jk/inbox Mar 14 19:45:48 MatrixRock pleroma: request_id=FmxNG-wPPPOMM-IAKYFh [debug] Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012 Parameters: %{"@context" => "https://www.w3.org/ns/activitystreams", "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/#bridgy-fed-create", "nickname" => "jk", "object" => %{"@context" => "https://www.w3.org/ns/activitystreams", "attributedTo" => [%{"icon" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "id" => "https://fed.brid.gy/jk.nipponalba.scot", "image" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername" => "jk.nipponalba.scot", "type" => "Person", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot"}], "cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://social.nipponalba.scot/users/jk", "https://social.nipponalba.scot/users/jk/followers"], "content" => "<p>Test #2</p>", "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", "inReplyTo" => "https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61", "name" => "Test #2", "published" => "11 Mar 2021 08:44 GMT", "tag" => [%{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}, %{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}], "type" => "Note", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", "urls" => [%{"value" => "https://jk.nipponalba.scot/response/6049d880/"}, %{"value" => "https://fed.brid.gy/"}]}, "type" => "Update"}#012 Pipelines: [:activitypub] Mar 14 19:45:52 MatrixRock pleroma: request_id=FmxNG-wPPPOMM-IAKYFh [debug] Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}} Mar 14 19:45:52 MatrixRock pleroma: request_id=FmxNG-wPPPOMM-IAKYFh [debug] Sent 400 in 3899ms Mar 14 19:45:52 MatrixRock pleroma: request_id=FmxNG-wPPPOMM-IAKYFh [info] Sent 400 in 3901ms

@jk-na
Copy link

jk-na commented Mar 15, 2021

I'm wondering if maybe this is related to HTTP signatures, I know that up until recently pixelfed hadn't implemented them and I didn't see my posts from of in my pleroma feed.. will try disabling them in a little while and see if it works

@jk-na
Copy link

jk-na commented Mar 15, 2021

I tried disabling HTTP signature on fetches and also Strict-Transport-Security to see if the error might vanish but still I'm seeing Could not validate against known public keys: {:error, {:error, "acct:jk.nipponalba.scot@jk.nipponalba.scot"}}

I'm not sure if it's related but, I wonder if perhaps an actor property is required for activity and/or object? It's kind of hard to parse a huge debug log but it does seem that successful requests followed by DB activity contain at least one actor. E.g.

"actor" => "https://mythago.space/users/ghost_bird"

Mar 15 08:48:38 MatrixRock pleroma: request_id=Fmx309xY_VeYvwoAAAoD [debug] Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012 Parameters: %{"@context" => ["https://www.w3.org/ns/activitystreams", %{"Emoji" => "toot:Emoji", "atomUri" => "ostatus:atomUri", "conversation" => "ostatus:conversation", "focalPoint" => %{"@container" => "@list", "@id" => "toot:focalPoint"}, "inReplyToAtomUri" => "ostatus:inReplyToAtomUri", "ostatus" => "http://ostatus.org#", "sensitive" => "as:sensitive", "toot" => "http://joinmastodon.org/ns#", "votersCount" => "toot:votersCount"}], "actor" => "https://mythago.space/users/ghost_bird", "cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://weirder.earth/users/stitchandsew"], "id" => "https://mythago.space/users/ghost_bird/statuses/105892944907997357/activity", "object" => %{"atomUri" => "https://mythago.space/users/ghost_bird/statuses/105892944907997357", "attachment" => [], "attributedTo" => "https://mythago.space/users/ghost_bird", "cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://weirder.earth/users/stitchandsew"], "content" => "<p><span class=\"h-card\"><a href=\"https://weirder.earth/@stitchandsew\" class=\"u-url mention\">@<span>stitchandsew</span></a></span> :heart_trans:</p>", "conversation" => "tag:weirder.earth,2021-03-15:objectId=22484257:objectType=Conversation", "id" => "https://mythago.space/users/ghost_bird/statuses/105892944907997357", "inReplyTo" => "https://weirder.earth/users/stitchandsew/statuses/105892938932311950", "inReplyToAtomUri" => "https://weirder.earth/users/stitchandsew/statuses/105892938932311950", "published" => "2021-03-15T08:48:29Z", "replies" => %{"first" => %{"items" => [], "next" => "https://mythago.space/users/ghost_bird/statuses/105892944907997357/replies?only_other_accounts=true&page=true", "partOf" => "https://mythago.space/users/ghost_bird/statuses/105892944907997357/replies", "type" => "CollectionPage"}, "id" => "https://mythago.space/users/ghost_bird/statuses/105892944907997357/replies", "type" => "Collection"}, "sensitive" => false, "summary" => nil, "tag" => [%{"href" => "https://weirder.earth/users/stitchandsew", "name" => "@stitchandsew@weirder.earth", "type" => "Mention"}, %{"icon" => %{"mediaType" => "image/png", "type" => "Image", "url" => "https://cdn.masto.host/mythagospace/custom_emojis/images/000/000/423/original/b1cca85cf0f76c57.png"}, "id" => "https://mythago.space/emojis/423", "name" => ":heart_trans:", "type" => "Emoji", "updated" => "2020-04-29T10:46:26Z"}], "to" => ["https://mythago.space/users/ghost_bird/followers"], "type" => "Note", "url" => "https://mythago.space/@ghost_bird/105892944907997357"}, "published" => "2021-03-15T08:48:29Z", "signature" => %{"created" => "2021-03-15T08:48:29Z", "creator" => "https://mythago.space/users/ghost_bird#main-key", "signatureValue" => "jyNKFbu5pgZky9lpuPHa5IIf0d1HIDmrtU8uCXbuy/TzPrFUrjyIgS3rVoKTnajl6pMEivDr8lh8AlwSBy4uD/IpCIW5PZqAyTjbQpDQhagc7doro+H7qhZW/EU0TL3uZ+sqIlC8HRIV4PbdnT6I59ke57S5d5BCGu+eOmhoI9UKKkVUZqrcIOuBBfFffUYH/35uLyPNfNWDObUWAHL2iT65Ay07RGLAoUmS1VZZS4Gf8GS4uv5LxmdsHW8/++nTajiJ9A/RT55J7Guppa2ZfgpvLFgKmNO0V3SjBFU9tYs8GXBXbsSSi0XpyrBFE4aa3xG4ho0hVoh8ThtMKR+6PQ==", "type" => "RsaSignature2017"}, "to" => ["https://mythago.space/users/ghost_bird/followers"], "type" => "Create"}#012 Pipelines: [:activitypub]

@snarfed
Copy link
Owner Author

snarfed commented Mar 15, 2021

Very possible! I tried re-sending with an actor just now and got an opaque 400 with body "error":

$ curl -v -H 'Content-Type: application/activity+json' https://social.nipponalba.scot/users/jk/inbox -d '{"@context": "https://www.w3.org/ns/activitystreams", "id": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/#bridgy-fed-create", "nickname": "jk", "actor": {"icon": {"type": "Image", "url": "https://jk.nipponalba.scot/images/profile.jpg"}, "id": "https://fed.brid.gy/jk.nipponalba.scot", "image": {"type": "Image", "url": "https://jk.nipponalba.scot/images/profile.jpg"}, "name": "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername": "jk.nipponalba.scot", "type": "Person", "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot"}, "object": {"@context": "https://www.w3.org/ns/activitystreams", "attributedTo": [{"icon": {"type": "Image", "url": "https://jk.nipponalba.scot/images/profile.jpg"}, "id": "https://fed.brid.gy/jk.nipponalba.scot", "image": {"type": "Image", "url": "https://jk.nipponalba.scot/images/profile.jpg"}, "name": "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername": "jk.nipponalba.scot", "type": "Person", "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot"}], "cc": ["https://www.w3.org/ns/activitystreams#Public", "https://social.nipponalba.scot/users/jk", "https://social.nipponalba.scot/users/jk/followers"], "content": "<p>Test #2</p>", "id": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", "inReplyTo": "https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61", "name": "Test #2", "published": "11 Mar 2021 08:44 GMT", "tag": [{"href": "https://social.nipponalba.scot/users/jk", "type": "Mention"}, {"href": "https://social.nipponalba.scot/users/jk", "type": "Mention"}], "type": "Note", "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", "urls": [{"value": "https://jk.nipponalba.scot/response/6049d880/"}, {"value": "https://fed.brid.gy/"}]}, "type": "Update"}'
...
< HTTP/2 400 
* Connection #0 to host social.nipponalba.scot left intact
"error"
* Closing connection 0

Here's the activity I sent:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "id": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/#bridgy-fed-create",
  "nickname": "jk",
  "actor": {
    "icon": {
      "type": "Image",
      "url": "https://jk.nipponalba.scot/images/profile.jpg"
    },
    "id": "https://fed.brid.gy/jk.nipponalba.scot",
    "image": {
      "type": "Image",
      "url": "https://jk.nipponalba.scot/images/profile.jpg"
    },
    "name": "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site",
    "preferredUsername": "jk.nipponalba.scot",
    "type": "Person",
    "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot"
  },
  "object": {
    "@context": "https://www.w3.org/ns/activitystreams",
    "attributedTo": [
      {
        "icon": {
          "type": "Image",
          "url": "https://jk.nipponalba.scot/images/profile.jpg"
        },
        "id": "https://fed.brid.gy/jk.nipponalba.scot",
        "image": {
          "type": "Image",
          "url": "https://jk.nipponalba.scot/images/profile.jpg"
        },
        "name": "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site",
        "preferredUsername": "jk.nipponalba.scot",
        "type": "Person",
        "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot"
      }
    ],
    "cc": [
      "https://www.w3.org/ns/activitystreams#Public",
      "https://social.nipponalba.scot/users/jk",
      "https://social.nipponalba.scot/users/jk/followers"
    ],
    "content": "<p>Test #2</p>",
    "id": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/",
    "inReplyTo": "https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61",
    "name": "Test #2",
    "published": "11 Mar 2021 08:44 GMT",
    "tag": [
      {
        "href": "https://social.nipponalba.scot/users/jk",
        "type": "Mention"
      },
      {
        "href": "https://social.nipponalba.scot/users/jk",
        "type": "Mention"
      }
    ],
    "type": "Note",
    "url": "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/",
    "urls": [
      {
        "value": "https://jk.nipponalba.scot/response/6049d880/"
      },
      {
        "value": "https://fed.brid.gy/"
      }
    ]
  },
  "type": "Update"
}

@jk-na
Copy link

jk-na commented Mar 15, 2021

OK, so between 21:37:18 (my server time - about 20 minutes ago), the logs have 7 different requests for this (not sure if that correlates to seven attempts or pleroma retries)

The first three had an Internal Server error relating to parsing.

The subsequent four didn't have that error AND didn't have the validation error.

The first block is from one of the internal server error requests and second from one of the subsequent attempts:

Mar 15 21:37:18 MatrixRock pleroma: request_id=Fmyhxiyrx7Gx5CIAArmB [error] Internal server error: %Plug.Parsers.ParseError{exception: %Jason.DecodeError{data: "{\"@context\": \"https://www.w3.org/ns/activitystreams\", \"id\": \"https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/#bridgy-fed-create\", \"nickname\": \"jk\", \"actor\": [{\"icon\": [{\"type\": \"Image\", \"url\": \"https://jk.nipponalba.scot/images/profile.jpg\"}], \"id\": \"https://fed.brid.gy/jk.nipponalba.scot\", \"image\": [{\"type\": \"Image\", \"url\": \"https://jk.nipponalba.scot/images/profile.jpg\"}], \"name\": \"J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site\", \"preferredUsername\": \"jk.nipponalba.scot\", \"type\": \"Person\", \"url\": \"https://fed.brid.gy/r/https://jk.nipponalba.scot\"}, \"object\": {\"@context\": \"https://www.w3.org/ns/activitystreams\", \"attributedTo\": [{\"icon\": [{\"type\": \"Image\", \"url\": \"https://jk.nipponalba.scot/images/profile.jpg\"}], \"id\": \"https://fed.brid.gy/jk.nipponalba.scot\", \"image\": [{\"type\": \"Image\", \"url\": \"https://jk.nipponalba.scot/images/profile.jpg\"}], \"name\": \"J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site\", \"preferredUsername\": \"jk.nipponalba.scot\", \"type\": \"Person\", \"url\": \"https://fed.brid.gy/r/https://jk.nipponalba.scot\"}], \"cc\": [\"https://www.w3.org/ns/activitystreams#Public\", \"https://social.nipponalba.scot/users/jk\", \"https://social.nipponalba.scot/users/jk/followers\"], \"content\": \"<p>Test #2</p>\", \"id\": \"https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/\", \"inReplyTo\": \"https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61\", \"name\": \"Test #2\", \"published\": \"11 Mar 2021 08:44 GMT\", \"tag\": [{\"href\": \"https://social.nipponalba.scot/users/jk\", \"type\": \"Mention\"}, {\"href\": \"https://social.nipponalba.scot/users/jk\", \"type\": \"Mention\"}], \"type\": \"Note\", \"url\": \"https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/\", \"urls\": [{\"value\": \"https://jk.nipponalba.scot/response/6049d880/\"}, {\"value\": \"https://fed.brid.gy/\"}]}, \"type\": \"Update\"}", position: 594, token: nil}, plug_status: 400} Mar 15 21:37:18 MatrixRock pleroma: request_id=Fmyhxiyrx7Gx5CIAArmB [debug] Converted error Plug.Parsers.ParseError to 400 response

Mar 15 21:40:00 MatrixRock pleroma: request_id=Fmyh6804JypRUkMAArxh [debug] POST /users/jk/inbox Mar 15 21:40:00 MatrixRock pleroma: request_id=Fmyh6804JypRUkMAArxh [debug] Processing with Pleroma.Web.ActivityPub.ActivityPubController.inbox/2#012 Parameters: %{"@context" => "https://www.w3.org/ns/activitystreams", "actor" => %{"icon" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "id" => "https://fed.brid.gy/jk.nipponalba.scot", "image" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername" => "jk.nipponalba.scot", "type" => "Person", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot"}, "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/#bridgy-fed-create", "nickname" => "jk", "object" => %{"@context" => "https://www.w3.org/ns/activitystreams", "attributedTo" => [%{"icon" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "id" => "https://fed.brid.gy/jk.nipponalba.scot", "image" => [%{"type" => "Image", "url" => "https://jk.nipponalba.scot/images/profile.jpg"}], "name" => "J K 🇯🇵🏴󠁧󠁢󠁳󠁣󠁴󠁿 | personal site", "preferredUsername" => "jk.nipponalba.scot", "type" => "Person", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot"}], "cc" => ["https://www.w3.org/ns/activitystreams#Public", "https://social.nipponalba.scot/users/jk", "https://social.nipponalba.scot/users/jk/followers"], "content" => "<p>Test #2</p>", "id" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", "inReplyTo" => "https://social.nipponalba.scot/objects/c341db0a-ad7e-406a-9b9f-07b575ce9f61", "name" => "Test #2", "published" => "11 Mar 2021 08:44 GMT", "tag" => [%{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}, %{"href" => "https://social.nipponalba.scot/users/jk", "type" => "Mention"}], "type" => "Note", "url" => "https://fed.brid.gy/r/https://jk.nipponalba.scot/response/6049d880/", "urls" => [%{"value" => "https://jk.nipponalba.scot/response/6049d880/"}, %{"value" => "https://fed.brid.gy/"}]}, "type" => "Update"}#012 Pipelines: [:activitypub] Mar 15 21:40:00 MatrixRock pleroma: request_id=Fmyh6804JypRUkMAArxh [debug] No signature header! Mar 15 21:40:00 MatrixRock pleroma: request_id=Fmyh6804JypRUkMAArxh [debug] Sent 400 in 21ms Mar 15 21:40:00 MatrixRock pleroma: request_id=Fmyh6804JypRUkMAArxh [info] Sent 400 in 28ms

From the latter one, we now have a no signature header error.

@jk-na
Copy link

jk-na commented Mar 15, 2021

.. oh, I think I see some database activity in relation to one of the requests..

edit: not write activities though, seems like a query against the users DB for https://fed.brid.gy/jk.nipponalba.scot

@snarfed
Copy link
Owner Author

snarfed commented Mar 15, 2021

Ah, yes, I didn't send an HTTP sig with these since they were manual, and you said you'd disabled sig checking. If it looks like that's the blocker, I can make Bridgy Fed add actors like this and we can try again for real.

@jk-na
Copy link

jk-na commented Mar 15, 2021

I had re-enabled it but can disable again when we're ready to try again, if required.

@mark4409
Copy link

mark4409 commented Nov 18, 2021

Hi - just wondering if anymore progress was made on this?

@snarfed
Copy link
Owner Author

snarfed commented Nov 18, 2021

@mark4409 thanks for asking! I haven't looked into it much more myself, but if you're familiar with Pleroma, feel free to try it out against a recent Pleroma version, see how it goes, and document the results. Bridgy Fed and Pleroma both support AP, so I suspect we're close!

@mark4409
Copy link

mark4409 commented Nov 18, 2021

Does brid.gy support Pleroma too?, or would I need Bridgy Fed?

@snarfed
Copy link
Owner Author

snarfed commented Nov 18, 2021

Yes! Unofficially at least, by pretending it's Mastodon, since the API is compatible-ish. Background: https://github.com/snarfed/bridgy/search?q=pleroma&type=issues

@mark4409
Copy link

mark4409 commented Nov 23, 2021

Well I've not tested this but I can at least confirm that brid.gy does work with Pleroma via webmentions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants