Commit graph

1108 commits

Author SHA1 Message Date
silverpill
bcef9bb989 Remove database-specific code from utils::caip2 module 2023-02-18 21:53:20 +00:00
silverpill
f1972be8db Add generate_random_sequence() function 2023-02-18 21:29:27 +00:00
silverpill
a9cb1c6a83 Add test for make_entry function 2023-02-18 19:48:17 +00:00
silverpill
1d16fb45a5 Change /api/v1/{status_id}/context response format to match Mastodon API 2023-02-13 00:28:34 +00:00
silverpill
23b44ce0db Add /api/v1/{status_id}/thread API endpoint 2023-02-12 23:24:28 +00:00
silverpill
9fd6724819 Add test for get_thread() function 2023-02-12 23:07:30 +00:00
silverpill
6945ded963 Group imports 2023-02-12 23:07:19 +00:00
silverpill
bc3184cf77 Rename new_uuid function to generate_ulid 2023-02-12 22:04:31 +00:00
silverpill
c461fbc268 Re-export ammonia::clean_text from utils::html 2023-02-12 21:38:22 +00:00
silverpill
2acf50fa01 Move some functions from utils::files to media module 2023-02-12 19:10:33 +00:00
silverpill
0988c0c91e Improve ethereum address validation and move validator to ethereum::utils module 2023-02-12 18:26:39 +00:00
silverpill
fdd3a22807 Support "authorization_code" OAuth grant type 2023-02-11 23:30:51 +00:00
silverpill
cf69f1394a Add OAuth authorization page 2023-02-11 23:30:46 +00:00
silverpill
2d9a43b076 Add /api/v1/apps endpoint 2023-02-11 17:14:37 +00:00
silverpill
4ace00736b Refactor search::helpers module 2023-02-10 17:14:34 +00:00
silverpill
0b8553d0c2 Allow instance_uri configuration value to contain URI scheme 2023-02-10 11:55:05 +00:00
silverpill
cbc3f7b65a Fix permission error on subscription settings update 2023-02-09 19:56:51 +00:00
silverpill
344025ae2f Move ChainId to Currency conversion code to utils::caip2 module 2023-02-08 00:25:54 +00:00
silverpill
eeae9e3ad7 Remove dependency on activitypub module from config::main 2023-02-07 18:28:19 +00:00
silverpill
8289aeaf41 Move parse_caip2_chain_id() to utils::caip2 module 2023-02-07 17:30:06 +00:00
silverpill
53d012c9d0 Use header name constants in activitypub::views module 2023-02-07 12:00:22 +00:00
silverpill
239bdcf97d Process Delete() and Undo() activities in background to preserve ordering 2023-02-07 00:03:41 +00:00
silverpill
5d4cfab00a Replace ConversionError with ConfigError in config module 2023-02-05 21:30:51 +00:00
silverpill
831739d215 Ignore Announce(Delete) activities 2023-02-05 21:01:12 +00:00
silverpill
ad1a658806 Implement automatic pruning of empty profiles 2023-02-05 20:28:55 +00:00
silverpill
6002e58425 Implement automatic pruning of remote posts 2023-02-05 13:37:41 +00:00
silverpill
0ab374e9ea Move periodic tasks to job_queue::periodic_tasks module 2023-02-05 12:11:30 +00:00
silverpill
3f89d97a5c Rename Task enum to PeriodicTask 2023-02-05 11:41:41 +00:00
silverpill
b91e6e77b5 Add limits.posts.character_limit configuration parameter 2023-02-04 22:03:37 +00:00
silverpill
151b068d97 Make maximum size of media attachment configurable 2023-02-04 22:03:32 +00:00
silverpill
79404fdc71 Don't allow read-only users to manage subscriptions 2023-02-04 22:00:03 +00:00
silverpill
09b16599d9 Don't create invoice if recipient can't accept subscription payments 2023-02-04 22:00:03 +00:00
silverpill
4559f74881 Use "warn" log level for delivery errors 2023-02-04 22:00:03 +00:00
silverpill
8bb786c763 Set 10 minute timeout on background job that processes incoming activities
https://codeberg.org/silverpill/mitra/issues/24
2023-02-04 22:00:02 +00:00
silverpill
e784476344 Add /api/v1/custom_emojis endpoint 2023-02-04 21:59:59 +00:00
silverpill
0b442f6a2c Ignore forwarded Like activities 2023-02-02 00:48:03 +00:00
silverpill
5a3ef41277 Append attachment URL to post content if attachment is too large 2023-01-31 19:03:03 +00:00
silverpill
01c894da9d Separate object URL handling from content validation 2023-01-31 19:03:03 +00:00
silverpill
bc19a524c4 Replace post attachments and other related objects when processing Update(Note) activity 2023-01-31 18:47:34 +00:00
silverpill
86beb532e2 Refactor handle_note() function 2023-01-31 14:18:46 +00:00
silverpill
f142bee72b Refactor create_post() function 2023-01-31 13:56:25 +00:00
silverpill
70455e5eeb Return "202 Accepted" when activity is accepted by inbox endpoint 2023-01-29 21:13:35 +00:00
silverpill
f55431f8b8 Improve some error descriptions 2023-01-29 20:04:23 +00:00
silverpill
6f38eba80e Add https://w3id.org/security/data-integrity/v1 to JSON-LD context 2023-01-28 22:43:15 +00:00
silverpill
08c55cc71c Use proof suites with prefix Mitra 2023-01-28 19:47:44 +00:00
silverpill
385a11d6a7 Don't retry activity if fetcher recursion limit has been reached 2023-01-26 13:57:46 +00:00
silverpill
1f9669ad7c Add set-role command 2023-01-26 00:00:17 +00:00
silverpill
01f956b6ce Add configuration option for automatic assigning of "read-only user" role after registration 2023-01-26 00:00:14 +00:00
silverpill
2ea14635d2 Implement role system
https://codeberg.org/silverpill/mitra/issues/25
2023-01-25 23:59:39 +00:00
silverpill
771f45baab Add registration.type configuration option 2023-01-25 23:47:36 +00:00
silverpill
b82c2f3fc6 Add missing <link rel="alternate"> element to Atom feed entries 2023-01-25 22:24:45 +00:00
silverpill
9fc87803e5 Add missing <link rel="self"> element to Atom feeds 2023-01-25 22:22:56 +00:00
silverpill
780b165a8b Improve Atom feed XML formatting 2023-01-25 22:09:32 +00:00
silverpill
f52a55a387 Add approval_required and invites_enabled flags to InstanceInfo object 2023-01-25 20:30:51 +00:00
silverpill
ce8f597501 Move parse_env() and parse_config() to config::loader module 2023-01-25 20:30:51 +00:00
silverpill
8dfb040b5f Refactor parse_env() function 2023-01-25 20:30:51 +00:00
silverpill
200675464e Replace config.version field with constant 2023-01-25 20:30:51 +00:00
silverpill
e78e3c5102 Increase length of logged inbox response 2023-01-25 20:30:43 +00:00
silverpill
fe6d99c5b1 Drop support for "blockchain" setting 2023-01-25 04:41:03 +00:00
silverpill
e24f01a2b5 Allow custom emojis with image/apng media type 2023-01-22 23:52:17 +00:00
silverpill
42329328ec Create workspace and move mitractl to a separate crate 2023-01-22 20:50:28 +00:00
silverpill
203582f801 Add days_before_now() utility function 2023-01-22 20:40:05 +00:00
silverpill
d09770913b Replace client-side tag URLs with collection IDs 2023-01-22 15:32:23 +00:00
silverpill
be67972760 Add emojis to post previews 2023-01-21 23:00:21 +00:00
silverpill
97145efad9 Make delete-emoji command accept emoji name and hostname instead of ID 2023-01-21 22:56:52 +00:00
silverpill
f6026293a5 Add test for create_attachment() 2023-01-21 22:56:52 +00:00
silverpill
75579eae4f Add support for emoji shortcodes 2023-01-21 22:56:46 +00:00
silverpill
e8500b982b Add import-emoji command 2023-01-21 19:52:36 +00:00
silverpill
b958b8fb4c Save sizes of media attachments and other files to database 2023-01-21 19:52:32 +00:00
silverpill
e3b51d0752 Validate emoji name before saving 2023-01-21 12:41:37 +00:00
silverpill
99d45ee048 Create custom type for emoji images 2023-01-20 22:11:01 +00:00
silverpill
6c6eb731f9 Use usize type for file sizes 2023-01-20 01:00:15 +00:00
silverpill
c26fc9235d Group imports in some modules 2023-01-19 22:00:04 +00:00
silverpill
eb825bca04 Add fallback route for well-known paths 2023-01-18 18:25:40 +00:00
silverpill
2dda00e36c Fix .well-known paths returning 400 Bad Request errors 2023-01-18 17:47:23 +00:00
silverpill
441264f34c Allow emojis with image/gif media type 2023-01-18 16:45:51 +00:00
silverpill
6d6a41d3e5 Print HTTP socket address when starting HTTP server 2023-01-18 16:28:52 +00:00
silverpill
52112996c5 Try to fix federation with GNU Social 2023-01-18 13:26:04 +00:00
silverpill
6af5b8c24d Ignore Like() activity if local post doesn't exist 2023-01-18 01:14:21 +00:00
silverpill
01f56d9ef7 Use re-exported tokio_postgres::GenericClient trait 2023-01-18 01:01:45 +00:00
silverpill
0e68ea263c Increase max emoji size to 250 kB 2023-01-17 20:47:34 +00:00
silverpill
fcb6554ebb Don't download HTML pages attached by GNU Social 2023-01-17 19:16:46 +00:00
silverpill
10c38400e4 Accept actor objects where value of "attachment" property is not an array 2023-01-17 18:04:16 +00:00
silverpill
6ba8434f40 Add delete-emoji command 2023-01-17 16:47:13 +00:00
silverpill
578629f8bd Add emoji array to Status object 2023-01-17 16:47:13 +00:00
silverpill
56e75895bd Download custom emojis contained in remote posts 2023-01-17 16:47:09 +00:00
silverpill
7b8a56dd8f Support "Public" audience identifier 2023-01-17 00:51:35 +00:00
silverpill
5064afd766 Change max actor image size to 5 MB 2023-01-16 20:34:24 +00:00
silverpill
5809cffa71 Prevent delete-extraneous-posts command from deleting post if there's a recent reply or repost 2023-01-16 13:01:56 +00:00
silverpill
73145a9af6 Add test for find_extraneous_posts() 2023-01-16 12:46:00 +00:00
silverpill
3ed610969e Add new types to supported media types list 2023-01-15 02:30:00 +00:00
silverpill
4d29c83365 Validate emoji tags 2023-01-15 02:14:02 +00:00
silverpill
143879caf9 Ignore deserialization errors when parsing object tags 2023-01-15 02:07:52 +00:00
silverpill
a22ae40d8e Create SimpleTag and LinkTag types 2023-01-15 01:50:44 +00:00
silverpill
41fdb8abb0 Rename activitypub::activity module to activitypub::types 2023-01-14 23:31:38 +00:00
silverpill
72637fe80c Add mediaType property to images in actor object 2023-01-14 19:39:19 +00:00
silverpill
53138ea1c7 Don't fetch HTML pages attached by GNU Social 2023-01-14 19:38:28 +00:00
silverpill
7c07cd79bc Use "mediaType" property value to determine file extension when saving downloaded media 2023-01-14 02:10:06 +00:00
silverpill
85dbb6f392 Save downloaded media as "unknown" if its media type is not supported 2023-01-14 02:08:28 +00:00
silverpill
51cb72d142 Add test for get_note_author_id 2023-01-13 01:31:45 +00:00
silverpill
5c0672884a Log actor tags at debug level 2023-01-13 01:31:45 +00:00
silverpill
cbc78f9532 Support "as:Public" audience identifier 2023-01-13 01:31:45 +00:00
silverpill
5c2685c785 Remove empty module 2023-01-13 01:31:45 +00:00
silverpill
143e6c2417 Accept webfinger requests where resource is actor ID 2023-01-13 01:31:45 +00:00
silverpill
48de6218eb Add webfinger test 2023-01-13 01:31:45 +00:00
silverpill
6d4a6806f4 Add Monero payout address validation 2023-01-13 01:31:45 +00:00
silverpill
56df3d82a0 Add /api/v1/settings/import_follows API endpoint 2023-01-13 01:31:41 +00:00
silverpill
7218864563 Don't stop activity processing on invalid local mentions 2023-01-11 21:55:40 +00:00
silverpill
2385601e12 Create get_or_import_profile_by_actor_address helper function 2023-01-11 21:55:35 +00:00
silverpill
0ede2093c5 Ensure get_profile_by_remote_actor_id returns profile with actor data 2023-01-11 21:44:42 +00:00
silverpill
22cf00fd98 Propagate database errors returned by importer in search_profiles_or_import() 2023-01-11 21:26:53 +00:00
silverpill
7247441693 Don't ignore Delete(Person) verification errors if database error subtype is not NotFound 2023-01-11 21:26:53 +00:00
silverpill
4c97246e3f Validate uploaded follower lists 2023-01-11 21:26:53 +00:00
silverpill
1511b5f22b Make ACTOR_ADDRESS_RE more strict 2023-01-11 21:26:52 +00:00
silverpill
af332283ed Move ActorAddress type to webfinger::types module 2023-01-11 21:26:52 +00:00
silverpill
c953d66c95 Return validation error on attempt to move followers from local actor 2023-01-11 21:26:52 +00:00
silverpill
5fec0c187d Sign Move() activity with server key 2023-01-11 21:26:48 +00:00
silverpill
8d41a94b94 Rename /api/v1/accounts/move_followers to /api/v1/settings/move_followers 2023-01-09 22:10:04 +00:00
silverpill
228299c5b7 Remove prepare_signed_update_person() function 2023-01-09 16:22:47 +00:00
silverpill
94d99e81c4 Support MitraJcsRsaSignature2022 and MitraJcsEip191Signature2022 signature suites 2023-01-07 23:06:23 +00:00
silverpill
65496e5260 Write values of actor tags to log 2023-01-07 20:47:42 +00:00
silverpill
44ce9a73a2 Save media types of uploaded avatar and banner images 2023-01-07 16:05:15 +00:00
silverpill
682cf09835 Store avatar and banner metadata as JSON objects 2023-01-07 12:22:33 +00:00
silverpill
65072ca3c5 Rename Image type to ActorImage 2023-01-07 12:08:15 +00:00
silverpill
6c850b0197 Move fetch_actor_images to actors::helpers module 2023-01-07 12:07:53 +00:00
silverpill
f35e8d806f Refactor AccountUpdateData.into_profile_data() method 2023-01-07 13:18:58 +04:00
silverpill
1663d22b19 Add "configuration" object to response of /api/v1/instance endpoint 2023-01-06 17:10:48 +00:00
silverpill
fe395480eb Set limit on number of media files that can be attached to post 2023-01-06 16:55:38 +00:00
silverpill
7a4be5dd5a Remove save_validated_b64_file() function 2023-01-06 16:10:26 +00:00
silverpill
7539533b69 Remove ability to upload non-images using /api/v1/media endpoint 2023-01-06 16:05:07 +00:00
silverpill
68e464c813 Don't sniff media type in save_file() 2023-01-06 15:41:09 +00:00
silverpill
5b3aa2a24b Fix federation with GNU Social 2023-01-05 19:55:17 +00:00
silverpill
5c9aa0f148 Always put outgoing activities in a queue 2023-01-04 19:36:57 +00:00
silverpill
30857868a0 Write tag value to log if tag type is Emoji 2023-01-04 17:40:17 +00:00
silverpill
498be66d8b Change actor status to "unreachable" if delivery to inbox fails 2023-01-01 21:48:23 +00:00
silverpill
bd158b0a1f Use background job to deliver Create(), Announce() and Like() activities 2023-01-01 20:25:20 +00:00
silverpill
534812efa2 Implement activity delivery queue 2023-01-01 19:45:41 +00:00
silverpill
b392d9164b Keep actor IDs when constructing OutgoingActivity 2023-01-01 19:44:50 +00:00
silverpill
1d234bd679 Stop generating reachability report after delivery 2023-01-01 19:40:43 +00:00
silverpill
b4f68aaec8 Rename IncomingActivity type 2022-12-31 13:28:25 +00:00
silverpill
0ecf682984 Move activity queue helpers to activitypub::queues module 2022-12-31 00:07:10 +00:00
silverpill
471442a22a Set limit on a number of requests in import_post 2022-12-29 17:32:38 +00:00
silverpill
7ccd29abf2 Add /api/v1/accounts/lookup Mastodon API endpoint 2022-12-28 00:53:58 +00:00
silverpill
de9bc7f35e Rewrite mention_to_address and parse_acct_uri, remove unnecessary regexp 2022-12-28 00:18:45 +00:00
silverpill
e7b318c761 Make post and profile page redirections work in Mastodon 2022-12-27 20:29:44 +00:00
silverpill
7494d62858 Make post/profile page redirection work when web client service is enabled 2022-12-24 17:59:40 +00:00
silverpill
dea6bcad2a Serve web client if configuration option is present 2022-12-24 17:20:16 +00:00
silverpill
b14338d5f0 Move frontend module to web_client::urls 2022-12-24 17:09:44 +00:00
silverpill
209f520d28 Don't treat SVG files as images 2022-12-22 21:42:14 +00:00
silverpill
7b69dc9219 Use InstanceInfo.description field for HTML content
Also added description_source field for storing Markdown source.
2022-12-22 20:47:19 +00:00
silverpill
bf92cebe5c Write activity ID to log if repost already exists in database 2022-12-21 19:21:21 +00:00
silverpill
c4ad98126a Use media type hint when processing uploaded media attachment 2022-12-21 18:44:48 +00:00
silverpill
81c0f5e2bd Stop accepting pre-rendered bio/fields 2022-12-21 13:38:29 +00:00
silverpill
a23a555a05 Add API method for generating post previews
https://codeberg.org/silverpill/mitra/issues/12
2022-12-20 22:47:52 +00:00
silverpill
f7d9173cce Create parse_microsyntaxes() helper 2022-12-20 15:38:07 +00:00
silverpill
748521b5ce Refactor create_view() 2022-12-20 00:59:57 +00:00
silverpill
20e965a655 Remove PostCreateData.clean() 2022-12-20 00:59:57 +00:00
silverpill
2232bf814c Limit the number of database queries in find_linked_posts() 2022-12-20 00:59:57 +00:00
silverpill
04e74a6e05 Ignore object link if referenced post doesn't exist
Made it behave similarly to mentions.
2022-12-20 00:59:57 +00:00
silverpill
f2df270a82 Remove duplicate inboxes when constructing OutgoingActivity 2022-12-20 00:59:57 +00:00
silverpill
4d31b9f9f9 Reject activities from blocked instances before verifying signature 2022-12-20 00:59:57 +00:00
silverpill
a2f7140164 Fix rendering of mentions in bio 2022-12-20 00:57:45 +00:00
silverpill
ee7a61833d Render markdown contained in bio and profile metadata values 2022-12-18 21:25:25 +00:00
silverpill
43a70fb93f Drop support for links property in status data 2022-12-18 17:52:46 +00:00
silverpill
0465aaf0c7 Don't auto-mention author of a linked post 2022-12-18 17:52:46 +00:00
silverpill
9872e40399 Fix clippy warnings 2022-12-18 17:52:40 +00:00
silverpill
2b8063990a Ignore mentions and hashtags inside code blocks 2022-12-18 00:38:29 +00:00
silverpill
67b1729621 Add comment about HTML headings and Pleroma 2022-12-17 23:44:00 +00:00
silverpill
d0b826d1c0 Update chrono and remove time v0.1.44 from dependencies 2022-12-15 21:46:12 +00:00
silverpill
83193beabd Update monero-rpc to v0.3.2 2022-12-15 21:46:12 +00:00
silverpill
d3bad8d38d Use HashMap::from in scheduler module 2022-12-15 19:54:55 +00:00
silverpill
533cd81aa6 Switch to rust edition 2021 2022-12-15 19:54:51 +00:00
silverpill
8e08195b44 Increase max number of allowed extra fields for remote actors to 100 2022-12-14 16:46:30 +00:00
silverpill
a14c719d25 Ignore Announce(Dislike) activities 2022-12-14 16:34:30 +00:00
silverpill
68f7b046a1 Support manuallyApprovesFollowers property on actor objects 2022-12-14 09:34:45 +00:00
silverpill
53d9b2efa8 Keep posts that contain links to local posts when running delete-extraneous-posts 2022-12-14 09:34:45 +00:00
silverpill
f2575a0a79 Add test for delete_post() 2022-12-14 09:34:45 +00:00
silverpill
d2e2b684e3 Refactor deliver_activity_worker() and prepare for queue serialization 2022-12-14 09:34:40 +00:00
silverpill
fcab5b000a Ignore Announce() activity if repost already exists but with a different object ID 2022-12-13 19:42:57 +00:00
silverpill
1b588a86e0 Handle non-nested Undo(Follow) activities 2022-12-13 01:12:42 +00:00
silverpill
f2037c9516 Save activity ID when processing remote follow request 2022-12-13 00:54:38 +00:00
silverpill
b0f9b3537e Add activity_id column to follow_request table 2022-12-13 00:13:55 +00:00
silverpill
8c14b18d5b Extract integrity proof before fetching actor 2022-12-12 22:54:49 +00:00
silverpill
a85eaabf2f Process Announce() and Update() activities in background jobs 2022-12-12 22:54:43 +00:00
silverpill
50b8ad9de4 Create type for deserializing Undo() activities and remove Activity type 2022-12-12 21:15:08 +00:00
silverpill
bb033e11df Create type for deserializing Delete() activities 2022-12-12 21:04:18 +00:00
silverpill
73e0b10a10 Create types for deserializing Add() and Remove() activities 2022-12-12 20:58:23 +00:00
silverpill
f50609e4e5 Create type for deserializing Update(Person) activities 2022-12-12 20:58:23 +00:00
silverpill
72eabce15b Create types for deserializing Follow(), Accept() and Reject() activities 2022-12-12 20:58:20 +00:00
silverpill
1efbf5a3fb Process Create() activities in background jobs 2022-12-12 15:29:40 +00:00
silverpill
2bf16b260e Add handle_activity() function 2022-12-12 00:31:29 +00:00
silverpill
c28585ef92 Implement job queue 2022-12-12 00:00:45 +00:00
silverpill
e7d9733f96 Move scheduler to job_queue module 2022-12-11 21:06:44 +00:00
silverpill
7498fc9dba Move create_remote_profile() and update_remote_profile() to actors::helpers module 2022-12-11 14:57:57 +00:00
silverpill
5307a28111 Create type for deserializing Like() activities 2022-12-10 20:51:21 +00:00
silverpill
212db48d75 Add find_aliases() helper function 2022-12-10 20:51:16 +00:00
silverpill
2714378f22 Don't auto-mention author of a linked post 2022-12-10 19:01:11 +00:00
silverpill
64dbd8ff26 Accept attachments with type Video
Video attachments are used in PixelFed.
2022-12-10 19:01:11 +00:00
silverpill
cc728afb7d Remove unused fields from Object and Activity types 2022-12-10 19:01:11 +00:00
silverpill
f21f72b96e Create type for deserializing Move() activities 2022-12-10 19:01:04 +00:00