GithubHelp home page GithubHelp logo

snarfed / bridgy-fed Goto Github PK

View Code? Open in Web Editor NEW
430.0 15.0 26.0 11.31 MB

🌉 A bridge between decentralized social network protocols

Home Page: https://fed.brid.gy/

License: Creative Commons Zero v1.0 Universal

Python 86.16% HTML 11.49% CSS 1.36% JavaScript 0.99%
activitypub fediverse indieweb atproto bluesky

bridgy-fed's People

Contributors

dependabot[bot] avatar imgbotapp avatar jamietanna avatar kongaloosh avatar miklb avatar mwt avatar singpolyma avatar snarfed avatar swentel avatar tantek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bridgy-fed's Issues

Using granary... how does PSHB work?

The Bridgy Fed page says one can just use Granary to convert mf2 content to Atom for federation use... it shows putting a "hub" argument in to the granary URL, but would my site need to support something (like PSHB notifications for the HTML page) in order for this to work, or does it poll?

allow users to choose their own username

I know it's standard IndieWeb practice to have only one user on the domain, but that doesn't necessarily mean their name is "me", and it's misleading to return (for example) WebFinger data that claims it's for acct:[email protected] when that address doesn't exist.

For example, on my site, I've provided an email address in my representative h-card. When this is done, I think it would be appropriate for Bridgy Fed to use that email address to construct the acct: identifier for the user.

'followers' URL does not work

Hi. I've found that the 'actor' URL contains the key 'followers' with an URL that when followed returns a 404 with the following additional info:

Error: Not Found
The requested URL /triptico.com/followers was not found on this server.

As far as I know, the ActivityPub spec recommends not to announce services that are not implemented. Or is it another kind of error? I'm sure fed.brid.gy keeps an internal list of followers because everything else works (i.e. posts are propagated to everyone that follows, so the follower list is somewhere inside).

On the other hand, I find your software useful and operative. Keep the good work.

Regards,
Ángel

Replies out?

I know this whole thing is WIP, just filing this :)

So far, focus seems to be on inbound salmon, etc. Outbound salmon based on my in-reply-to posts would be amazing :)

Incoming requests from the fediverse once you're on it

This is more of a tracking issue. Since I joined the fediverse, my site gets a lot of requests on certain paths. I want to document them here first to begin with, and then maybe eventually see if something needs to be done (e.g. more redirects from in .htaccess to bridgy fed to handle things) . A simple reference on the homepage of bridgy fed would be fine for me as well as an end result :)

https://fediverse.network/info contains some info what it crawls for and which endpoints it looks for.

