Commit graph

517 commits

Author SHA1 Message Date
silverpill e0053f19c7 Add handler function for Create() activity 2022-12-07 19:46:49 +00:00
silverpill c218d3ebce Don't match object type in receive_activity() 2022-12-06 23:59:33 +00:00
silverpill 67313dbac7 Create unified handler for Undo() activities 2022-12-06 23:53:30 +00:00
silverpill 648a217971 Create unified handler for Update() activities 2022-12-06 23:48:24 +00:00
silverpill a3c3f97759 Rename modules 2022-12-06 23:29:59 +00:00
silverpill d3819c67e6 Create dedicated types for all activities and remove create_activity() function 2022-12-06 21:07:26 +00:00
silverpill e5c1be2f93 Transform incoming events into posts
Support for Event objects from Rebased.
2022-12-06 19:54:44 +00:00
silverpill 777dd74373 Use Follow type to create embedded activity when building Undo(Follow) 2022-12-05 23:03:37 +00:00
silverpill 7c3d669e9b Use plain object ID instead of embedded activity in Accept(Follow) 2022-12-05 22:59:31 +00:00
silverpill 51318046a8 Create dedicated types for building Follow(), Accept(Follow) and Undo(Follow) activities 2022-12-05 22:53:09 +00:00
silverpill ff745cfe64 Add tests for build_undo_follow() and build_move_person() 2022-12-05 22:50:40 +00:00
silverpill 10cd778f40 Replace generic parameter in OutgoingActivity struct with Value type 2022-12-05 18:08:15 +00:00
silverpill d1939b10d5 Move DatabaseError to database module 2022-12-03 22:57:09 +00:00
silverpill 4185cbefb0 Rename Pool type to DbPool 2022-12-03 21:30:24 +00:00
silverpill 56427a4535 Catch error if media request returns 4xx or 5xx 2022-12-03 11:19:08 +00:00
silverpill 28aea5b023 Always set User-Agent header when using fetcher 2022-12-03 11:19:01 +00:00
silverpill 7d204ab150 Remove unknown classes during HTML sanitization 2022-11-29 16:46:00 +00:00
silverpill a3ec1e7b58 Verify that actor alias exists before moving local followers 2022-11-27 22:04:53 +00:00
silverpill ff7c6724a0 Accept Move() activities where object is local actor 2022-11-27 19:54:07 +00:00
silverpill df8c206cf0 Accept Move() activities coming from "target" actor 2022-11-27 19:53:57 +00:00
silverpill 73ef78f021 Search for aliases by DID when processing Move(Person) activity 2022-11-27 13:47:52 +00:00
silverpill 4a42bcd369 Add API methods for creating user-signed Move() activities 2022-11-27 13:05:21 +00:00
silverpill 12861a98b7 Use actor ID as a hint when identifying activity signer 2022-11-27 11:15:13 +00:00
silverpill 8dfd8bf0d7 Add ImportError to AuthenticationError enum 2022-11-27 10:53:51 +00:00
silverpill fbcba1b99d Refactor send_signed_update view 2022-11-26 01:00:42 +00:00
silverpill 262b910638 Rename instance.host() to instance.hostname() 2022-11-24 13:27:10 +00:00
silverpill 473147ed04 Move signature type check to activitypub::authentication module 2022-11-23 16:11:25 +00:00
silverpill 301ade36a3 Use enum to define identity proof type 2022-11-23 01:04:55 +00:00
silverpill 241351c2bf Allow value of "icon" property to be empty object 2022-11-22 19:00:29 +00:00
silverpill 1edcefee6d Accept Create() activities with object type Article and Video 2022-11-21 23:24:40 +00:00
silverpill 126c04febb Include local posts in search results 2022-11-21 22:06:06 +00:00
silverpill 4a5bcba127 Change signature format in minisign integrity proofs 2022-11-19 15:52:20 +00:00
silverpill e1bb00a8dc Handle Accept(Follow) activities without nested Follow 2022-11-18 16:42:04 +00:00
silverpill 3b470a04f7 Allow alsoKnownAs attribute value to be string 2022-11-17 22:49:31 +00:00
silverpill 09cb15297a Ignore Announce(Undo) activities 2022-11-14 18:56:42 +00:00
silverpill c11daa21a0 Rename utils::crypto module to crypto_rsa 2022-11-13 21:31:04 +00:00
silverpill 4d85638d8c Move password utils to utils::passwords module 2022-11-13 21:30:59 +00:00
silverpill 8ad88f84b2 Support integrity proofs created with minisign 2022-11-11 00:53:23 +00:00
silverpill 64546ecabe Refactor signature verifiers 2022-11-11 00:53:23 +00:00
silverpill db00ad1623 Move signature suites to identity::signatures module 2022-11-11 00:53:23 +00:00
silverpill f4aebdfdb2 Accept minisign identity proofs from other instances 2022-11-11 00:53:23 +00:00
silverpill 1bfb951df8 Move create_identity_claim to identity::claims module
Make it work with any DID type
2022-11-10 09:46:06 +00:00
silverpill a5c9da78ef Add DidKey type 2022-11-09 18:53:52 +00:00
silverpill dae6e9437b Use general Did type intsead of DidPkh in identity proofs 2022-11-09 18:15:50 +00:00
silverpill 4e53a5c4e4 Move DidPkh type to identity module 2022-11-08 22:45:59 +00:00
silverpill fbfb6bb3c2 Create dedicated type for Update(Person) activity 2022-11-07 15:52:53 +00:00
silverpill e750b2b718 Add test for build_update_person 2022-11-07 15:32:49 +00:00
silverpill ff12501ec0 Exclude local profiles when looking up activity signer 2022-11-06 22:37:09 +00:00
silverpill 109a519607 Treat activity signature as primary signature
Request signature is secondary.
2022-11-06 22:29:06 +00:00
silverpill 3cc7b58350 Change log level of JSON signature error message 2022-11-02 19:23:32 +00:00
silverpill 7f9b2a8768 Verify activities containing EIP-155 integrity proof 2022-11-02 18:04:12 +00:00
silverpill cdd3bfb6df Rewrite get_json_signature to return signer type along with other info 2022-11-02 17:16:53 +00:00
silverpill 75fe4df328 Implement EIP-191 integrity proofs 2022-11-02 16:08:34 +00:00
silverpill 1ec8cb4ddd Add views for signing Update(Person) activity 2022-11-02 16:08:34 +00:00
silverpill 3dbb922f3c Return error if trying to sign activity which is already signed 2022-11-02 16:08:34 +00:00
silverpill 4193ba94a5 Write warning to log if request signer differs from activity signer 2022-10-31 22:33:14 +00:00
silverpill 8c1d871d9e Return HTTP 405 in reponse to POST request to outbox
ActivityPub C2S is not supported.
2022-10-31 19:11:00 +00:00
silverpill c8b8a5ffe5 Remove name attribute from link tag 2022-10-28 15:34:30 +00:00
silverpill 2e7403ef14 Add redirection views for /profile/{id} and /post/{id} paths 2022-10-27 22:13:53 +00:00
silverpill 367e3f37c7 Verify signed activities 2022-10-27 20:45:49 +00:00
silverpill 077d942573 Add error type for AP authentication errors 2022-10-27 20:09:47 +00:00
silverpill a67a7b9b17 Remove character limit check 2022-10-25 19:49:48 +00:00
silverpill a3723e2e6d Sign outgoing activities 2022-10-24 21:20:41 +00:00
silverpill 295150361c Improve reporting of JSON parsing error 2022-10-24 21:19:48 +00:00
silverpill 01d3f54939 Move verify_signed_request function to activitypub::authentication module 2022-10-23 23:51:51 +00:00
silverpill 256e225742 Rename ImportError to HandlerError 2022-10-23 23:51:51 +00:00
silverpill 1e575b2f6f Rewrite receive_activity to return ImportError instead of HttpError 2022-10-23 23:51:50 +00:00
silverpill 862415d49b Refactor http_signatures module 2022-10-23 23:49:16 +00:00
silverpill 0063a14264 Send notifications when actor moves to another instance 2022-10-23 17:56:32 +00:00
silverpill 9b31395853 Handle Move(Person) activity
https://codeberg.org/silverpill/mitra/issues/10
2022-10-23 17:56:23 +00:00
silverpill 65661698c7 Pass instance as ref to activity builders 2022-10-22 11:33:23 +00:00
silverpill 8f7dd5d88c Write message to log if remote actor has aliases 2022-10-22 11:33:09 +00:00
silverpill f92428e509 Add support for SOCKS proxy 2022-10-19 20:29:24 +00:00
silverpill 36730be03b Replace actor image fetchers with a single function 2022-10-19 19:47:06 +00:00
silverpill dbe54f0924 Sort inboxes before delivering activity 2022-10-18 21:35:59 +00:00
silverpill f0dace197b Allow instance URI to be onion, i2p or yggdrasil address 2022-10-18 19:10:30 +00:00
silverpill eef20f6b7c Write list of unreachable instances to log after finishing delivery 2022-10-18 00:20:02 +00:00
silverpill 09d025d461 Add get_hostname function 2022-10-18 00:06:26 +00:00
silverpill 879e284403 Fetch posts quoted in replies
Previously only quotes in top-level posts were processed.
2022-10-17 19:00:56 +00:00
silverpill 762b3e053e Refactor fetcher loop in import_post 2022-10-17 18:55:09 +00:00
silverpill 374d17c8cf Prevent panic in import_post 2022-10-17 00:01:44 +00:00
silverpill 22d4695614 Add get_post_by_object_id helper 2022-10-15 14:20:45 +00:00
silverpill a74736d29f Ignore Update(Note) if it tries to update local post 2022-10-15 14:13:12 +00:00
silverpill 0ce634564b Rename some functions 2022-10-15 13:08:50 +00:00
silverpill 03ebf75da2 Wrap markdown in remote object content in <p> tag 2022-10-13 16:52:06 +00:00
silverpill 47149e5379 Fix panic during post deletion 2022-10-11 19:52:41 +00:00
silverpill 81910f9591 Rename instance field in ActorAddress to hostname 2022-10-09 14:28:30 +00:00
silverpill 0a62fdac2b Remove target="_blank" and add rel="noopener" during HTML cleaning 2022-10-09 13:06:57 +00:00
silverpill 448b5afa88 Add line break before inline-quote block 2022-10-06 22:50:34 +00:00
silverpill 9bc53b6734 Don't add FEP-e232 link tags to outgoing activities 2022-10-05 18:52:06 +00:00
silverpill c7499cb0dc Fix creation date in reposts 2022-10-04 23:29:29 +00:00
silverpill fa49e2b4c2 Remove acct field from ProfileCreateData struct 2022-10-04 21:18:55 +00:00
silverpill 5c56f831db Rewrite DbActorProfile.actor_address() to return ActorAddress object 2022-10-04 21:18:38 +00:00
silverpill 0c00dca7d3 Use actor address regexp for parsing acct: URI 2022-10-04 00:31:25 +00:00
silverpill 8b6aef2b7a Validate acct during profile creation 2022-10-04 00:31:21 +00:00
silverpill 429f530a71 Refactor ActorAddress type 2022-10-03 21:21:20 +00:00
silverpill 7fdf1e7400 Add quoteUrl property to outgoing notes with object links 2022-10-02 21:23:16 +00:00
silverpill a685829472 Implement FEP-e232 and allow to add quotes to posts 2022-10-02 21:23:16 +00:00
silverpill 5b7979b9d4 Use add_related_posts helper in outbox and object views 2022-10-02 21:23:16 +00:00
silverpill feca43dea7 Rename constants 2022-10-02 21:23:16 +00:00
silverpill 81c590559e Use u16 when working with page size 2022-09-29 21:47:35 +00:00
silverpill f9465693a3 Allow remote posts without content 2022-09-29 15:37:26 +00:00
silverpill b53a1298a2 Limit number of attachments in remote posts 2022-09-27 23:40:24 +00:00
silverpill ce28c2e9fb Add totalItems property to followers, following and subscribers collections 2022-09-25 21:11:18 +00:00
silverpill c488d5b5d4 Log attachment fetching errors 2022-09-19 18:39:56 +00:00
silverpill 4bc4a5c2f8 Ignore Announce(Update) activities 2022-09-17 17:29:31 +00:00
silverpill 24303f00d0 Allow tag property value to be an object 2022-09-17 16:35:23 +00:00
silverpill 6a5bf06d74 Ignore Announce(Like) activities 2022-09-15 21:40:24 +00:00
silverpill 7600efccb5 Add subscribers_count field to Account object 2022-09-13 19:15:58 +00:00
silverpill 5e8a95c646 Ignore Announce(Create) activities 2022-09-13 13:38:02 +00:00
silverpill 9aafe0eaf4 Ignore Accept(Follow) if follow request is already accepted 2022-09-12 23:39:08 +00:00
silverpill 43eda37322 Replace Person object with target actor ID in Follow() activity
Following Lemmy communities.
2022-09-12 18:31:01 +00:00
silverpill 9f3b95c41d Mention all subscribers when creating subscribers-only post 2022-09-11 14:25:30 +00:00
silverpill ed98648756 Truncate inbox response text before logging it 2022-09-04 11:59:07 +00:00
silverpill 0d7325f8f6 Increase max download size 2022-09-01 12:38:39 +00:00
silverpill 423eec0a2c Add MoneroSubscription payment option 2022-08-31 20:42:57 +00:00
silverpill c5c3911de6 Require chain ID field in payment options of ethereum type 2022-08-29 22:28:34 +00:00
silverpill 742e731b95 Convert PaymentOption type into enum 2022-08-25 19:16:38 +00:00
silverpill f4d1e756d4 Fetch object referenced by quoteUrl property and create a link between posts 2022-08-21 23:45:49 +00:00
silverpill d9def75b32 Create post_link table to store links between posts 2022-08-21 22:36:31 +00:00
silverpill fcf7db97cb Rename posts::tags module to posts::hashtags 2022-08-21 21:35:12 +00:00
silverpill e51f5fa3bb Set limit on the size of remote media files 2022-08-18 22:57:58 +00:00
silverpill 3b56b29785 Refactor utils::files and move upload helpers to mastodon_api::uploads module 2022-08-18 21:26:24 +00:00
silverpill a804d0e8bb Add "published" property to outgoing Announce(Note) activities 2022-08-08 17:51:46 +00:00
silverpill fd632b4816 Use custom type for building Announce(Note) activity 2022-08-08 15:45:49 +00:00
silverpill bdcdb06c51 Add pagination headers to followers/following API responses 2022-08-07 18:27:28 +00:00
silverpill 272ee9997b Don't return error after receiving Add() or Remove() with "featured" collection as target 2022-08-04 12:34:30 +00:00
silverpill 980d65fa5e Use exponential backoff when waiting for delivery retry 2022-08-04 12:34:25 +00:00
silverpill eb5e6b969b Make subscribers part of primary audience of Note 2022-07-29 09:33:40 +00:00
silverpill edc64bbbb2 Add tests for Delete(Note) activity builder 2022-07-29 09:31:15 +00:00
silverpill a70c841955 Fix audience of private Delete(Note) activity 2022-07-28 23:50:27 +00:00
silverpill aefed2479e Fix audience of private Undo(Like) activity 2022-07-28 22:42:43 +00:00
silverpill ecc4afe568 Append object URL to post content if object type is not Note 2022-07-28 22:04:14 +00:00
silverpill 67c6b76bcb Refactor profile importers 2022-07-27 13:30:13 +00:00
silverpill bc1b73dd24 Ignore error if profile re-fetching fails 2022-07-27 12:36:42 +00:00
silverpill 33a711b91c Attach subscription page link to actor object 2022-07-25 21:39:06 +00:00
silverpill e573ecb27b Add payment_options field to actor profile 2022-07-25 17:44:36 +00:00
silverpill cef026f89a Retry activity delivery on failure 2022-07-24 21:21:29 +00:00
silverpill 42cbe44357 Move functions for working with actor attachments to actors::attachments module 2022-07-23 22:03:09 +00:00
silverpill a00b704cf4 Rename actor module to actors::types 2022-07-23 21:41:49 +00:00
silverpill b185e1f391 Remove "capabilities" property from actor object 2022-07-23 20:26:40 +00:00
silverpill 5b0cfe1f6b Ignore errors when fetching avatar or banner of remote actor 2022-07-22 23:02:46 +00:00
silverpill 09b06c4fdb Allow to like private posts 2022-07-20 21:53:40 +00:00
silverpill 672ff5f0ac Handle incoming Add(Person) and Remove(Person) activities 2022-07-17 02:01:11 +00:00
silverpill 0a8e06995b Send Remove(Person) activity when subscription expires 2022-07-17 00:11:02 +00:00
silverpill acdb51e6f4 Add builder for Add(Person) activity 2022-07-17 00:11:02 +00:00
silverpill dcb5736d74 Use tokio::spawn instead of actix_rt::spawn 2022-07-17 00:03:43 +00:00
silverpill fd4d56c82b Make deliverer accept any serializable object 2022-07-16 14:48:37 +00:00
silverpill 9a38fb25bf Move AP ID parsers to activitypub::identifiers module 2022-07-16 14:10:56 +00:00
silverpill d2ba86315c Move AP ID helpers to activitypub::identifiers module 2022-07-16 01:49:48 +00:00
silverpill 34ecf56ccd Add actor collections enum 2022-07-15 23:53:31 +00:00
silverpill 75e4bfaaf7 Add tests for get_instance_actor() 2022-07-15 23:53:31 +00:00
silverpill 85899e020f Set connect timeout to 30 secs in fetcher module 2022-07-14 17:47:18 +00:00
silverpill 9aa9130d05 Move audience helpers to activitypub::builders 2022-07-14 14:14:14 +00:00
silverpill c9bbf7020e Move Undo(Announce) builder function to builders::undo_announce_note module 2022-07-14 10:57:17 +00:00
silverpill 623e7c9c49 Move Announce(Note) builder function to builders::announce_note module 2022-07-14 10:44:39 +00:00
silverpill 1c4e75b0d8 Move Undo(Like) builder function to builders::undo_like_note module 2022-07-14 09:52:46 +00:00
silverpill 7103de2519 Move Like() builder function to builders::like_note module 2022-07-14 09:50:34 +00:00
silverpill 4f2979f568 Add more tests for activity builders 2022-07-14 09:08:55 +00:00
silverpill b89bd7e570 Move Accept(Follow) builder function to builders::accept_follow module 2022-07-14 08:14:24 +00:00
silverpill d29e27b114 Move Follow() builder function to builders::follow module 2022-07-14 08:14:04 +00:00
silverpill c78af51398 Increase max size of profile field name 2022-07-12 19:03:44 +00:00
silverpill cedc6667bd Try to find profile by acct if couldn't find it by actor ID
This should prevent violation of unique constraint on "acct" column
when importing profile by actor ID.
2022-07-10 21:26:44 +00:00
silverpill 48331382c3 Remove duplicate tags when processing remote posts 2022-07-10 20:58:28 +00:00
silverpill 74eca31a53 Log more details about file errors during fetching 2022-07-10 20:15:47 +00:00
silverpill d831eb79e4 Add address() method to Actor type
Returns ActorAddress object.
2022-07-10 19:41:32 +00:00
silverpill e0a1141552 Check actor ID after fetching 2022-07-10 13:14:41 +00:00
silverpill 803e73b4da Improve logging of mention parsing errors 2022-07-10 13:05:37 +00:00
silverpill 145622e805 Move fetch_profile_by_actor_id to fetcher::helpers module 2022-07-10 13:05:30 +00:00
silverpill 5d3e5dc693 Re-fetch remote profiles automatically 2022-07-09 21:25:11 +00:00
silverpill 2a626a1859 Replace fetch_profile() function with perform_webfinger_query() 2022-07-08 23:18:46 +00:00
silverpill 166a81ce6b Mention all recipients in subscribers-only posts 2022-06-15 12:42:15 +00:00
silverpill fd7ef7b9c1 Move get_note_recipients() to builders::create_note module 2022-06-15 12:09:36 +00:00
silverpill 8d8227c349 Move Create(Note) builder function to builders::create_note module 2022-06-15 11:27:06 +00:00
silverpill ab2aa5f197 Detect incoming subscriber-only posts 2022-06-14 23:49:20 +00:00
silverpill 91309e1a7b Don't return error when processing activity from blocked instance 2022-06-14 19:47:36 +00:00
silverpill 669c581862 Send Delete(Person) activity when deleting local user 2022-06-02 16:28:40 +00:00
silverpill e82c6f31fb Move code for building Undo(Follow) activity to builders::undo_follow 2022-06-02 03:28:57 +00:00
silverpill 50986cd358 Move code for building Update(Person) activity to builders::update_person 2022-06-02 03:28:51 +00:00
silverpill 275e5ae5ca Send Delete(Note) acitivty when deleting post using CLI 2022-06-01 17:13:27 +00:00
silverpill ff892b0826 Handle Delete(Person) activities 2022-06-01 17:13:13 +00:00
silverpill a96d4fecfc Move Accept(Follow), Reject(Follow) and Undo() activity handlers to inbox module 2022-06-01 17:11:05 +00:00
silverpill 30da77dcf5 Move Follow() activity handler to inbox::follow module 2022-06-01 17:10:02 +00:00
silverpill 103a01f981 Move Like() activity handler to inbox::like module 2022-06-01 17:07:39 +00:00
silverpill 629ac7196b Move Announce() activity handler to inbox::announce module 2022-06-01 17:06:37 +00:00
silverpill 8bce89e6d1 Move Delete() activity handler to inbox::delete module 2022-06-01 17:05:09 +00:00
silverpill 30990c8af6 Define common return type for activity handlers 2022-06-01 17:03:29 +00:00
silverpill 1b1633d0b7 Rename activitypub::inbox module to handlers 2022-06-01 17:02:25 +00:00
silverpill 8407bbe842 Don't fetch signer when processing Delete(Person) activity 2022-05-30 20:21:21 +00:00
silverpill c89ee4fd7b Accept Delete(Person) activities if HTTP signature is correct 2022-05-30 17:35:52 +00:00
silverpill 14cb90224f Do not return error if activity type is not supported 2022-05-27 23:08:41 +00:00
silverpill 424859772a Add summary (bio) to local actor objects 2022-05-24 17:57:06 +00:00
silverpill c734f3575f Fix invalid ID of Accept(Follow) activity 2022-05-23 08:21:26 +00:00
silverpill 6863fba96e Refactor update_actor() function, remove unwrap() 2022-05-22 19:02:37 +00:00
silverpill f2e61dd9a3 Add CLI command for re-fetching actors 2022-05-22 18:56:17 +00:00
silverpill 28ccd19c34 Verify actor ID after fetching
Request can be redirected so doing it before request is not reliable.
2022-05-22 18:27:03 +00:00
silverpill 61f0c5a546 Ignore Undo(Follow) if relationship doesn't exist 2022-05-22 16:31:58 +00:00
silverpill 9a20c7891f Fix bug in create_activity_like() 2022-05-13 18:18:09 +00:00
silverpill 425a5d9331 Use "name" property if "content" is not available in get_note_content 2022-05-12 15:48:54 +00:00
silverpill dc34c980f6 Handle Update(Note) activities 2022-05-11 13:31:08 +00:00