Commit graph

407 commits

Author SHA1 Message Date
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
silverpill c4fdb46df7 Parse and store hashtags 2021-12-10 00:38:24 +00:00
silverpill 82fe25d458 Remove repeated mention tags when processing activities 2021-12-08 00:15:29 +00:00
silverpill be2201f7b6 Use activity ID to identify remote reposts 2021-12-07 11:45:13 +00:00
silverpill 6087e78abb Log activity processing errors 2021-12-06 21:19:23 +00:00
silverpill cc9d1ff0d3 Fetch announced notes 2021-12-06 15:28:41 +00:00
silverpill 21499b5fc3 Refactor process_note() function 2021-12-06 01:25:59 +00:00
silverpill 28511eeafa Use recipient list from Note object in Create activity 2021-12-05 18:12:57 +00:00
silverpill 76bac3a66a Add Note type and use it to construct Create(Note) activities 2021-12-05 16:32:59 +00:00
silverpill 40dbfc05a2 Add API method for deleting posts 2021-12-05 01:55:32 +00:00
silverpill 12c21d86f8 Use ULIDs instead of v4 UUIDs for identifiers 2021-12-02 01:36:35 +00:00
silverpill a0c0f1d092 Log signer ID when processing incoming activity 2021-12-01 15:06:09 +00:00
silverpill a3ac526bca Process EmojiReact() activity as Like() 2021-11-30 20:19:50 +00:00
silverpill db0b49fe79 Refactor receive_activity() function 2021-11-29 20:45:36 +00:00
silverpill a9b7426be4 Deliver Announce(Note) activity to followers 2021-11-26 22:53:40 +00:00
silverpill 81adb9b70e Send Announce(Note) after doing a repost 2021-11-25 23:33:13 +00:00
silverpill 47826628cd Add API endpoints for making and deleting reposts 2021-11-25 23:31:10 +00:00
silverpill 215aa5932e Make "href" property optional on Tag object 2021-11-25 16:04:03 +00:00
silverpill 20026bd819 Don't log incoming Delete() activities if HTTP signature is not valid 2021-11-22 22:42:17 +00:00
silverpill 1d1618d6a2 Add uri attribute to Status object 2021-11-21 15:38:04 +00:00
silverpill 481d9a1509 Return error if trying to fetch local profile 2021-11-21 13:48:38 +00:00
silverpill 22fa619a16 Make "to" property optional on Activity object 2021-11-21 13:48:38 +00:00
silverpill ec36dea0c9 Log activities coming to instance actor inbox 2021-11-21 13:48:33 +00:00
silverpill c578d8536f Hide private posts from threads 2021-11-20 01:14:37 +00:00
silverpill bbf696fe6e Handle Delete activities that don't have object type 2021-11-19 00:05:39 +00:00
silverpill 3b5ec45991 Set visibility to direct for incoming notes with single local recipient 2021-11-18 23:24:13 +00:00
silverpill 4f5930dcf1 Set post visibility to public by default 2021-11-18 21:55:22 +00:00
silverpill 9216d2414b Add "to" attribute to Activity object 2021-11-18 21:28:50 +00:00
silverpill d104b32d5e Make "name" attribute optional in Attachment object 2021-11-18 16:50:52 +00:00
silverpill fc24ba0e59 Change default activity content type 2021-11-18 16:23:57 +00:00
silverpill 3fc0acd2d1 Sign GET request when fetching AP object 2021-11-18 15:17:40 +00:00
silverpill ac1027ac2a Don't sign GET requests in private mode 2021-11-18 15:11:54 +00:00
silverpill 924f5181b6 Sign GET request when fetching remote actor profile 2021-11-18 14:57:58 +00:00
silverpill d935b843a8 Create instance actor 2021-11-18 00:51:56 +00:00
silverpill d94e3d610d Enable creation of HTTP signatures for all types of requests 2021-11-18 00:26:00 +00:00
silverpill 2747f3eafe Ignore Like() if post is not found locally 2021-11-14 22:58:29 +00:00
silverpill 6d0505e93f Redirect to frontend if actor or object is requested using web browser 2021-11-14 00:00:19 +00:00
silverpill c473070fd4 Configure linter and fix its warnings 2021-11-13 17:37:31 +00:00
silverpill e9c5bda55c Send Update(Person) to followers after updating profile 2021-11-13 01:27:53 +00:00
silverpill a5e3bef70c Refactor activitypub::actor module 2021-11-13 01:07:19 +00:00
silverpill ce551e9c8b Handle incoming Delete() activities 2021-11-12 15:26:27 +00:00
silverpill 3fde882e1d Include inbox URL in deliverer log message 2021-11-11 23:28:41 +00:00
silverpill 2bfb6253f8 Federate mentions 2021-11-11 21:51:47 +00:00
silverpill 4da44159ed Store mentions in database 2021-11-11 20:24:47 +00:00
silverpill 0fd7c0fae3 Add actor_id method to actor profile type 2021-11-10 17:21:55 +00:00
silverpill 7f07468d14 Improve instance URL parsing and validation 2021-11-10 17:07:18 +00:00
silverpill 81d6cf3daf Add support for search by Note url 2021-11-07 22:06:05 +00:00
silverpill 284840463c Move code that processes incoming Note objects to a separate function 2021-11-07 21:59:43 +00:00
silverpill 5cd79eb9b6 Return empty array instead of error if search for remote profile fails 2021-11-07 13:44:45 +00:00
silverpill ab9184f068 Send Create(Note) to author of parent post when creating reply 2021-11-01 18:33:56 +00:00
silverpill 5c10ffc590 Add actor() method to DbActorProfile type 2021-10-31 20:46:29 +00:00
silverpill e10804be64 Refactor deliverer 2021-10-30 22:35:18 +00:00
silverpill d41d85548d Send and receive Like activities 2021-10-29 21:32:31 +00:00
silverpill 371be9836e Add default value to Object type 2021-10-29 16:34:22 +00:00
silverpill cca8a5ff94 Fetch ancestors of incoming Notes by going through inReplyTo references 2021-10-10 00:29:54 +00:00
silverpill 3aa35271a6 Fetch actor when receiving Create(Note) or Follow activity 2021-10-10 00:24:31 +00:00
silverpill 8d66bcb034 Refactor Create(Note) activity processor 2021-10-09 16:49:20 +00:00
silverpill 9f114f4255 Add tests for create_note function 2021-10-09 12:53:53 +00:00
silverpill 8610719bd0 Store IDs of incoming Note objects 2021-10-08 23:12:15 +00:00
silverpill 8c18a0ab86 Allow retrieval of local Note objects using /objects/ URL 2021-10-08 22:59:04 +00:00
silverpill 7a65e34e62 Populate inReplyTo field in Note object when creating post 2021-10-08 22:54:53 +00:00
silverpill 520e5399aa Enable replies 2021-09-23 23:28:39 +00:00
silverpill 087a077f7d Make actor ID and object ID parsers more strict 2021-09-20 21:45:33 +00:00
silverpill 602e4ec229 Add handler for Reject(Follow) activity 2021-09-20 21:06:48 +00:00
silverpill d2adda2034 Keep value source when editing extra fields 2021-09-17 14:43:02 +00:00
silverpill 7fad429a8c Save extra fields from remote actors 2021-09-17 12:48:13 +00:00
silverpill 6dec1a5da1 Add extra fields to actor profile 2021-09-16 20:14:48 +00:00
silverpill fdef4b6e6a Initial commit 2021-09-14 12:24:05 +00:00