Path Method Example referer Information
/.well-known/nodeinfo GET Friendica 'The Tazmans Flax-lily' 2018.12-dev-1288; https://pirati.ca / Friendica 'Asparagus' 3.5.4-1234; Figured out it had something todo with the fediverse while looking at pixelfed. More background on that issue: pixelfed/pixelfed#8 What's interesting is that it's from Friendica, something I never interacted with (couple of different urls from there)
/api/v1/instance GET MastodonInstances (https://instances.social), Friendica 'The Tazmans Flax-lily' 2018.12-dev-1289; https://pirati.ca Seems to be a site that allows you to 'choose' the right instance for you. But got it from friendica too
/api/gnusocial/version.json GET Friendica 'The Tazmans Flax-lily' 2018.12-dev-1288; https://pirati.ca Friendica
/api/statusnet/version.json GET Friendica 'The Tazmans Flax-lily' 2018.12-dev-1288; https://pirati.ca Friendica
/siteinfo.json GET Friendica 'The Tazmans Flax-lily' 2018.12-dev-1288; https://pirati.ca Friendica
/statistics.json GET Friendica 'The Tazmans Flax-lily' 2018.12-dev-1288; https://pirati.ca Friendica
/api/v1/timelines/tag/fail GET Python-urllib/3.5 No idea if it's related with the fediverse yet, but could be.
/poco GET Friendica 'Asparagus' 3.5.4-1234; https://friendica.obscuritus.ca Friendica - no clue what this would look for
/api/statusnet/config GET fediverse.network crawler (https://fediverse.network/info [email protected]) search enging
/api/v1/config GET fediverse.network crawler (https://fediverse.network/info [email protected]) crawler

This list is of requests which didn't have a referer, but feel like fediverse related.

  • /api/statuses/public_timeline.json
  • /api/meta (POST request)
  • /nodeinfo/2.0.json
  • /api/v1/instance/peers
  • /api/statusnet/config.json
  • .well-known/autoconfig/mail/config-v1.1.xml

Extra Trailing Slash in Nginx Redirect

I added the nginx redirect rewrite ^/.well-known/(host-meta|webfinger).* https://fed.brid.gy/$request_uri redirect; to my nginx conf file

However when I try visiting that url https://miklb.com/.well-known/webfinger to see why I wasn't showing up in Mastodon search, I see that it gets an extra trailing slash https://fed.brid.gy//.well-known/webfinger

Suggestions?

fix AP => webmention

...for new mastodon AP activities with embedded objects, and new fed.brid.gy-wrapped ids (#16).

i attempted the first part in 2ffd103. we now need to unwrap target post URLs and use mastodon HTML URLs instead of AS2 URLs as the source.

eg the AS2 reply activity from mastodon below, for https://mastodon.social/users/swentel/statuses/100895743653130715, resulted in a bridgy fed webmention with AS2 source https://mastodon.social/users/swentel/statuses/100895743653130715/activity and wrapped target https://fed.brid.gy/r/https://realize.be/reply/content/1594 . more details on https://webmention.io/realize.be/webmention/kfzxXXvcsK4CZAUczQii . cc @swentel.

{
  "@context": "...",
  "id": "https://mastodon.social/users/swentel/statuses/100895743653130715/activity",
  "type": "Create",
  "actor": "https://mastodon.social/users/swentel",
  "published": "2018-10-14T19:54:29Z",
  "to": [
    "https://mastodon.social/users/swentel/followers"
  ],
  "cc": [
    "https://www.w3.org/ns/activitystreams#Public",
    "https://fed.brid.gy/realize.be"
  ],
  "object": {
    "id": "https://mastodon.social/users/swentel/statuses/100895743653130715",
    "type": "Note",
    "summary": null,
    "inReplyTo": "https://fed.brid.gy/r/https://realize.be/reply/content/1594",
    "published": "2018-10-14T19:54:29Z",
    "url": "https://mastodon.social/@swentel/100895743653130715",
    "attributedTo": "https://mastodon.social/users/swentel",
    "to": [
      "https://mastodon.social/users/swentel/followers"
    ],
    "cc": [
      "https://www.w3.org/ns/activitystreams#Public",
      "https://fed.brid.gy/realize.be"
    ],
    "sensitive": false,
    "atomUri": "https://mastodon.social/users/swentel/statuses/100895743653130715",
    "inReplyToAtomUri": "https://fed.brid.gy/r/https://realize.be/reply/content/1594",
    "conversation": "tag:mastodon.social,2018-09-23:objectId=55290633:objectType=Conversation",
    "content": "<p><span class=\"h-card\"><a href=\"https://fed.brid.gy/r/http://realize.be\" class=\"u-url mention\">@<span>realize.be</span></a></span> That&apos;s pretty awesome!</p>",
    "contentMap": {
      "en": "<p><span class=\"h-card\"><a href=\"https://fed.brid.gy/r/http://realize.be\" class=\"u-url mention\">@<span>realize.be</span></a></span> That&apos;s pretty awesome!</p>"
    },
    "attachment": [],
    "tag": [
      {
        "type": "Mention",
        "href": "https://fed.brid.gy/realize.be",
        "name": "@[email protected]"
      }
    ]
  },
  "signature": "...",
}

Mastodon @-mention didn't result in webmention

Quite some time ago I set up fed.brid.gy on bessbuzz.biz, which produces an Atom feed with a WebSub hub. I have attempted to follow @[email protected] from multiple Mastodon accounts but each time I just see it as a “you requested to follow” but the request never gets granted.

I’ve also tried sending webmentions to posts on mastodon using the instructions on fed.brid.gy but they never show up on the target posts.

As far as I can tell, all of my required atom, websub, and webmention discovery tags are set up correctly, and in particular I’ve been able to interact with other IndieWeb sites for quite some time now.

What steps can I take to figure out what’s going wrong? The troubleshooting steps on the instructions page don’t cover anything beyond a very narrow slice of the experience.

401 "Public key not found" on propagating webmention into Mastodon

originally reported by @deponeWD. (thank you!)

has been happening for at least a couple weeks now. example log:

185.26.156.17 - - [19/Aug/2018:16:37:01 -0700] "POST /webmention HTTP/1.1" 502 326 "https://fed.brid.gy/webmention" "WordPress/4.9.8; https://danielehniss.de; sending Webmention"

2018-08-19 23:36:54.589410 I (Params: [('source', u'https://danielehniss.de/2018/08/20/mastodon-reply-test/'), ('target', u'https://fed.brid.gy/')] )
2018-08-19 23:36:54.589740 I requests.get https://danielehniss.de/2018/08/20/mastodon-reply-test/ {u'headers': {u'User-Agent': u'...'}}
2018-08-19 23:36:55.364100 I Got 200 headers:{'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'x-powered-by': 'PHP/5.6.37', 'transfer-encoding': '', 'content-encoding': 'gzip', 'vary': 'Accept-Encoding', 'server': 'Apache/2.2.15 (CentOS)', 'connection': 'close', 'strict-transport-security': 'max-age=10886400; includeSubDomains; preload', 'date': 'Sun, 19 Aug 2018 23:36:55 GMT', 'link': '<https://danielehniss.de/?micropub=endpoint>;;; rel="micropub", <https://indieauth.com/auth>;;; rel="authorization_endpoint", <https://tokens.indieauth.com/token>;;; rel="token_endpoint", <https://danielehniss.de/wp-json/webmention/1.0/endpoint>;;; rel="webmention", <https://danielehniss.de/wp-json/webmention/1.0/endpoint>;;; rel="http://webmention.org/", <https://danielehniss.de/wp-json/>;;; rel="https://api.w.org/", <https://danielehniss.de/?p=4705>;;; rel=shortlink', 'x-frame-options': 'DENY', 'content-type': 'text/html; charset=UTF-8', 'x-pingback': 'https://danielehniss.de/xmlrpc.php'}
2018-08-19 23:36:55.451140 I First entry: {
  "type": [
    "h-entry"
  ],
  "properties": {
    "content": [
      {
        "html": "Um die Mastodon-Webmention-Integration zu testen, muss ich eben mal mit diesem Artikel auf <a class=\"u-in-reply-to\" href=\"https://mastodon.social/@depone/100565224043066825\">auf meine Bitte Webmention zu testen</a> antworten.",
        "value": "Um die Mastodon-Webmention-Integration zu testen, muss ich eben mal mit diesem Artikel auf auf meine Bitte Webmention zu testen antworten."
      }
    ],
    "name": [
      "Mastodon Reply Test\n\nAntwort auf: meine Bitte Webmention zu testen\nUm die Mastodon-Webmention-Integration zu testen, muss ich eben mal mit diesem Artikel auf auf meine Bitte Webmention zu testen antworten.\n \n\nVerĂśffentlicht am 20.08.2018 von Daniel in Internet."
    ],
    "in-reply-to": [
      "https://mastodon.social/@depone/100565224043066825",
      "https://mastodon.social/@depone/100565224043066825"
    ]
  }
}

2018-08-19 23:36:55.459830 I requests.get https://mastodon.social/@depone/100565224043066825 {'headers': {u'Accept': u'...', u'User-Agent': u'...'}}
2018-08-19 23:36:55.987620 I Got 200 headers:{'x-request-id': Got 200 headers:{'x-request-id': '9836013e-14b4-4f70-8fa8-eb2c7312f585', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.035934', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"8dfbbc62d5821350403170b021da4376"', 'link': '<https://mastodon.social/users/depone/updates/9410236.atom>; rel="alternate"; type="application/atom+xml", <https://mastodon.social/users/depone/statuses/100565224043066825>; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Sun, 19 Aug 2018 23:36:55 GMT', 'x-frame-options': 'DENY', 'x-cached': 'MISS', 'content-type': 'application/activity+json; charset=utf-8'}, 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.035934', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"8dfbbc62d5821350403170b021da4376"', 'link': '<https://mastodon.social/users/depone/updates/9410236.atom>; rel="alternate"; type="application/atom+xml", <https://mastodon.social/users/depone/statuses/100565224043066825>; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Sun, 19 Aug 2018 23:36:55 GMT', 'x-frame-options': 'DENY', 'x-cached': 'MISS', 'content-type': 'application/activity+json; charset=utf-8'}
2018-08-19 23:36:55.988080 I {
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
      "sensitive": "as:sensitive",
      "movedTo": {
        "@id": "as:movedTo",
        "@type": "@id"
      },
      "Hashtag": "as:Hashtag",
      "ostatus": "http://ostatus.org#",
      "atomUri": "ostatus:atomUri",
      "inReplyToAtomUri": "ostatus:inReplyToAtomUri",
      "conversation": "ostatus:conversation",
      "toot": "http://joinmastodon.org/ns#",
      "Emoji": "toot:Emoji",
      "focalPoint": {
        "@container": "@list",
        "@id": "toot:focalPoint"
      },
      "featured": {
        "@id": "toot:featured",
        "@type": "@id"
      },
      "schema": "http://schema.org#",
      "PropertyValue": "schema:PropertyValue",
      "value": "schema:value"
    }
  ],
  "id": "https://mastodon.social/users/depone/statuses/100565224043066825",
  "type": "Note",
  "summary": null,
  "inReplyTo": null,
  "published": "2018-08-17T10:59:00Z",
  "url": "https://mastodon.social/@depone/100565224043066825",
  "attributedTo": "https://mastodon.social/users/depone",
  "to": [
    "https://www.w3.org/ns/activitystreams#Public"
  ],
  "cc": [
    "https://mastodon.social/users/depone/followers"
  ],
  "sensitive": false,
  "atomUri": "https://mastodon.social/users/depone/statuses/100565224043066825",
  "inReplyToAtomUri": null,
  "conversation": "tag:mastodon.social,2018-08-17:objectId=47088429:objectType=Conversation",
  "content": "<p>Sorry, muss mal eben Webmentions testen. Jemand Zeit und Lust fĂźr einen Like oder Boost? Danke.</p><p><a href=\"https://danielehniss.de/2018/08/16/mein-blog-und-ich/\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">danielehniss.de/2018/08/16/mei</span><span class=\"invisible\">n-blog-und-ich/</span></a></p><p><a href=\"https://fed.brid.gy\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">fed.brid.gy</span><span class=\"invisible\"></span></a></p>",
  "contentMap": {
    "de": "<p>Sorry, muss mal eben Webmentions testen. Jemand Zeit und Lust fĂźr einen Like oder Boost? Danke.</p><p><a href=\"https://danielehniss.de/2018/08/16/mein-blog-und-ich/\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">danielehniss.de/2018/08/16/mei</span><span class=\"invisible\">n-blog-und-ich/</span></a></p><p><a href=\"https://fed.brid.gy\" rel=\"nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">fed.brid.gy</span><span class=\"invisible\"></span></a></p>"
  },
  "attachment": [],
  "tag": []
}
2018-08-19 23:36:56.043540 I source target: https://danielehniss.de/2018/08/20/mastodon-reply-test/ https://mastodon.social/@depone/100565224043066825
2018-08-19 23:36:56.244920 I requests.get https://mastodon.social/users/depone {'headers': {u'Accept': u'...', u'User-Agent': u'...'}}
2018-08-19 23:36:57.109280 I Got 200 headers:{'x-request-id': Got 200 headers:{'x-request-id': '93f4fad6-affe-4f84-8526-900054574882', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.353742', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"25f68444a8a37fc3d326f309a92c6d19"', 'link': '<https://mastodon.social/.well-known/webfinger?resource=acct%3Adepone%40mastodon.social>; rel="lrdd"; type="application/xrd+xml", <https://mastodon.social/users/depone.atom>; rel="alternate"; type="application/atom+xml", <https://mastodon.social/users/depone>; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Sun, 19 Aug 2018 23:36:57 GMT', 'x-frame-options': 'DENY', 'x-cached': 'MISS', 'content-type': 'application/activity+json; charset=utf-8'}, 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.353742', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"25f68444a8a37fc3d326f309a92c6d19"', 'link': '<https://mastodon.social/.well-known/webfinger?resource=acct%3Adepone%40mastodon.social>; rel="lrdd"; type="application/xrd+xml", <https://mastodon.social/users/depone.atom>; rel="alternate"; type="application/atom+xml", <https://mastodon.social/users/depone>; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Sun, 19 Aug 2018 23:36:57 GMT', 'x-frame-options': 'DENY', 'x-cached': 'MISS', 'content-type': 'application/activity+json; charset=utf-8'}
2018-08-19 23:36:57.109810 I {
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    "https://w3id.org/security/v1",
    {
      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
      "sensitive": "as:sensitive",
      "movedTo": {
        "@id": "as:movedTo",
        "@type": "@id"
      },
      "Hashtag": "as:Hashtag",
      "ostatus": "http://ostatus.org#",
      "atomUri": "ostatus:atomUri",
      "inReplyToAtomUri": "ostatus:inReplyToAtomUri",
      "conversation": "ostatus:conversation",
      "toot": "http://joinmastodon.org/ns#",
      "Emoji": "toot:Emoji",
      "focalPoint": {
        "@container": "@list",
        "@id": "toot:focalPoint"
      },
      "featured": {
        "@id": "toot:featured",
        "@type": "@id"
      },
      "schema": "http://schema.org#",
      "PropertyValue": "schema:PropertyValue",
      "value": "schema:value"
    }
  ],
  "id": "https://mastodon.social/users/depone",
  "type": "Person",
  "following": "https://mastodon.social/users/depone/following",
  "followers": "https://mastodon.social/users/depone/followers",
  "inbox": "https://mastodon.social/users/depone/inbox",
  "outbox": "https://mastodon.social/users/depone/outbox",
  "featured": "https://mastodon.social/users/depone/collections/featured",
  "preferredUsername": "depone",
  "name": "depone",
  "summary": "<p>Father of Four. Freelance Web Designer. Coffee Enthusiast. Bicyclist. Skateboarding Amateur. Lover of Life.</p>",
  "url": "https://mastodon.social/@depone",
  "manuallyApprovesFollowers": false,
  "publicKey": {
    "id": "https://mastodon.social/users/depone#main-key",
    "owner": "https://mastodon.social/users/depone",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvf81RyIYINnqnx7Xa+4g\nczQp3UwV8vK26HjY+UFmId2aA+cXtIV5gJZx95iV2f7rp37tBQHLNMQj5yUJnpNM\neHQIUHONqGMyNXtIwgnwYkz57M0kMI/5bIEWARKSNQIA47tTD950Ntc4onG+BpBd\nOuBLkRFNi28ahdQTKl8GvJ4WjvUzPZuXhRMQMa/HOLuIKywzT4ORa+pJ0Wlx6spS\nOI2ex8O6AkurMoklnP7RgixOkZ/WQjYIJaviub1q0EN4PO1jfJhrgC/In37R9CoK\nY/o6755l+N/HZqGpWFH1Wzzg4C0anVLHAW9fzaNTkuc2no0tjzjmjZEKbRGSqzLT\niwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "tag": [],
  "attachment": [
    {
      "type": "PropertyValue",
      "name": "Blog",
      "value": "<a href=\"https://danielehniss.de\" rel=\"me nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">danielehniss.de</span><span class=\"invisible\"></span></a>"
    },
    {
      "type": "PropertyValue",
      "name": "Website",
      "value": "<a href=\"https://depone.net\" rel=\"me nofollow noopener\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">depone.net</span><span class=\"invisible\"></span></a>"
    }
  ],
  "endpoints": {
    "sharedInbox": "https://mastodon.social/inbox"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/jpeg",
    "url": "https://files.mastodon.social/accounts/avatars/000/035/790/original/7be5d70ea7b57bc4.jpg"
  },
  "image": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://files.mastodon.social/accounts/headers/000/035/790/original/2f2cd3264312b6bd.png"
  }
}
2018-08-19 23:36:57.845480 I requests.post https://mastodon.social/users/depone/inbox {'headers': {'Date': u'...', 'Content-Type': u'...', u'User-Agent': u'...'}, 'json': {
  "@context": "https://www.w3.org/ns/activitystreams",
  "object": {
    "content": "Um die Mastodon-Webmention-Integration zu testen, muss ich eben mal mit diesem Artikel auf <a class=\"u-in-reply-to\" href=\"https://mastodon.social/@depone/100565224043066825\">auf meine Bitte Webmention zu testen</a> antworten.",
    "inReplyTo": "https://mastodon.social/users/depone/statuses/100565224043066825",
    "name": "Mastodon Reply Test\n\nAntwort auf: meine Bitte Webmention zu testen\nUm die Mastodon-Webmention-Integration zu testen, muss ich eben mal mit diesem Artikel auf auf meine Bitte Webmention zu testen antworten.\n \n\nVer\u00f6ffentlicht am 20.08.2018 von Daniel in Internet.",
    "url": "https://danielehniss.de/2018/08/20/mastodon-reply-test/",
    "@context": "https://www.w3.org/ns/activitystreams",
    "type": "Note",
    "id": "https://danielehniss.de/2018/08/20/mastodon-reply-test/",
    "cc": [
      "https://www.w3.org/ns/activitystreams#Public",
      "https://mastodon.social/users/depone",
      "https://mastodon.social/users/depone/followers"
    ]
  },
  "type": "Create"
}, 'auth': <httpsig.requests_auth.HTTPSignatureAuth object at 0xfa4b5ff0>}
2018-08-19 23:37:01.854360 I Got 401 headers:{'x-request-id': Got 401 headers:{'x-request-id': '0bf145c8-f016-4f41-a8ef-05d231c2bc1b', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'vary': 'Accept-Encoding', 'x-runtime': '3.521254', 'server': 'Mastodon', 'connection': 'keep-alive', 'cache-control': 'no-cache', 'date': 'Sun, 19 Aug 2018 23:37:01 GMT', 'x-frame-options': 'DENY', 'content-type': 'text/plain; charset=utf-8'}, 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'vary': 'Accept-Encoding', 'x-runtime': '3.521254', 'server': 'Mastodon', 'connection': 'keep-alive', 'cache-control': 'no-cache', 'date': 'Sun, 19 Aug 2018 23:37:01 GMT', 'x-frame-options': 'DENY', 'content-type': 'text/plain; charset=utf-8'}
2018-08-19 23:37:01.854860 I Public key not found for key acct:[email protected]
2018-08-19 23:37:01.855060 I Received 401 from https://mastodon.social/users/depone/inbox:
Public key not found for key acct:[email protected]

