Commit graph

1106 commits

Author SHA1 Message Date
silverpill
e247941695 Reorganize handlers and remove unneeded modules 2022-12-09 20:22:48 +00:00
silverpill
e6be1cde2d Refactor handle_undo_follow() function 2022-12-08 22:58:48 +00:00
silverpill
84c93fecf1 Refactor receive_activity() function 2022-12-08 22:11:15 +00:00
silverpill
999dd7e608 Don't fetch actor when verifying JSON signature on Delete(Person) activity 2022-12-08 16:31:26 +00:00
silverpill
cd6968b15a Fetch actor before verifying JSON signature 2022-12-08 16:10:29 +00:00
silverpill
a71c4ccc89 Refactor ActivityPub authentication helpers 2022-12-08 16:09:10 +00:00
silverpill
06e172d9fa Never ignore invalid HTTP signatures 2022-12-08 00:47:18 +00:00
silverpill
d3db42ec9e Rename modules 2022-12-07 21:00:54 +00:00
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
11ed4c1e48 Remove unnecessary as_str() conversions 2022-12-03 21:11:28 +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
4ec5cf0f9b Render instance description to HTML
https://codeberg.org/silverpill/mitra-web/issues/3
2022-12-01 22:04:46 +00:00
silverpill
581e72ce65 Read HTTP signature expiration date from (expires) pseudo-header 2022-11-29 17:33:59 +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
73a7668d18 Allow to connect to monero-wallet-rpc when it runs without --wallet-dir option 2022-11-27 13:04:47 +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
7511832fa0 Rename /signed_update API method to /send_activity 2022-11-26 21:13:37 +00:00
silverpill
a6032386da Use enum to represent activity parameters during the signing process 2022-11-26 20:46:46 +00:00
silverpill
fbcba1b99d Refactor send_signed_update view 2022-11-26 01:00:42 +00:00
silverpill
dd268634ef Move change_password API method to /api/v1/settings/change_password 2022-11-26 00:17:01 +00:00
silverpill
fde8309bb9 Add check-expired-invoice command 2022-11-25 21:04:59 +00:00
silverpill
5ff2d19837 Add expires_at field to Invoice object
Also increase timeout to 3 hours

