- Sep 12, 2017
-
-
ThibG authored
* Whenever a remote keypair changes, unfollow them and re-subscribe to them In Mastodon (it could be different for other OStatus or AP-enabled software), a keypair change is indicative of whole user (or instance) data loss. In this situation, the “new” user might be different, and almost certainly has an empty followers list. In this case, Mastodon instances will disagree on follower lists, leading to unreliable delivery and “shadow followers”, that is users believed by a remote instance to be followers, without the affected user knowing. Drawbacks of this change are: 1. If an user legitimately changes public key for some reason without losing data (not possible in Mastodon at the moment), they will have their remote followers unsubscribed/re-subscribed needlessly. 2. Depending of the number of remote followers, this may generate quite some traffic. 3. If the user change is an attempt at usurpation, the remote followers will unknowingly follow the usurper. Note that this is *not* a change of behavior, Mastodon already behaves like that, although delivery might be unreliable, and the usurper would not have known the former user's followers. * Rename ResubscribeWorker to RefollowWorker * Process followers in batches
-
- Aug 14, 2017
-
-
Eugen Rochko authored
-
- Aug 08, 2017
-
-
Eugen Rochko authored
* Add ActivityPub inbox * Handle ActivityPub deletes * Handle ActivityPub creates * Handle ActivityPub announces * Stubs for handling all activities that need to be handled * Add ActivityPub actor resolving * Handle conversation URI passing in ActivityPub * Handle content language in ActivityPub * Send accept header when fetching actor, handle JSON parse errors * Test for ActivityPub::FetchRemoteAccountService * Handle public key and icon/image when embedded/as array/as resolvable URI * Implement ActivityPub::FetchRemoteStatusService * Add stubs for more interactions * Undo activities implemented * Handle out of order activities * Hook up ActivityPub to ResolveRemoteAccountService, handle Update Account activities * Add fragment IDs to all transient activity serializers * Add tests and fixes * Add stubs for missing tests * Add more tests * Add more tests
-
- Jul 19, 2017
-
-
Eugen Rochko authored
* Do not raise unretryable exceptions in ResolveRemoteAccountService * Removed fatal exceptions from ResolveRemoteAccountService Exceptions that cannot be retried should not be raised. New exception class for those that can be retried (Mastodon::UnexpectedResponseError)
-
Eugen Rochko authored
* Refactor ResolveRemoteAccountService * Remove trailing whitespace * Use redis locks around critical ResolveRemoteAccountService code * Add test for race condition of lock
-
- Jul 14, 2017
-
-
Eugen Rochko authored
* Add Request class with HTTP signature generator Spec: https://tools.ietf.org/html/draft-cavage-http-signatures-06 * Add HTTP signature verification concern * Add test for SignatureVerification concern * Add basic test for Request class * Make PuSH subscribe/unsubscribe requests use new Request class Accidentally fix lease_seconds not being set and sent properly, and change the new minimum subscription duration to 1 day * Make all PuSH workers use new Request class * Make Salmon sender use new Request class * Make FetchLinkService use new Request class * Make FetchAtomService use the new Request class * Make Remotable use the new Request class * Make ResolveRemoteAccountService use the new Request class * Add more tests * Allow +-30 seconds window for signed request to remain valid * Disable time window validation for signed requests, restore 7 days as PuSH subscription duration (which was previous default due to a bug)
-
- Jun 18, 2017
-
-
Eugen Rochko authored
Rename Activitypub to ActivityPub
-
- Jun 15, 2017
-
-
ThibG authored
-
- Jun 08, 2017
-
-
ThibG authored
-
- May 06, 2017
-
-
alpaca-tc authored
-
- Apr 27, 2017
-
-
Eugen Rochko authored
* OEmbed support for PreviewCard * Improve ProviderDiscovery code failure treatment * Do not crawl links if there is a content warning, since those don't display a link card anyway * Reset db schema * Fresh migrate * Fix rubocop style issues Fix #1681 - return existing access token when applicable instead of creating new * Fix test * Extract http client to helper * Improve oembed controller
-
- Apr 25, 2017
-
-
Eugen authored
* Fix #2119 - Whenever about to send a HTTP request, normalize the URI * Add test for IDN request in FetchLinkCardService * Perform IDN normalization on domains before they are stored in the DB
-
- Apr 19, 2017
-
-
Eugen authored
* Fix possibility of unrightful webfinger redirect * Add more tests for FollowRemoteAccountService
-
- Apr 16, 2017
-
-
Matt Jankowski authored
-
- Apr 15, 2017
-
-
ThibG authored
* Refresh local info for remote accounts when webfinger returns new values It only refreshes account info if one of the URLs or the public-key changes, in which cases it refreshes the full info, re-downloading the feeds from that user. Some special handling should probably be done when the public key changes, but I have been unable to find any use for it in Mastodon yet. * Re-fetch remote users we aren't subscribed to. This might induce performance issues, we might want to only do that for users we explicitly attempted to subscribe but failed to. * Refactor changes * Do not refresh existing remote account details more than once a day * Avoid re-fetching webfinger info in tests unless otherwise specified
-
- Apr 08, 2017
-
-
Yann GUERN authored
The async action is send before persist, account.id not yet generated Pull queue receive 'nil' so no profile update.
-
- Apr 07, 2017
-
-
Eugen Rochko authored
-
- Apr 05, 2017
-
-
Eugen Rochko authored
-
- Jan 23, 2017
-
-
Eugen Rochko authored
-
- Jan 20, 2017
-
-
Eugen Rochko authored
-
- Nov 26, 2016
-
-
Eugen Rochko authored
-
- Nov 15, 2016
-
-
Eugen Rochko authored
-
- Nov 03, 2016
-
-
Eugen Rochko authored
created via remote look-up when domains differ but point to the same resource
-
- Oct 13, 2016
-
-
Eugen Rochko authored
all required resource links (profile page, salmon, atom feed, magic key)
-
- Oct 12, 2016
-
-
Eugen Rochko authored
-
Eugen Rochko authored
-
- Oct 09, 2016
-
-
Eugen Rochko authored
-
- Oct 06, 2016
-
-
Eugen Rochko authored
-
- Sep 29, 2016
-
-
Eugen Rochko authored
-
- Sep 20, 2016
-
-
Eugen Rochko authored
This is a big one, so let me enumerate: Accounts as well as stream entry pages now contain Link headers that reference the Atom feed and Webfinger URL for the former and Atom entry for the latter. So you only need to HEAD those resources to get that information, no need to download and parse HTML <link>s. ProcessFeedService will now queue ThreadResolveWorker for each remote status that it cannot find otherwise. Furthermore, entries are now processed in reverse order (from bottom to top) in case a newer entry references a chronologically previous one. ThreadResolveWorker uses FetchRemoteStatusService to obtain a status and attach the child status it was queued for to it. FetchRemoteStatusService looks up the URL, first with a HEAD, tests if it's an Atom feed, in which case it processes it directly. Next for Link headers to the Atom feed, in which case that is fetched and processed. Lastly if it's HTML, it is checked for <link>s to the Atom feed, and if such is found, that is fetched and processed. The account for the status is derived from author/name attribute in the XML and the hostname in the URL (domain). FollowRemoteAccountService and ProcessFeedService are used. This means that potentially threads are resolved recursively until a dead-end is encountered, however it is performed asynchronously over background jobs, so it should be ok.
-
- Sep 19, 2016
-
-
Eugen Rochko authored
respect hub.lease_seconds (fix #46)
-
- Sep 17, 2016
-
-
Eugen Rochko authored
-
Eugen Rochko authored
-
- Sep 08, 2016
-
-
Eugen Rochko authored
-
- Sep 04, 2016
-
-
Eugen Rochko authored
-
- Mar 21, 2016
-
-
Eugen Rochko authored
-
- Feb 29, 2016
-
-
Eugen Rochko authored
-
- Feb 28, 2016
-
-
Eugen Rochko authored
-
- Feb 24, 2016
-
-
Eugen Rochko authored
-
Eugen Rochko authored
-