wm => AP: allow posts to be deleted

Sometimes you might want to delete a post/reply. This is how a minimal delete activity looks like

stdClass Object
(
    [@context] => https://www.w3.org/ns/activitystreams
    [type] => Delete
    [actor] => https://fed.brid.gy/realize.be
    [id] => https://fed.brid.gy/realize.be?unique-id-needed-6
    [to] => Array
        (
            [0] => https://www.w3.org/ns/activitystreams#Public
            [1] => https://mastodon.social/users/swentel
        )

    [object] => stdClass Object
        (
            [id] => https://fed.brid.gy/realize.be?unique-id-needed-6
        )

)

I posted to the shared inbox of mastodon.social in this case. Most of my test replies from yesterday are deleted now.

Not sure how to we'd tell bridgy that though since it works with sending webmentions.

ImportError: No module named django

This is what I get when running the setup instructions from the readme.

If I instead run pip install -r requirements.freeze.txt I get this when running the tests:

ImportError: No module named django.template.loaders

translate following, both directions

we're discussing in IRC right now how following an indieweb site in mastodon isn't yet supported or doesn't work well, and we don't have a good story for the reverse, ie indicating to mastodon that you're following a mastodon account.

i think the feature request is for bridgy fed to translate and deliver indieweb follow posts (ie u-x-follow-of) to ActivityPub Follow activities, and vice versa. (TODO: what's the OStatus equivalent?)

two difficulties:

  • indieweb follow posts are very experimental right now. only @rhiaro has posted them or advocated for them much, and i don't know of anything that consumes them. (snarfed/bridgy#550 is a feature request.)
  • Mastodon's ActivityPub Follow handling is currently buggy and makes Mastodon-specific assumptions, so it doesn't currently work with other ActivityPub implementations: mastodon/mastodon#4933

cc @sknebel @keithjgrant @aaronpk @miklb

Question: Does the link to fed.brid.gy have to appear in the post?

Let's say I configure my WebMention publishing script to always send a WebMention to fed.brid.gy regardless of whether an actual link to it appears there. Will it work, or does fed.brid.gy's webmention endpoint require that the entry contain a link to it?

Context: I am writing a simple WebMention conduit for Atom feeds and was hoping to make it possible to configure fed.brid.gy as an always-notify endpoint without requiring users to add a link to their template (or manually to entries with a Fediverse link or whatever).

return 502 when fedsocnet HTTP requests return non-2xx

e.g. fetching a profile on mastodon 1.4.3 with our activitypub conneg headers 500s (!):

$ curl -o /dev/null -v -H 'Accept: application/ld+json; profile="https://www.w3.org/ns/activitystreams"; q=0.9, application/activity+json; q=0.8' https://bne.social/@ashkyd/1259433
...
< HTTP/1.1 500 Internal Server Error

we should return 502 with details on the fedsocnet's error.

thanks @mblaney!

Support plume

https://joinplu.me/

See comment on https://toot.cafe/@zack/101206779193111042 - I've asked him to jump in here with more details if he has them.

To give more context:

I also confused myself this morning thinking that this account is from Pleroma, and maybe it is actually, cf https://edolas.world/@0x1C3B00DA

(note it's temporarily down, but should come back I guess)

handle Mastodon incompatibility with www subdomain

@kickscondor reported that following their site from Mastodon isn't completing. i reproduced from @[email protected]. looking at the bridgy fed logs, we get the AP Follow request, and send this Accept:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "object": {
    "object": "https://fed.brid.gy/www.kickscondor.com",
    "type": "Follow",
    "actor": "https://mastodon.technology/users/snarfed"
  },
  "type": "Accept",
  "id": "tag:fed.brid.gy:accept/kickscondor.com/https://mastodon.technology/1b4f5bd8-7f3b-4501-89cc-b9b223a09e37",
  "actor": "https://fed.brid.gy/www.kickscondor.com"
}

