Commit graph

867 commits

Author SHA1 Message Date
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