https://codeberg.org/silverpill/mitra/issues/23
2022-11-25 15:04:46 +00:00
silverpill
2a9794f8f7 Add API methods for exporting followers and follows 2022-11-24 21:58:00 +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
3b092631ca Add signature type to the output of get_json_signature function 2022-11-23 14:56:29 +00:00
silverpill
301ade36a3 Use enum to define identity proof type 2022-11-23 01:04:55 +00:00
silverpill
3f3518001d Implement Display trait for ChainId and DidPkh 2022-11-22 22:41:23 +00:00
silverpill
241351c2bf Allow value of "icon" property to be empty object 2022-11-22 19:00:29 +00:00
silverpill
5712c9099c Allow to search for profile by actor ID 2022-11-22 00:19:46 +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
6a6f151ec0 Verify that Monero transaction exists after sending
https://codeberg.org/silverpill/mitra/issues/21
2022-11-19 22:23:45 +00:00
silverpill
49a55d888f Use multibase encoding for integrity proofs 2022-11-19 15:53:22 +00:00
silverpill
4a5bcba127 Change signature format in minisign integrity proofs 2022-11-19 15:52:20 +00:00
silverpill
a46ceeb575 Use base64 encoding for JcsEip191Signature2022 integrity proofs 2022-11-19 15:52:20 +00:00
silverpill
5974ac8618 Move base64 encoding/decoding out of RSA signing functions 2022-11-19 15:52:16 +00:00
silverpill
bd4a9a0de9 Move multibase encoder and decoder to utils::multibase 2022-11-18 23:05:27 +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
8045b9f543 Add delete-empty-profiles CLI command 2022-11-17 21:46:00 +00:00
silverpill
ec03476b58 Allow password login when token gate is disabled 2022-11-16 17:21:42 +00:00
silverpill
6765674118 Add token gate feature flag to instance info 2022-11-16 15:11:25 +00:00
silverpill
57c5ab3c4e Add API method for changing password 2022-11-15 22:43:49 +00:00
silverpill
9ad6bdf1c9 Revoke all access tokens after password reset 2022-11-15 22:32:10 +00:00
silverpill
445177d9a7 Add API method for revoking access token 2022-11-15 15:45:30 +00:00
silverpill
09cb15297a Ignore Announce(Undo) activities 2022-11-14 18:56:42 +00:00
silverpill
92d96e3745 Abort registration process if profile with a similar name already exists 2022-11-14 17:37:25 +00:00
silverpill
43f99b597a Fix parsing of ordered lists 2022-11-13 21:31:19 +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
9b96ce4700 Add CLI command for password reset 2022-11-11 00:53:23 +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
38bb3e38e9 Expose all identity proofs when building Account object 2022-11-11 00:53:23 +00:00
silverpill
cd93858488 Use canonicalized JSON for identity claims 2022-11-11 00:53:23 +00:00
silverpill
14a123ad7e Implement minisign identity proofs 2022-11-11 00:53:19 +00:00
silverpill
9d86d58274 Add methods for conversions between did:key and Ed25519 key 2022-11-10 17:35:47 +00:00
silverpill
99f7b334d1 Change identity proof API to avoid key-to-DID converion at client side 2022-11-10 13:06:59 +00:00
silverpill
efb51c1be6 Decode multibase value when parsing did:key 2022-11-10 13:06:54 +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
0840197cac Fix clippy warnings 2022-11-06 21:20:14 +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
dec9b1f3a4 Create function for inserting integrity proofs into JSON objects 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
b700a8ac6d Return verified results when searching for DID 2022-11-02 16:06:19 +00:00
silverpill
4193ba94a5 Write warning to log if request signer differs from activity signer 2022-10-31 22:33:14 +00:00
silverpill
67eb654203 Add canonicalize_object function 2022-10-31 20:12:19 +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
1d66f5e864 Add creation date to JSON signature 2022-10-28 13:27:36 +00:00
silverpill
3bbf902b28 Require HTTP signatures to have creation date 2022-10-28 12:56:49 +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
b345cb4a77 Allow GET requests from any origin 2022-10-27 15:48:54 +00:00
silverpill
23dca1b4c5 Allow object links with custom text 2022-10-26 20:32:43 +00:00
silverpill
acad0f260b Perform post content cleaning at the end of validation process 2022-10-25 23:26:42 +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
518fb704c3 Add test for HTTP signature verification 2022-10-24 20:01:58 +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
9d671344e6 Don't use rng when generating private keys in tests 2022-10-23 17:56:32 +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
ec349afc80 Reset repost and reply visibility settings after unfollowing 2022-10-22 16:06:50 +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
01305475c3
Allow object links in replies 2022-10-20 18:07:01 +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
a422b1bf8a Preserve mentions when converting markdown into html 2022-10-16 20:08:31 +00:00
silverpill
f6c3cbc0fa Prepare Delete(Note) before deleting post from database 2022-10-16 00:42:20 +00:00
silverpill
ea62f1fdaf Ignore object links inside code blocks 2022-10-16 00:01:49 +00:00
silverpill
a771e5e4fa Add support for object link microsyntax
Example: [[https://example.com/objects/1]].
2022-10-15 21:52:36 +00:00
silverpill
8d271fe4e3 Replace "quote" property on Status object with array of linked posts 2022-10-15 21:08:03 +00:00
silverpill
1f713d536e Allow to create posts with multiple object links 2022-10-15 21:07:57 +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
b26b2419ed Add support for posts authored in markdown 2022-10-14 16:00:39 +00:00
silverpill
33b04c9bdd Add optional content_type parameter to /api/v1/status data and set default to text/html 2022-10-13 19:19:11 +00:00
silverpill
03ebf75da2 Wrap markdown in remote object content in <p> tag 2022-10-13 16:52:06 +00:00
silverpill
c95e983a3d Remove images from remote posts
To prevent tracking.
2022-10-13 11:01:54 +00:00
silverpill
187e46612d Remove unnecessary line breaks before inline-quote block 2022-10-11 20:02:47 +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
617ca19950 Allow user mentions without hostname 2022-10-08 22:14:42 +00:00
silverpill
5be7802bf1 Allow <p> tag in post content 2022-10-08 19:15:23 +00:00
silverpill
9cff428758 Improve mention and hashtag parsers
Don't rely on whitespace and newlines.
2022-10-07 22:51:05 +00:00
silverpill
da9bd480fb Add linked posts to notifications 2022-10-06 23:44:00 +00:00
silverpill
ea424b97a0 Allow <em> and <strong> tags in post content 2022-10-06 22:50:38 +00:00
silverpill
0548e6e72a Disallow <code> tags in bio 2022-10-06 22:50:38 +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
6fd0c16997 Add instance stats to object returned by /api/v1/instance 2022-10-04 21:18:55 +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
a6c525f35d Add hostname column to actor_profile table and replace acct with generated column 2022-10-04 16:51:22 +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
cde324c07d Show only local profiles in profile directory 2022-10-02 21:23:16 +00:00
silverpill
54c8f241e4 Convert JSON payload deserialization errors into validation errors 2022-10-02 21:23:16 +00:00
silverpill
93ebdfadd4 Restrict module visibility and remove dead code 2022-10-02 21:23:16 +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
5862f49015 Remove Post.quote field and store linked posts in array 2022-10-02 21:23:16 +00:00
silverpill
7cedc909d7 Set max page size to 200 2022-09-29 22:53:18 +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
0ce0cd15c3 Don't show subscribers-only posts if viewer is not mentioned 2022-09-27 22:18:58 +00:00
silverpill
ce28c2e9fb Add totalItems property to followers, following and subscribers collections 2022-09-25 21:11:18 +00:00
silverpill
ed9b724895 Rename daemon_url parameter in monero config to node_url 2022-09-24 20:26:34 +00:00
silverpill
a8dae2a621 Enable hashtag search 2022-09-19 18:39:56 +00:00
silverpill
c488d5b5d4 Log attachment fetching errors 2022-09-19 18:39:56 +00:00
silverpill
dd6317561e Require subscription price to be positive number 2022-09-19 18:39:51 +00:00
silverpill
a1ab21a702 Store requested payment amount for each invoice 2022-09-19 00:50:31 +00:00
silverpill
bc0de60b5c Support searching by !group actor address 2022-09-19 00:50:23 +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
02408ae57a Allow user to change subscription settings 2022-09-15 20:50:31 +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
d0f97a33b3 Write warning to log when signature creation date is not known 2022-09-12 21:02:33 +00:00
silverpill
458ca3fc3d Support (created) and (expires) pseudoheaders in HTTP signatures 2022-09-12 20:23:07 +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
de80bd0b40 Populate "quote" field in reposted posts 2022-09-11 21:17:09 +00:00
silverpill
9f3b95c41d Mention all subscribers when creating subscribers-only post 2022-09-11 14:25:30 +00:00
silverpill
5122fe2b78 Don't forward payment until all outputs are unlocked 2022-09-11 09:37:54 +00:00
silverpill
82ef4e054a Remove unnecessary assertion from create_account view 2022-09-09 10:28:24 +00:00
silverpill
8d78c6f38e Remove unused subscription_page_url property from Account object 2022-09-08 20:35:43 +00:00
silverpill
5b071f050b Rename /api/v1/subscriptions/enable to /api/v1/subscriptions/options 2022-09-08 10:05:34 +00:00
silverpill
596c13c0bb Remove deprecated Subscription API methods 2022-09-08 09:58:57 +00:00
silverpill
78b9fc7878 Create subscription relationship only if subscription is still active
This prevents spurious expiration notifications after withdrawals.
2022-09-08 09:53:32 +00:00
silverpill
79e161c131 Add reset-subscriptions CLI command 2022-09-07 20:23:54 +00:00
silverpill
98564c2573 Improve panic message in case of storage directory UID mismatch 2022-09-07 16:55:45 +00:00
silverpill
714b872a5d Prevent creation of invoices where sender is the same as the recipient 2022-09-07 11:57:25 +00:00
silverpill
86fe717a77 Add API method for checking invoice status 2022-09-07 10:48:40 +00:00
silverpill
383fc13059 Change invoice status to "timeout" after 30 minutes of inactivity 2022-09-06 22:32:32 +00:00
silverpill
b0e79e26a4 Change invoice API to accept sender ID instead of acct 2022-09-06 19:08:50 +00:00
silverpill
44aebf989a Fix monero subscription extension bug 2022-09-06 19:08:50 +00:00
silverpill
982a8e8bc2 Add API method for searching profiles by username or acct 2022-09-06 19:08:50 +00:00
silverpill
6accf8ac2e Add API method for finding subscription by participants 2022-09-06 19:08:50 +00:00
silverpill
05e295744d Add information about payment options to Account object 2022-09-06 18:08:28 +00:00
silverpill
f218936caa Create API method /api/v1/subscriptions/options 2022-09-06 17:54:51 +00:00
silverpill
ed98648756 Truncate inbox response text before logging it 2022-09-04 11:59:07 +00:00
silverpill
d2366589cf Truncate remote profile bio if it's too long 2022-09-04 11:45:56 +00:00
silverpill
0d7325f8f6 Increase max download size 2022-09-01 12:38:39 +00:00
silverpill
26ae1036de Change representation of blockchain config in Instance API response
Allowed multiple blockchain configs.
2022-08-31 21:30:03 +00:00
silverpill
b357b9bfa0 Rename chain_info config parameter to chain_metadata and define its type 2022-08-31 20:42:59 +00:00
silverpill
64fb51e92a Update subscription state after processing invoice 2022-08-31 20:42:59 +00:00
silverpill
4e73bff32e Implement payment forwarding 2022-08-31 20:42:59 +00:00
silverpill
6b60e9a0da Add periodic task for monitoring Monero payments 2022-08-31 20:42:59 +00:00
silverpill
cd09fe0801 Add API method for generating invoices 2022-08-31 20:42:58 +00:00
silverpill
084e0064be Create invoice table 2022-08-31 20:42:58 +00:00
silverpill
423eec0a2c Add MoneroSubscription payment option 2022-08-31 20:42:57 +00:00
silverpill
703cae0a43 Modify create-monero-wallet command to accept wallet name and password args 2022-08-31 20:42:56 +00:00
silverpill
2eb7ec2f64 Add chain ID column to subscription table
Set chain ID to "eip155:31337" for existing entries.
2022-08-31 20:42:56 +00:00
silverpill
2ed8d44001 Add expires_at field to object returned by subscribers API endpoint 2022-08-31 20:42:56 +00:00
silverpill
260e62d51b Allow blockchain configuration to be defined using a list
Multi-chain configurations are still not allowed.
2022-08-31 20:42:55 +00:00
silverpill
cc6d9d7688 Refactor ethereum subscription monitor 2022-08-31 20:42:37 +00:00
silverpill
c5c3911de6 Require chain ID field in payment options of ethereum type 2022-08-29 22:28:34 +00:00
silverpill
690a03946e Use Currency enum to refer to CAIP-2 namespaces instead of chain IDs 2022-08-29 15:12:18 +00:00
silverpill
8df8fd3c8c Add Monero to currencies enum 2022-08-29 12:12:26 +00:00
silverpill
ea4d15da48 Remove default_currency() method from config object
Preparing for multi-currency deployments.
2022-08-28 18:53:32 +00:00
silverpill
b3fb1c612c Rewrite /api/v1/subscriptions/enable handler to support more subscription types 2022-08-26 15:57:35 +00:00
silverpill
daaa0855a6 Use /api/v1/subscriptions prefix for subscription API methods 2022-08-25 19:16:46 +00:00
silverpill
742e731b95 Convert PaymentOption type into enum 2022-08-25 19:16:38 +00:00
silverpill
318d446dbd Add create-monero-wallet CLI command 2022-08-22 20:17:27 +00:00
silverpill
5e97debebb Add "quote" property to Status object and treat first link as a quote 2022-08-22 12:13:40 +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
ee0095ce53 Perform consistency checks on reposts in Post::new() 2022-08-21 18:11:49 +00:00
silverpill
e51f5fa3bb Set limit on the size of remote media files 2022-08-18 22:57:58 +00:00
silverpill
4dc94ed39b Return validation error if upload size exceeds limit 2022-08-18 22:39:53 +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
c546840787 Update actix crate 2022-08-18 18:05:18 +00:00
silverpill
9d501ac7f6 Update chrono and regex crates 2022-08-17 19:09:15 +00:00
silverpill
e2f8408b1e Search for subscription recipient by DID instead of login address 2022-08-15 22:02:11 +00:00
silverpill
5f24af4dbf Allow users of password auth to create identity proofs 2022-08-15 20:16:34 +00:00
silverpill
a80c11b99c Allow users of password auth to use subscriptions 2022-08-15 20:16:03 +00:00
silverpill
596871e6e3 Rewrite wallet address validator to work with non-ethereum addresses 2022-08-15 15:45:21 +00:00
silverpill
7a48563593 Return error if EIP-4361 is used together with password 2022-08-15 11:46:21 +00:00
silverpill
5497f50977 Move CLI subcommands to cli module 2022-08-13 11:54:14 +00:00
silverpill
29402f0113 Remove --dry-run parameter from delete-extraneous-posts command 2022-08-11 23:17:57 +00:00
silverpill
d2444826fc Prefer positional arguments in CLI commands 2022-08-11 23:12:07 +00:00
silverpill
dc7d533c42 Allow blockchain config to have sub-types 2022-08-10 11:57:35 +00:00
silverpill
c4e5438ac2 Parse chain ID into CAIP-2 ChainId type during blockchain config deserialization 2022-08-10 11:14:17 +00:00
silverpill
0e8943a24b Split config module into sub-modules 2022-08-09 22:31:59 +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
1721eb4a88 Add API method for listing incoming subscriptions 2022-08-08 01:13:52 +00:00
silverpill
bdcdb06c51 Add pagination headers to followers/following API responses 2022-08-07 18:27:28 +00:00
silverpill
450e47bcef Fix Access-Control-Expose-Headers header 2022-08-06 22:07:33 +00:00
silverpill
53ace3bf57 Add helper function for creating responses with pagination header 2022-08-06 22:05:48 +00:00
silverpill
acb139b0ee Add API method for searching profiles by DID 2022-08-04 20:23:40 +00:00
silverpill
21df4fa35c Support search by DID 2022-08-04 18:33:17 +00:00
silverpill
46526fd4be Add currency() method to DidPkh type 2022-08-04 15:44:48 +00:00
silverpill
af0563759d Add CAIP-2 chain ID type 2022-08-04 15:38:26 +00:00
silverpill
3c8c0c7163 Move currencies module to utils 2022-08-04 12:34:31 +00:00
silverpill
ce694cb88c Allow brackets around hashtags and mentions 2022-08-04 12:34:30 +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
85d35f9733 Wait for required number of confirmations before processing block 2022-07-28 13:14:12 +00:00
silverpill
c47822ff53 Add tests for SyncState::get_scan_range method 2022-07-28 11:30:32 +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
1061220ee1 Reset subscriptions if update-current-block command is called with --reset-db parameter 2022-07-25 21:39:06 +00:00
silverpill
33a711b91c Attach subscription page link to actor object 2022-07-25 21:39:06 +00:00
silverpill
1554780b35 Add API method for adding subscription as payment option 2022-07-25 21:38:58 +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
3a28219405 Read blockchain sync step and max reorg depth from config 2022-07-17 02:01:15 +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
0f5a2edf7f Send AddPerson() activity when subscription payment is detected 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
6f247ad40d Send notification to sender when subscription expires
Only if sender is local.
2022-07-15 23:53:21 +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
3bfb7dc9eb Add command for deleting orphaned files 2022-07-12 22:54:38 +00:00
silverpill
c9a71e0303 Check storage directory ownership at startup 2022-07-12 22:25:55 +00:00
silverpill
2bbe23cd89 Refactor "refetch-actor" command 2022-07-12 19:42:58 +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
a06f1b4aba Use character count instead of bytes in validate_display_name() 2022-07-09 21:25:15 +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
d658c3e802 Add updated_at column to actor_profile table 2022-07-08 20:02:28 +00:00
silverpill
d63c19a996 Add total numbers of local users and posts to NodeInfo response 2022-07-07 19:26:06 +00:00
silverpill
2a22a0bedd Add exclude_replies query parameter to /accounts/:id/statuses API method 2022-07-07 14:56:01 +00:00
silverpill
94bd5bdbb5 Remove duplicates before creating deletion queue 2022-07-06 22:39:27 +00:00
silverpill
255aca68de Allow hashtags to be followed by comma 2022-07-06 22:17:21 +00:00
silverpill
5fc17effaa Show only public posts in local timeline 2022-07-03 21:24:49 +00:00
silverpill
545dd6d92b Enable contract feature detection
Contracts updated to version 0.5.0.
2022-06-30 12:20:14 +00:00
silverpill
0f74175b29 Refactor scheduler module 2022-06-29 21:08:57 +00:00
silverpill
6615f372e2 Refactor load_abi to return ethabi::Contract type 2022-06-29 14:35:13 +00:00
silverpill
f8aaeb01a7 Update contracts to v0.4.0
configureSubscription() method signature has changed.
2022-06-28 18:28:40 +00:00
silverpill
2f532307a1 Switch to incremental blockchain synchronization 2022-06-25 11:59:03 +00:00
silverpill
b618c5b31f Use shared ContractSet object when verifing user during registration
Server will not start if blockchain configuration is invalid.
2022-06-23 22:03:51 +00:00
silverpill
6b06d6d18e Add mapping with additional blockchain info to instance API response 2022-06-22 21:38:04 +00:00
silverpill
6172d309bc Add task name to scheduler error messages 2022-06-21 17:41:16 +00:00
silverpill
d8972a9286 Add CLI command for updating current block 2022-06-21 15:28:19 +00:00
silverpill
3bad313d01 Run subscription checker task every 5 minutes 2022-06-20 21:04:30 +00:00
silverpill
f312fdff9e Show posts that mention user in home timeline
Even if visibility is not "direct".
2022-06-15 13:10:05 +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
0148343655 Use initial block number as lower bound when making log query 2022-06-14 21:31:42 +00:00
silverpill
91309e1a7b Don't return error when processing activity from blocked instance 2022-06-14 19:47:36 +00:00
silverpill
29ace97b0e Refactor process_nft_events function 2022-06-14 18:57:00 +00:00
silverpill
30f7f5d996 Initialize contract set in main() 2022-06-14 10:46:15 +00:00
silverpill
f700d79754 Ignore subscription event if sender changes their ethereum address in profile 2022-06-05 19:42:48 +00:00
silverpill
a526b507f3 Always log server errors 2022-06-02 20:04:36 +00:00
silverpill
669c581862 Send Delete(Person) activity when deleting local user 2022-06-02 16:28:40 +00:00
silverpill
90d0a6870e Refactor unfollow_account view 2022-06-02 03:28:58 +00:00
silverpill
1c098cb6b2 Add test for remote follow sequence 2022-06-02 03:28:58 +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
b95d409010 Add blockchain ID to instance API response 2022-05-28 22:43:38 +00:00
silverpill
4ffec71c24 Send notification when subscription payment is received 2022-05-28 19:00:24 +00:00
silverpill
c2c3ff1544 Verify chain ID on start 2022-05-28 00:04:21 +00:00
silverpill
14cb90224f Do not return error if activity type is not supported 2022-05-27 23:08:41 +00:00
silverpill
28fad8986c Limit number of profiles in search results 2022-05-27 22:11:16 +00:00
silverpill
f9689807e3 Expose login address via API only if it's verified 2022-05-27 21:58:18 +00:00
silverpill
b9722afebe Require verified wallet address when minting NFT 2022-05-27 21:58:13 +00:00
silverpill
a3716079d7 Remove duplicates when searching profiles by wallet address 2022-05-27 21:39:52 +00:00
silverpill
80880555bf Do not expose login wallet address via search
Login address is considered private unless verified.
2022-05-26 11:22:10 +00:00
silverpill
dc8a7bed2e Require verified wallet address when setting up subscription 2022-05-26 10:42:04 +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
5e7d3ab434 Don't expose wallet address in /api/v1/accounts/{account_id} response 2022-05-19 23:01:12 +00:00
silverpill
0a988b5439 Allow hashtags to be followed by colon or question mark 2022-05-16 17:46:40 +00:00
silverpill
9a20c7891f Fix bug in create_activity_like() 2022-05-13 18:18:09 +00:00
silverpill
ee8b6c497d Replace actor ID in Mastodon API mentions with profile URL 2022-05-12 21:15:21 +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
e2d2e2e5de Save post CID and attachment CID in a single database transaction 2022-05-12 14:53:43 +00:00
silverpill
6c675c11c4 Add default configuration file to debian package 2022-05-12 14:53:37 +00:00
silverpill
dad9640685 Set default EIP-4361 login message 2022-05-11 21:33:42 +00:00
silverpill
dc34c980f6 Handle Update(Note) activities 2022-05-11 13:31:08 +00:00
silverpill
50699b5ab5 Don't use update_post() to set ipfs_cid, token_id and token_tx_id fields 2022-05-10 22:18:43 +00:00
silverpill
b7849c8264 Check TX ID when saving token ID to database 2022-05-10 22:12:54 +00:00