...to which mastodon returns HTTP 401 with no body. 😢

i suspect the problem is that we're mixing kickscondor.com and www.kickscondor.com.

https://kickscondor.com/ itself redirects to https://www.kickscondor.com/ , which is fine. both domains redirect bridgy fed's paths (webfinger etc) to bridgy fed directly, which should also be fine.

however, note that the actor in the AS2 activity above is www, but the id is the naked domain. we also store and return different public keys via webfinger for www vs naked, below, which is probably the root cause of the 401.

subject: acct:[email protected]
data:application/magic-public-key,RSA.oYe2XI8f3TdSI9Laagw7kPPvXr_GSN5h6F6XLA3STBlYpqqaZTXp8Xe6lp8U0BTkG8-NF9ueSO1chbDOx5rCICUaLawSKK8eI18_DqgrOy9xHS28Z_TWXJSiHZEvBpI3hmEZPpDwgdnnaNZCC5MsmdSepl7mH9WWkPxYOiC7vMk=.AQAB

subject: acct:[email protected]
data:application/magic-public-key,RSA.rCiWTbbPprgvZJMdVbvWzCRDHw6ebGtc1BxLcWJIYhkqrQjx5YFBec2Owzn16Ht6yg_dnGQmL1p5mgS8O_f3Ghin1WGC4aShUnKkU1Ia2Hkv-1wEt757GvUhpFgXwPg3xvCTrJwBs_Ypxb5MbMqrBoRQVHXU0tg5XJIkFpiFNU8=.AQAB

