Commit graph

417 commits

Author SHA1 Message Date
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
silverpill
d090363698 Refactor activity builders 2022-05-09 17:14:13 +00:00
silverpill
f5b19f24c6 Change mutex log message level to debug 2022-05-06 19:55:28 +00:00
silverpill
783c482e9e Process incoming activities sequentially
This is a quick fix for race conditions occuring during handling of inbox requests.
2022-05-05 16:53:53 +00:00
silverpill
379116605f Make HTTP signature verification compatible with GoToSocial 2022-05-02 23:34:49 +00:00
silverpill
5c0e6b0b0c Rewrite fetch_profile to accept ActorAddress object 2022-05-02 23:34:45 +00:00
silverpill
b05a8b2757 Ignore forwarded Delete() activities 2022-05-02 20:57:39 +00:00
silverpill
260a3cedb2 Log request URL when profile fetcher fails 2022-05-02 20:45:42 +00:00
silverpill
75ef8bba7c Move import_post to fetcher::helpers module 2022-05-02 17:31:39 +00:00
silverpill
914fae8137 Move parts of import_post to inbox::create_note module 2022-05-02 16:43:13 +00:00
silverpill
787992265e Move Update(Person) activity handler to inbox::update_person module 2022-05-02 12:56:16 +00:00
silverpill
b9ae2f07e7 Rename fetch_attachment to fetch_file 2022-05-02 00:01:57 +00:00
silverpill
fac0172159 Generate RSA key for instance actor automatically on the first run 2022-04-30 20:03:21 +00:00
silverpill
8755177eed Convert incoming questions and pages into posts 2022-04-29 13:21:00 +00:00
silverpill
b384dcd4d2 Allow Tag objects without name property 2022-04-27 10:39:26 +00:00
silverpill
7a47c28034 Federate identity proofs as actor attachments
https://codeberg.org/silverpill/mitra/issues/7
2022-04-27 10:31:59 +00:00
silverpill
83fbbefaab Add test for get_local_actor() 2022-04-26 22:35:39 +00:00
silverpill
8deea0c867 Save submitted identity proofs to database 2022-04-26 20:43:39 +00:00
silverpill
a97456d77a Pass Actor object instead of Value when creating/updating profile 2022-04-21 23:10:30 +00:00
silverpill
a9504de10d Add json_from_sql and json_to_sql macros 2022-04-21 23:10:24 +00:00
silverpill
04e851025b Enforce uniqueness of actor ID 2022-04-20 14:03:13 +00:00
silverpill
0715b7d64f Use actor ID for href field in mention tag
Mastodon also does this in latest version.
2022-04-20 14:02:39 +00:00
silverpill
aa997e3a82 Make activity IDs deterministic 2022-04-14 18:33:18 +00:00
silverpill
0bc3c32fcd Allow value of "attachment" property to be an object 2022-04-14 15:58:29 +00:00
silverpill
56d1ebf9e5 Add include_reposts parameter to get_posts_by_author() func 2022-04-13 21:26:30 +00:00
silverpill
78d66f8a06 Prevent interactions with reposts 2022-04-13 21:26:30 +00:00
silverpill
2fda205dbf Rename process_note() to import_post() and change its error type to ImportError 2022-04-13 19:19:19 +00:00
silverpill
ec44fce526 Write warning to log when processing remote post of unexpected type 2022-04-13 19:00:27 +00:00
silverpill
513f10ab4f Write warning to log when encountering unexpected actor property type 2022-04-12 18:34:01 +00:00
silverpill
30bd3d6a37 Migrate to actix 4.0 and tokio 1 2022-04-10 19:14:45 +00:00
silverpill
ed68b728be Avoid deconstruction when using path extractor
Preparing for migration to actix 4.
2022-04-09 17:11:41 +00:00
silverpill
ee7ae3cd4f Implement instance blocks 2022-02-23 23:38:43 +00:00
silverpill
0727b739ed Move HTTP signature verification to receive_activity() function 2022-02-23 23:38:00 +00:00
silverpill
9bc8997fb5 Identify incoming followers-only posts 2022-02-18 17:57:11 +00:00
silverpill
82e24ad8b0 Validate and clean bio when profile is created or updated 2022-02-17 20:38:56 +00:00
silverpill
4e010f1698 Add profile data validation to get_or_import_profile_by_actor_id 2022-02-16 23:46:01 +00:00
silverpill
848de1d685 Set default tag type to Hashtag 2022-02-15 23:14:39 +00:00
silverpill
d3e3c1eb3e Refactor struct conversion in create_account() handler 2022-02-14 22:08:35 +00:00
silverpill
e756bbacf4 Add tests for note visibility detection 2022-02-13 20:12:31 +00:00
silverpill
79e7d960fb Log more details when processing non-public note 2022-02-13 16:42:01 +00:00
silverpill
6fc319f7dd Validate content of incoming Note objects 2022-02-09 13:53:11 +00:00
silverpill
bf2e38a397 Add User-Agent header to fetcher requests 2022-02-08 19:51:40 +00:00
silverpill
9330038141 Add "subscribers-only" post visibility setting 2022-02-06 12:05:20 +00:00
silverpill
8e53214830 Fix parsing of mentions of local users 2022-01-21 12:34:41 +00:00
silverpill
269318da76 Accept Note attachments of type Image 2022-01-17 11:28:44 +00:00
silverpill
59a86ea827 Add "followers-only" post visibility setting 2022-01-15 20:40:37 +00:00
silverpill
aea6db5acb Try to find actor by href when parsing mention tags 2022-01-14 00:16:54 +00:00
silverpill
de37f606e3 Skip Note attachments with type other than Document 2022-01-08 21:23:21 +00:00
silverpill
d4ab05ce1f Treat all notes that aren't public-addressed as direct messages 2022-01-08 19:24:23 +00:00
silverpill
f0d021853a Refactor timeline and thread queries
Added tests for home timeline query.
2022-01-08 14:56:38 +00:00
silverpill
f8bb82d6cb Set correct primary and secondary audience for direct messages 2022-01-07 22:28:34 +00:00
silverpill
bce194ebda Show direct messages in timelines and threads 2022-01-07 20:44:36 +00:00
silverpill
81d60656e6 Set correct primary audience for Update(Person) activities 2022-01-04 21:55:35 +00:00
silverpill
de1760230a Set primary audience of Delete(Note) activities to Public 2022-01-04 21:55:29 +00:00
silverpill
3e5f5b80d3 Set correct primary and secondary audience for outgoing Announce(Note) and Undo(Announce) activities 2022-01-04 21:36:52 +00:00
silverpill
7a373831fe Set correct primary and secondary audience for outgoing Create(Note) activities 2022-01-04 21:01:45 +00:00
silverpill
c7ee5d94ce Write signer ID to log if actor ID and signer ID do not match 2022-01-04 14:42:03 +00:00
silverpill
5dc07c3742 Verify object ID when processing Update(Person) activity 2022-01-03 23:45:18 +00:00
silverpill
d045df4232 Verify post/reaction author when processing Delete() and Undo() activities
Activity sender and the author must be the same.
2022-01-03 23:38:31 +00:00
silverpill
adb5a6c651 Verify follow request target when processing Accept(Follow)
Activity sender and the target must be the same.
2022-01-03 23:22:52 +00:00
silverpill
d4964878f2 Return error if actor and request signer do not match 2022-01-03 19:34:01 +00:00
silverpill
d46165f397 Process Follow() activity even if relationship already exists 2022-01-02 23:50:37 +00:00
silverpill
9156dec5bb Convert actor_json value into Actor type when reading from database 2022-01-02 01:27:50 +00:00
silverpill
94aad001f8 Add in_reply_to field to Post struct
create_note refactored to accept Post without additional in_reply_to argument.
2021-12-31 19:44:17 +00:00
silverpill
a9a99d7172 Update actor JSON object in database when receiving Update(Person) activity 2021-12-31 19:43:11 +00:00
silverpill
5b0a9ff931 Enable strict HTTP signature verification in inbox 2021-12-31 19:43:05 +00:00
silverpill
452894c224 Ignore Delete(Note) if post is not found in database 2021-12-30 14:45:31 +00:00
silverpill
b2f341445b Skip signature verification when processing Delete(Person) activities 2021-12-29 20:54:36 +00:00
silverpill
580ba6dfba Make actor and object endpoints compatible with Mastodon fetcher 2021-12-29 18:36:50 +00:00
silverpill
f9fca604a9 Make media_type property on Attachment type optional 2021-12-29 15:07:19 +00:00
silverpill
38ed905f47 Use profile importer in verify_http_signature function 2021-12-28 20:54:21 +00:00
silverpill
f7211d2a14 Move profile importers to fetcher::helpers module 2021-12-28 19:54:59 +00:00
silverpill
2db43df631 Ignore Delete(Person) activities 2021-12-28 01:28:28 +00:00
silverpill
1936219b3d Increase maximum length of display_name to 200 chars and validate it on profile import 2021-12-28 00:58:12 +00:00
silverpill
51aea90158 Ignore Undo() if object is not found in database 2021-12-26 14:17:58 +00:00
silverpill
74a89f6fe9 Ignore Like(Note) if reaction already exists in database 2021-12-25 21:45:42 +00:00
silverpill
34b8d05f8b Ignore mention in incoming activity if profile is inaccessible 2021-12-25 16:17:39 +00:00
silverpill
492b18a43a Always add primary recipients to "to" array 2021-12-25 00:53:18 +00:00
silverpill
dc281f821f Allow attributedTo to be array of values
Initial support for PeerTube.
2021-12-24 15:13:33 +00:00
silverpill
91a91b9c16 Implement outboxes 2021-12-24 12:21:05 +00:00
silverpill
ca5640b138 Improve logging in deliverer module 2021-12-24 00:46:29 +00:00
silverpill
de15a57148 Create activitypub::collections module 2021-12-23 00:35:12 +00:00
silverpill
2703ab717a Prevent profile import error in case of webfinger redirection 2021-12-22 23:27:32 +00:00
silverpill
07b711fd61 Ignore Undo(Like) if reaction is not found in database 2021-12-21 22:19:21 +00:00
silverpill
2ab33f22ee Add log_level config parameter and improve logging of activities 2021-12-21 22:19:17 +00:00
silverpill
900299b5e8 Make "value" property optional on ActorProperty type 2021-12-20 23:07:08 +00:00
silverpill
bbbd2fcb13 Keep track of redirects when fetching thread 2021-12-20 01:00:35 +00:00
silverpill
263fae8039 Make name property optional on actor object 2021-12-20 00:12:18 +00:00
silverpill
93b703ba2f Fetch mentioned remote profiles when processing Create(Note) activity 2021-12-19 22:21:02 +00:00
silverpill
fae3f5bc2f Refactor mention_to_acct to return detailed actor address 2021-12-19 22:15:20 +00:00
silverpill
57ada55e8e Add formerType property to Tombstone object 2021-12-18 23:20:25 +00:00
silverpill
d31d315517 Use mention tag name instead of href when parsing incoming notes 2021-12-18 01:09:43 +00:00
silverpill
2df7f7ced7 Log inferred object type in receive_activity() 2021-12-17 23:47:46 +00:00
silverpill
3989a40825 Send Undo(Announce) activity when repost is deleted 2021-12-16 18:53:58 +00:00
silverpill
cf69ac6eb2 Send Undo(Like) activity when post is unfavourited 2021-12-15 01:03:59 +00:00
silverpill
99f32e8202 Store IDs of incoming Like() activities 2021-12-14 22:59:15 +00:00
silverpill
fc153a3156 Set "object" property value to note ID in Like() and Announce() activities 2021-12-12 22:36:50 +00:00
silverpill
816cae6b78 Link hashtags in posts to corresponding tag timeline pages 2021-12-12 19:16:32 +00:00
silverpill
a4dd06d6e9 Replace actor ID with actor URL in mentions, add microformats 2021-12-12 00:41:07 +00:00
silverpill
2a58f567b9 Add @ to mention tag names in Note objects 2021-12-12 00:41:07 +00:00
silverpill
164596989b Ignore Announce() if repost already exists in database 2021-12-11 21:22:08 +00:00