(#29 is somewhat related, but probably not the same thing, since its error actually included the message Public key not found.)

When fetching fed.brid.gy/{domain} as get, redirect to user site

Now you'll get a json file, which is kind of weird.

It might also help with #16 where, if we append the 'source' url of a post as a get parameter in the url property, it would allow us to redirect a post to the right place on the web.

So

I have some time this week to see if I could experiment with this.

Another option is that we open a request at mastodon to drop the validation of the property url, but I'm not so sure if they will remove it again.

disable gzip compression on home page

requested by @mblaney. / is a static file handler, so the full serving path is google's. it currently always gzip-compresses the response and returns the Content-Encoding: gzip header.

oddly, i haven't found a way to ask it not to. the HTTP spec says omitting Accept-Encoding says you're ok with anything, but Accept-Encoding: identity should prevent it...but it doesn't.

also:

Note: In the absence of a Content-Type header provided by your application, a default Content-Type: text/html header will be set, but the automatic gzip compression will not be applied.

...but that's obviously not happening. :/

support Pleroma

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.

Known interop problems so far:

TODO: file issues on https://git.pleroma.social/pleroma/pleroma/-/issues for these ^

interpret Mastodon ActivityPub HTTP 202 response as failure

mastodon's AP code returns HTTP 202 to inbox POSTs that fail signature verification:

TODO:

support GNU Social

seems to be fully ostatus compatible, i just haven't gotten an end to end test all the way through in testing. next step for me is to add a PuSH hub to snarfed.org's atom, which is where it currently stops:

2017-09-11 14:09:12 LOG_DEBUG: [localhost:49561.bf2ad337 POST /main/salmon/user/1] Salmon envelope parsing failed with: FeedSubNoHubException
2017-09-11 14:09:12 LOG_DEBUG: [localhost:49561.bf2ad337 POST /main/salmon/user/1] action.php - User error '400' on 'usersalmon': FeedSubNoHubException
2017-09-11 14:09:12 LOG_ERR: [localhost:49561.bf2ad337 POST /main/salmon/user/1] Handled clientError (400) but cannot output into desired format (NULL): 'FeedSubNoHubException'

Allow creating posts

So replies work now, awesome!

A post is more or less the same as a reply with these differences:

  • it does not contain the 'inReplyTo' property
  • to should contain public, and the followers url , e.g. something like accounts/363584/followers (although I'm not 100% of the last part here)
  • (instance) url: this is the tricky part, but I presume it's safe to target mastodon.social by default and use the shared inbox.

another tricky part: fed bridgy doesn't really care to which federated service you want to post on. It could be diaspora or something else in the future too, so either

  • the post markup needs a url in its markup so you know which service to post to
  • or the webmention should be send to something more dedicated. Right now, we just need to add 'https://fed.brid.gy/' to the posts. Maybe https://fed.brid.gy/{service_name} is an alternative ?

I will do some tests and see what the minimum object should be.

Make it work on WordPress

Hi @snarfed Congratulations for the work!!!
I´m trying to make IndieWeb work on my website comunicacionabierta.net since I just discovered. I think this is too good to be true... the problem is that I can´t make it work!!!
My server is a cloud one on Siteground - CentOS - and I don´t know exactly what´s my problem.
Mathias Pfefferle told me something about the webfinger but my knowledge is very limited.
Could you know what steps should I follow?
Thanks!

Better CW text for Mastodon item posts

When an item gets posted from a feed to Mastodon, it gets a rather long-winded CW that is a mishmash of the first few paragraphs' worth of text; as seen on dragon.style:

image

But the <title> element is nowhere to be found! It seems like using <title> for the CW text would be better.

The actual behavior of what's displayed below the CW also seems rather inconsistent and weird.

Escaped HTML errors

Trying to use bridgy-fed I get the following error returned:

400 Bad Request
The server could not comply with the request since it is either malformed or otherwise incorrect.

Couldn't find a <a href="http://microformats.org/wiki/representative-hcard-parsing">representative h-card</a> on https://triptico.com/

Where the greater-than, less-than and quote symbols are incorrectly escaped, so I see them verbatim instead of a clickable link.

backfeed likes and boosts: need mf2 somewhere

afaict most of the fedsocnets don't have permalinks or other markup for individual likes or boosts. mastodon definitely doesn't. if we want to backfeed those as webmentions, we either need to get the fedsocnets to add permalinks and mf2 for them, or store the AP posts and Salmon slaps and render them ourselves, like bridgy. ugh.

Possible to post without backlink

I wanted to file this request, because I remembered something from last week: I didn't configure to render a backlink yet on my source pages to https://fed.brid.gy/ for 'notes' (they are now, so it's fine). However, the post did show up when using fed.brid.gy. Skimming the code, I don't see a check for a backlink anywhere, unless I missed it completely.

If it's there, don't mind me of course, but I guess it can't hurt for a double check :)

handle composite u-like-of objects (eg h-cites)

bridgy error on like

https://fed.brid.gy/log?start_time=1531777594&amp;key=https%3A%2F%2Fdougbeal.com%2F2018%2F07%2F16%2Fryan-barrett-interesting-unintended-consequence-of-federation-mastodon-for-tech-folks%2F+https%3A%2F%2Fmastodon.technology%2F%40snarfed%2F100119606571241751

2018-07-16 21:46:33.446730 I requests.get https://mastodon.technology/@snarfed/100119606571241751 {'headers': {u'Accept': u'...', u'User-Agent': u'...'}} 2018-07-16 21:46:33.607850 I Got 200 headers:{'x-request-id': Got 200 headers:{'x-request-id': 'ae85c544-36a7-419a-9a19-cf8ca682f4d9', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'strict-transport-security': 'max-age=31536000', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.026819', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"9c5ec0bf5a0b9234f69bbca81eadcfa5"', 'link': '; rel="alternate"; type="application/atom+xml", ; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Mon, 16 Jul 2018 21:46:33 GMT', 'x-frame-options': 'DENY', 'content-type': 'application/activity+json; charset=utf-8'}, 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'strict-transport-security': 'max-age=31536000', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.026819', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"9c5ec0bf5a0b9234f69bbca81eadcfa5"', 'link': '; rel="alternate"; type="application/atom+xml", ; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Mon, 16 Jul 2018 21:46:33 GMT', 'x-frame-options': 'DENY', 'content-type': 'application/activity+json; charset=utf-8'} 2018-07-16 21:46:33.608290 I {"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":"as:movedTo","Hashtag":"as:Hashtag","ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"featured":"toot:featured","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://mastodon.technology/users/snarfed/statuses/100119606571241751","type":"Note","summary":null,"content":"\u003cp\u003eInteresting unintended consequence of federation: when you post a link, \u0026gt;1k mastodon nodes all fetch it at the same time to render a link preview, which results in a small DDoS.\u003c/p\u003e","inReplyTo":null,"published":"2018-05-30T18:12:37Z","url":"https://mastodon.technology/@snarfed/100119606571241751","attributedTo":"https://mastodon.technology/users/snarfed","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://mastodon.technology/users/snarfed/followers"],"sensitive":false,"atomUri":"https://mastodon.technology/users/snarfed/statuses/100119606571241751","inReplyToAtomUri":null,"conversation":"tag:mastodon.technology,2018-05-30:objectId=5634750:objectType=Conversation","attachment":[{"type":"Document","mediaType":"image/png","url":"https://static.mastodon.technology/media_attachments/files/000/979/283/original/d931a7f3acc5b062.png","name":null}],"tag":[]} 2018-07-16 21:46:33.610470 I source target: https://dougbeal.com/2018/07/16/ryan-barrett-interesting-unintended-consequence-of-federation-mastodon-for-tech-folks/ https://mastodon.technology/@snarfed/100119606571241751 2018-07-16 21:46:33.787349 I requests.get https://mastodon.technology/users/snarfed {'headers': {u'Accept': u'...', u'User-Agent': u'...'}} 2018-07-16 21:46:34.453160 I Got 200 headers:{'x-request-id': Got 200 headers:{'x-request-id': '476bba7b-9dc6-4559-a3bf-40c4e91b2ce1', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'strict-transport-security': 'max-age=31536000', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.523285', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"6ccc9fcd4d6d65f76e2439e3889d96ca"', 'link': '; rel="lrdd"; type="application/xrd+xml", ; rel="alternate"; type="application/atom+xml", ; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Mon, 16 Jul 2018 21:46:34 GMT', 'x-frame-options': 'DENY', 'content-type': 'application/activity+json; charset=utf-8'}, 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-encoding': 'gzip', 'transfer-encoding': '', 'strict-transport-security': 'max-age=31536000', 'vary': 'Accept,Accept-Encoding', 'x-runtime': '0.523285', 'server': 'Mastodon', 'connection': 'keep-alive', 'etag': 'W/"6ccc9fcd4d6d65f76e2439e3889d96ca"', 'link': '; rel="lrdd"; type="application/xrd+xml", ; rel="alternate"; type="application/atom+xml", ; rel="alternate"; type="application/activity+json"', 'cache-control': 'max-age=180, public', 'date': 'Mon, 16 Jul 2018 21:46:34 GMT', 'x-frame-options': 'DENY', 'content-type': 'application/activity+json; charset=utf-8'} 2018-07-16 21:46:34.453630 I {"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"manuallyApprovesFollowers":"as:manuallyApprovesFollowers","sensitive":"as:sensitive","movedTo":"as:movedTo","Hashtag":"as:Hashtag","ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","toot":"http://joinmastodon.org/ns#","Emoji":"toot:Emoji","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"featured":"toot:featured","schema":"http://schema.org#","PropertyValue":"schema:PropertyValue","value":"schema:value"}],"id":"https://mastodon.technology/users/snarfed","type":"Person","following":"https://mastodon.technology/users/snarfed/following","followers":"https://mastodon.technology/users/snarfed/followers","inbox":"https://mastodon.technology/users/snarfed/inbox","outbox":"https://mastodon.technology/users/snarfed/outbox","featured":"https://mastodon.technology/users/snarfed/collections/featured","preferredUsername":"snarfed","name":"Ryan Barrett","summary":"\u003cp\u003e\u003ca href=\"https://snarfed.org\" rel=\"nofollow noopener\" target=\"_blank\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"\"\u003esnarfed.org\u003c/span\u003e\u003cspan class=\"invisible\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e","url":"https://mastodon.technology/@snarfed","manuallyApprovesFollowers":false,"publicKey":{"id":"https://mastodon.technology/users/snarfed#main-key","owner":"https://mastodon.technology/users/snarfed","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4zEoZNdw2Rc4y2vhQjq2\n3+QlfE/X1uW4QJglIBGbLEgydF+8NTGuSamejlPMdetcrtxE3WzKbkbyicrAthuH\njWaz5k5RwtEcvXYyrFRsnR3R2g+vLzYNyCL6N8im3shKe/6ZYi0FWk4eE7hUAtXS\n4+PU4WHCD5hyuhIn/TKE9MKwkRAF5a7Qf+86zNyxQn4ME/jzR8ewY6OQHlQYmKfS\nb07gsUC9liSRQsUkV+uMUxLtbrlv40ZI6mUDoQyB0HGNyc39iEFufgTxOPyMQmoP\nBT4/LZ1stSmaA8tOrq1WAT/g/KZlon0Bnssic3D/4i+iL9YCxyazmVtF6T0juw41\nYQIDAQAB\n-----END PUBLIC KEY-----\n"},"tag":[],"attachment":[],"endpoints":{"sharedInbox":"https://mastodon.technology/inbox"},"icon":{"type":"Image","mediaType":"image/jpeg","url":"https://static.mastodon.technology/accounts/avatars/000/023/507/original/c183cf1e3a60f5c3.jpg"},"image":{"type":"Image","mediaType":"image/jpeg","url":"https://static.mastodon.technology/accounts/headers/000/023/507/original/977013e803161a99.jpg"}} 2018-07-16 21:46:34.580490 E Expected dict, got [{u'url': u'https://mastodon.technology/@snarfed/100119606571241751'}, {u'url': u'https://mastodon.technology/@snarfed/100119606571241751', u'author': {u'url': u'https://mastodon.technology/@snarfed', u'image': [{u'url': u'https://static.mastodon.technology/accounts/avatars/000/023/507/original/c183cf1e3a60f5c3.jpg'}], u'displayName': u'Ryan Barrett', u'objectType': u'person'}, u'displayName': u'Ryan Barrett (@[email protected])', u'objectType': u'article', u'summary': u'Interesting unintended consequence of federation: when you post a link, &gt;1k mastodon nodes all fetch it at the same time to render a link preview, which results in a small DDoS.'}] Traceback (most recent call last): File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/webapp2.py", line 1535, in __call__ rv = self.handle_exception(request, response, e) File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/webapp2.py", line 1529, in __call__ rv = self.router.dispatch(request, response) File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/webapp2.py", line 1278, in default_dispatcher return route.handler_adapter(request, response) File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/webapp2.py", line 1102, in __call__ return handler.dispatch() File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/webapp2.py", line 572, in dispatch return self.handle_exception(e, self.app.debug) File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/webapp2.py", line 570, in dispatch return method(*args, **kwargs) File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/webmention.py", line 47, in post self.try_activitypub() File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/webmention.py", line 144, in try_activitypub as2.from_as1(source_obj), target=target_obj, key=key) File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/granary/as2.py", line 92, in from_as1 'object': from_as1(obj.get('object'), context=None), File "/base/data/home/apps/s~bridgy-federated/1.409068985746702557/local/lib/python2.7/site-packages/granary/as2.py", line 65, in from_as1 raise ValueError('Expected dict, got %r' % obj) ValueError: Expected dict, got [{u'url': u'https://mastodon.technology/@snarfed/100119606571241751'}, {u'url': u'https://mastodon.technology/@snarfed/100119606571241751', u'author': {u'url': u'https://mastodon.technology/@snarfed', u'image': [{u'url': u'https://static.mastodon.technology/accounts/avatars/000/023/507/original/c183cf1e3a60f5c3.jpg'}], u'displayName': u'Ryan Barrett', u'objectType': u'person'}, u'displayName': u'Ryan Barrett (@[email protected])', u'objectType': u'article', u'summary': u'Interesting unintended consequence of federation: when you post a link, &gt;1k mastodon nodes all fetch it at the same time to render a link preview, which results in a small DDoS.'}]

(Originally published at: https://crw.moe/b/X6)

AP image attachments

My site uses relative links wherever possible, when rendering HTML. As a result, the HTML for this entry gets e-content data with relative href/src/srcset like

                <div id="preamble" class="body">
                    <p><div class="images"><img alt="" title="It has been a long day, and this morning's shower has lost its effect on Hira's appearance." src="/static/_img/54/eb7b/unity-209_1328681e22_960x512.jpg" width="960" height="512" srcset="/static/_img/54/eb7b/unity-209_1328681e22_960x512.jpg 1x, /static/_img/54/eb7b/unity-209_1328681e22_1920x1024.jpg 2x"></div> </p>
                </div>

Unfortunately this is being sent directly via ActivityPub, e.g. this request with mf2 like:

    "content": [
      {
        "html": "<div class=\"body\" id=\"preamble\">\n                    <p></p><div class=\"images\"><img alt=\"\" height=\"512\" src=\"/_async/_img/54/eb7b/unity-209_1328681e22_960x512.jpg\" srcset=\"/_async/_img/54/eb7b/unity-209_1328681e22_960x512.jpg 1x, /_async/_img/54/eb7b/unity-209_1328681e22_1920x1024.jpg 2x\" title=\"It has been a long day, and this morning's shower has lost its effect on Hira's appearance.\" width=\"960\"/></div> <p></p>\n                </div>", 
        "value": ""
      }
    ], 

When this appears on Mastodon, image-only posts look like this:

image

I'm not finding any definitive answer about this on mf2 but my probably-bad assumption is that it would be up to the consumer (in this case, bridgy fed) to rewrite relative links, including <img src> and <img srcset>.

figure out user and post discovery

should have thought of this earlier. right now, the first thing many users are doing is trying to discover themselves in mastodon and hubzilla, not send a response. so far, not much luck. we should figure that out.

mastodon background in mastodon/mastodon#1441 (comment) , which claims that atom feed with PuSH hub and webfinger with atom, profile, salmon, and magic key links should be enough...but that's evidently not true, since @miklb @mblaney @aaronpk all have those, and they still can't discover their sites from inside mastodon.

(i do show up inside mastodon, as @[email protected], which is misleading. that's probably only because i've federated replies etc into it.)

Add mention tags in replies

[note, last issue I open, all other things are fine ;)]

I mentioned this in #16 (comment) already. When you reply to a post on mastodon, this post can optionally show up in your notifications column (it's a setting). You need to add a mention tag in the object property, e.g.

[tag] => Array
                (
                    [0] => stdClass Object
                        (
                            [type] => Mention
                            [href] => https://mastodon.social/users/swentel
                            [name] => @swentel
                        )

                )

I guess we can just automatically add the user you're replying to as a mention tag as a first step.
I think I should be able to get that coded, so give a few days first :)

(edit - removed the code example, since that's for salmon, ignore that part)

What's the difference between Bridgy-Fed and Bridgy?

Hi, I've had a look at https://fed.brid.gy/ and https://brid.gy/, and to me it's unclear what's the difference between Bridgy-Fed and Bridgy?

When would I use one of them but not the other? Why did the Bridgy-Fed people proceed with creating Bridgy-Fed although Bridgy already exists?

Why are they hosted on the same 2nd level domain? Feels as if the same person is competing with him/herself about making both projects popular. Hmm and you (@snarfed ) own both projects here in GitHub too :- ) such a mystery (to me).

Reply webmention doesn't contain proper author h-card

I received a reply: https://writing.exchange/@matt/101066523112656548 this came through as a reply webmention. The author h-card has an empty photo and the name is equal to the url rather than being the username.

I know the ActivityPub to webmention isn't using the mf2 from mastodon, but looking at the mf2 on the reply page, it does contain an accurate author h-card: http://pin13.net/mf2/?url=https%3A%2F%2Fwriting.exchange%2F%40matt%2F101066523112656548

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.