Commit graph

292 commits

Author SHA1 Message Date
762b85b27e
Reorganize federation tests (#2092)
* Reorganize apub protocol tests

* Reorder apub protocol struct members to clarify mandatory/optional fields
2022-02-17 22:04:01 +00:00
e094989a4c
Add logging to debug federation issues (ref #2096) (#2099) 2022-02-17 18:48:45 +00:00
788924d7ff
Merge different delete activities for better compatibility (fixes #2066) (#2073) 2022-02-14 10:14:24 -05:00
dd865c5af5
Implement instance actor (#1798)
* Implement instance actor

* wip: make site bans federate

* finish implementation and unit tests for federated bans

* start adding api tests

* fix api test

* remve site from GetCommunityResponse

* only federate site bans originating from user's home instance

* dont expose site.private_key in api
2022-02-07 19:23:12 +00:00
545fe8d0dd
Add federation tests for Friendica, improve parsing of source field (fixes #2057) (#2070) 2022-01-28 16:47:34 -05:00
4a23ee4d8b
Dont make webfinger request when viewing community/user profile (fixes #1896) (#2049) 2022-01-27 16:39:22 +00:00
f23fed70bc
Add tombstone tests, better test errors (#2046) 2022-01-20 14:13:29 +00:00
vpzomtrrfrt
272dc3e7a6
Accept single object as to for arrays too (#2048) 2022-01-20 14:12:45 +00:00
eea3308906
Add tests for lotide federation, make lotide groups fetchable (#2035)
* Add tests for lotide federation, make lotide groups fetchable

* Accept posts using Note type (and better error messages for tests)
2022-01-17 09:40:47 -05:00
Dessalines
e65c45f152
Adding temporary bans. Fixes #1423 (#1999)
* Adding temporary bans. Fixes #1423

* Adding ban_expires to person

* Fix clippy

* Removing ban_expires from federated fields.

* Trying to add expires to blockcommunity apub.
2022-01-08 12:37:07 +00:00
Rob Ede
1943bcd7f5
Prevent panic on InboxRequestGuard 2021-12-30 18:41:35 +00:00
Rob Ede
f6c13cf313
Updated actix-web dependency to 4.0.0-beta.18 2021-12-30 18:37:59 +00:00
Dessalines
1410c5659c
Upgrading deps (#1995) 2021-12-14 13:30:37 +00:00
c6ac606f60
Test pleroma follow (#1988)
* Add test case for Pleroma follow activity (ref #1984)

* Use WithContext in apub tests where possible
2021-12-11 21:39:18 -05:00
5b3d707d8f Use from_message for static error string 2021-12-07 17:17:19 -06:00
97ebf2f6f3 Consolidate reqwest clients, use reqwest-middleware for tracing 2021-12-06 16:54:34 -06:00
35cbae61bc
Don't drop error context when adding a message to errors (#1958)
* Respond directly with LemmyError

Instrument Perform implementations for more precise traces
Use ApiError to format JSON errors when messages are present
Keep SpanTrace output in LemmyError Display impl

* Hide SpanTrace debug output from LemmyError

* Don't log when entering spans, only when leaving

* Update actix-web

* Update actix-rt

* Add newline after error info in LemmyError Display impl

* Propogate span information to blocking operations

* Instrument apub functions

* Use skip_all for more instrument attributes, don't skip 'self' in some api actions

* Make message a static string

* Send proper JSON over websocket

* Add 'message' to LemmyError display if present

* Use a quieter root span builder, don't pretty-print logs

* Keep passwords and emails out of logs

* Re-enable logging Login

* Instrument feeds

* Emit our own errors

* Move error log after status code recording

* Make Sensitive generic over the inner type

* Remove line that logged secrets
2021-12-06 09:54:47 -05:00
Dessalines
040770d7ba
Fix retry infinite loops. Fixes #1964 (#1967)
* Fix retry infinite loops. Fixes #1964

* Moving retry_limit to settings
2021-12-05 10:03:13 -05:00
Colin Reeder
e2baed9a6d
Add lotide activities to tests 2021-12-02 22:44:52 -07:00
Colin Reeder
a91c0c8feb
Allow single item for to, cc, and @context 2021-11-26 21:55:33 -07:00
27a687bcd0 Dont send email notifications for edited comments (fixes #1925) 2021-11-24 22:29:29 +01:00
1579ee566f
background-jobs 0.11 (#1943) 2021-11-23 12:20:01 +00:00
3fea5645f8
Add tracing (#1942) 2021-11-23 12:16:47 +00:00
Dessalines
3e062a9959
Merge pull request #1938 from LemmyNet/once_cell
Use once_cell instead of lazy_static
2021-11-22 14:27:08 -05:00
e88106cef4 Use once_cell instead of lazy_static 2021-11-22 19:58:31 +01:00
Dessalines
3d08e6c1fc
Adding unique constraint for activity ap_id. Fixes #1878 (#1935)
* Adding unique constraint for activity ap_id. Fixes #1878

* Removing is_activity_already_known
2021-11-22 18:57:03 +00:00
05d43150bc Making public key required. Fixes #1934 2021-11-22 10:10:18 -05:00
afccd5cf69 Replace activitystreams crate with activitystreams-kinds 2021-11-22 14:28:57 +01:00
3e4fe89a45 Fix build error in #1914 2021-11-19 18:05:23 +01:00
Dessalines
6d35508f08
Merge pull request #1914 from LemmyNet/dont-announce-note
Dont announce comments, edited posts to Pleroma/Mastodon followers
2021-11-19 11:48:47 -05:00
Dessalines
712dabd16b
Merge pull request #1918 from LemmyNet/fix-smithereen-webfinger
Fix Smithereen webfinger, remove duplicate webfinger impl (fixes #1916)
2021-11-18 14:47:34 -05:00
da89ea22fb Fix Smithereen webfinger, remove duplicate webfinger impl (fixes #1916) 2021-11-18 19:28:53 +01:00
aeb34199f5 Dont announce comments, edited posts to Pleroma/Mastodon followers 2021-11-18 18:41:43 +01:00
a2707e1c56 Community outbox should only contain activities sent by community (fixes #1916) 2021-11-18 18:31:50 +01:00
db631005d3 Fix error due to same activity being inserted in database twice 2021-11-16 19:13:05 +01:00
3249060f67 Remove to field from follow activities 2021-11-16 19:13:05 +01:00
20cddf5e81 Support mastodon deletes 2021-11-16 18:07:47 +01:00
7f4a773b88 Create and Note always need to tag parent creator, for mastodon notifications 2021-11-16 18:07:47 +01:00
c1f1b8aa0f Activities in community should also be sent to actors in cc 2021-11-16 18:07:45 +01:00
579ca37ddf Make webfinger standard compliant 2021-11-16 18:03:09 +01:00
23641fcd06 Use serde_json::to_value 2021-11-15 21:11:44 -05:00
Dessalines
09cd32034b
Fixing activity serialization. Fixes #1900 (#1901) 2021-11-15 20:26:48 +00:00
1b9414f292
More federation compat (#1894)
* Make HTTP signatures compatible with Pleroma

* Send Announce/Page, Announce/Note for Pleroma compatibility

* remove unused code
2021-11-11 14:49:15 -05:00
Dessalines
8d4c4fdf6c
Adding clippy:unwrap to husky. Fixes #1892 (#1893) 2021-11-11 12:18:08 +00:00
9a1fe154db Remove header guard for activitypub routes 2021-11-10 15:08:33 +01:00
Dessalines
76220a4523
Fixing clippy lints. (#1885)
* Fixing clippy lints.

* Revert object id display

* Trying to fix clippy again
2021-11-09 18:16:37 +00:00
5319046dc7 Add federation test cases for Smithereen and Mastodon 2021-11-09 17:16:58 +01:00
c21c142a9a Include apub context from file, so that it can be embedded in docs 2021-11-08 16:04:02 +01:00
252d87d332 Fix clippy error 2021-11-08 13:16:14 +01:00
888e683856 For verify_is_public() we also need to check cc field 2021-11-06 18:44:34 +01:00
a5a674a270 Add method ApubObject.verify() 2021-11-06 18:35:14 +01:00
02ce7bdc7d Remove unused ActorType methods 2021-11-06 15:01:00 +01:00
8ea21c39b7 Reduce stack memory usage in apub code
- use our own, smaller Endpoints struct
- wrap ObjectId.url in Box
- adjust usage of Box in different places
2021-11-06 14:53:39 +01:00
c725514841 Change to_apub and from_apub to take by value and avoid cloning 2021-11-06 14:47:58 +01:00
2edf8ba157 Move ObjectId to library 2021-11-05 21:37:46 +01:00
bd3352423a Remove ActivityFields trait, deserialize into another struct instead 2021-11-05 21:14:19 +01:00
969a7f2d1b Refactoring apub code 2021-11-05 21:12:10 +01:00
Dessalines
a83113935d
Check if post or comment are deleted first. Fixes #1864 (#1867)
* Check if post or comment are deleted first. Fixes #1864

* Refactoring delete apub.

* Revert "Refactoring delete apub."

This reverts commit ba2c3d06cfb870efe792f4b2541036265b425156.
2021-11-03 17:47:24 +00:00
41f7bcc0d2 Correctly use and document check_is_apub_id_valid() param use_strict_allowlist 2021-11-02 21:39:06 +01:00
b396344eae Merge two functions into one 2021-11-02 21:39:06 +01:00
1c6f74cad5 Convert note.content and chat_message.content to html (fixes #1871) 2021-11-02 21:39:02 +01:00
0bde2d595e Add tests for parsing activities and collections 2021-11-02 12:44:51 +01:00
aaaf039779 Move apub test files into tree structure 2021-10-29 16:54:19 +02:00
03d8ac75ef Move activity structs to protocol folder 2021-10-29 12:50:32 +02:00
5ff044346f Move object and collection structs to protocol folder 2021-10-29 12:50:32 +02:00
358ef99ea2 Rewrite community followers and user outbox to use our own structs 2021-10-29 12:50:32 +02:00
d89156810d Move @context out of object/activity definitions 2021-10-29 12:50:32 +02:00
2d04ff93f5 Change activity.cc to Vec<Url> in public activities 2021-10-29 12:50:32 +02:00
271785b7fb When receiving activity, dont read community from cc (for pleroma compat and better verification) 2021-10-29 12:50:30 +02:00
74523fb534 Make Note.context optional for pleroma compat (hack) 2021-10-29 12:45:54 +02:00
03b8ae7215 Activity.to should always be a vec (and unspecified size for public activities) 2021-10-29 12:45:54 +02:00
614490d29b Fix problem that prevented viewing of pleroma user profiles 2021-10-29 12:45:53 +02:00
0af047dd83 Rewrite community moderators collection 2021-10-29 12:45:53 +02:00
6792e376b4 Rewrite community outbox to use new fetcher 2021-10-29 12:45:53 +02:00
bb085189e0 Merge traits ToApub and FromApub into ApubObject 2021-10-29 12:45:53 +02:00
Dessalines
f1f7c45017
Three instance inbox bug (#1866)
* 3 instance shared inbox bug test

* Fixing shared inbox bug. Fixes #1865

* A few fixes.
2021-10-28 20:46:24 +00:00
61189efe72
Rewrite collections to use new fetcher (#1861)
* Merge traits ToApub and FromApub into ApubObject

* Rewrite community outbox to use new fetcher

* Rewrite community moderators collection

* Rewrite tombstone
2021-10-27 12:03:07 -04:00
149a4e0de8
Breaking apub changes (#1859)
* Remove CommentInReplyToMigration

* Remove compat for RemovePostCommentOrCommunity

* Remove PublicUrlMigration

* Change type of pm to ChatMessage from Pleroma, make pm.to array

* Use person.summary instead of person.content for pleroma compat

* Also change group.content to summary

* Rewrite apub object test json to serve as nice examples

* Also add test case for parsing pleroma private message
2021-10-22 12:21:26 -04:00
dd0ba10b44
Pleroma federation2 (#1855)
* Allow fetching person from Pleroma, including test case (ref #1461)

* Added test case for parsing community from apub json

- fixed a bug with objectid (de)serialization
- fixed a bug with outbox fetching (ref #1582)

* Added apub test for post

* Ignore errors when reading community outbox (fixes #1582)

* Dont fetch community outbox/moderators during tests

* added test for lemmy comment

* Added federation test for pleroma comment

* Added html2md crate to parse comment html from pleroma (fixes #1461)

* some fixes for update_apub_test_files.sh

* Add tests for ToApub, private message, remove update script

* Delete objects from db at the end of each test
2021-10-21 13:25:35 -04:00
1aa0e1997b Major refactor, adding newtypes for apub crate
- this allows moving FromApub/ToApub traits into apub lib
2021-10-20 12:28:09 +02:00
f24999027e Merge crates db_schema and db_queries 2021-10-20 12:28:08 +02:00
d206aad282 Remove DeletableApubObject trait 2021-10-20 12:20:54 +02:00
18badcfdb4
Federate reports (#1830)
* Federate reports

* add federation test cases for reports
2021-10-15 10:37:33 -04:00
Dessalines
2402515fcc
Dont allow posts to deleted / removed communities. Fixes #1827 (#1828)
* Dont allow posts to deleted / removed communities. Fixes #1827

* Fixing couldnt find community error.

* Adding check in createorupdate post and comment.

* make sure post wasn't deleted or removed.

* Adding a post not deleted or removed check to creatorupdatecomment.

* Using pub(crate)
2021-10-14 16:33:19 +00:00
d26255957b
Fix federation of initial post/comment vote (fixes #1824) (#1835) 2021-10-13 10:12:41 -04:00
f4c783cba5
Fix clippy warnings added in nightly (#1833) 2021-10-12 12:46:26 -04:00
b96ce81f89
Move code to apub library (#1795)
* Remove dependency of apub_lib on LemmyContext

* Move ApubObject trait to library

* Reorganize files in apub lib

* Move ActorType, signatures, activity_queue to apub library
2021-10-06 16:20:05 -04:00
Dessalines
9c50cbf431
Adding a user agent. Fixes #1769 (#1800)
* Adding a user agent. Fixes #1769

* Fix client duplicate creation.
2021-09-29 16:05:38 -04:00
Dessalines
5a281445a3
Upgrade deps (#1799)
* Upgrade deps

* Fix web::scope
2021-09-29 14:50:00 -04:00
8708ad1b44 Moving settings and secrets to context. 2021-09-27 11:25:26 +02:00
527eefbe92
Rewrite fetcher (#1792)
* Use new fetcher implementation for post/comment

* rewrite person fetch to use new fetcher

* rewrite community to use new fetcher

* rename new_fetcher to dereference_object_id

* make ObjectId a newtype

* handle deletion in new fetcher

* rewrite apub object search to be generic

* move upsert() method out of ApubObject trait

* simplify ObjectId::new (and fix clippy)
2021-09-25 11:44:52 -04:00
2822f5a126
Change public activities to field to array (#1739) 2021-08-27 21:33:38 -04:00
Dessalines
c23e7cc20d
Fixing ResolveObject API and unit tests (#1713) 2021-08-23 17:25:39 +02:00
251e0d3b82 Move resolving of activitypub objects to separate api endpoint (fixes #1584) 2021-08-20 12:35:50 +02:00
f6f169b4eb
Rewrite remaining activities (#1712)
* Limit type/method visibility in apub code

* Simplify db_queries traits by removing generics

* Simplify delete activity implementation

* Rewrite delete activities

* Implement helper functions for websocket message sending

* When receiving delete reason as empty string, change to none

* Rewrite remaining activities

* Simplify inbox

* Remove struct ActivityCommonFields, derive ActivityFields trait instead

* Community should announce received activities to followers
2021-08-19 17:24:33 -04:00
Dessalines
6af75492a9
Swap out iframely (#1706)
* Replace Iframely. Fixes #1681

* Add post_link_tags to nginx

* Adding post_link_tags route

* Cleaning up post_link_tags

* Changing PostLink to SiteMetadata, adding it to the API.

* Fixing issue when local has no openssl certs.

* Fixing an issue with pictrs errors

* Revert "Fixing issue when local has no openssl certs."

This reverts commit dbf7d1b1ee03846e5ef7b7156e618424f1150e1d.

* Add ca-certs to dockerfile for volume mount.

* Cleaning up fetch_pictrs request

* Changing to fetch_site_data
2021-08-19 14:12:49 +00:00
28d6370c35
Rewrite delete activities (#1699)
* Limit type/method visibility in apub code

* Simplify db_queries traits by removing generics

* Simplify delete activity implementation

* Rewrite delete activities

* Implement helper functions for websocket message sending

* When receiving delete reason as empty string, change to none
2021-08-17 14:04:58 -04:00
353a1fe0a0
Rewrite activitypub following, person, community, pm (#1692)
* Rewrite following activities

* Rewrite person apub

* Rewrite community apub

* Rewrite private message activity sending
2021-08-12 08:48:09 -04:00
b2937223df Migrate comment inReplyTo field to single value (ref #1454) 2021-08-05 13:00:29 +02:00
Dessalines
7b8cbbba85
Simplify config using macros (#1686)
Co-authored-by: Felix Ableitner <me@nutomic.com>
2021-08-04 21:13:51 +00:00
b8d7f00d58
Rewrite voting (#1685)
* Merge like/dislike activity handlers into vote

* Rewrite vote sending code

* Remove old send_create, send_update functions
2021-08-02 16:33:40 -04:00
6b57d716e1 Rewrite private message apub and merge create/update 2021-07-31 22:58:11 +02:00
dc363c8f35 Merge logic for post create and update 2021-07-31 19:26:17 +02:00
3eb46868ff Merge logic for comment create and update 2021-07-31 17:47:08 +02:00
43ad99bbe8 Rewrite apub comment (de)serialization using structs (ref #1657) 2021-07-31 16:57:37 +02:00
433ab1e78b Add docs for MediaType, PublicUrl values 2021-07-30 23:16:33 +02:00
57b6ecaf40 Simplify lemmy_context() function (dont return errors) 2021-07-30 23:16:33 +02:00
ff265c7ebc Rewrite apub post (de)serialization using structs (ref #1657) 2021-07-30 23:16:32 +02:00
Dessalines
7d3b90d711
Fix issue with protocol string in actor id generation (#1668) 2021-07-20 16:55:04 +00:00
Dessalines
5fe7de2bff
Adding shortname fetching for users and communities. Fixes #1662 (#1663) 2021-07-20 04:29:50 +00:00
c1db86925f Merge apub, apub_receive crates (fixes #1621) 2021-07-17 18:20:44 +02:00
c7de1fcf24
Apub inbox rewrite (#1652)
* start to implement apub inbox routing lib

* got something that almost works

* it compiles!

* implemented some more

* move library code to separate crate (most of it)

* convert private message handlers

* convert all comment receivers (except undo comment)

* convert post receiver

* add verify trait

* convert community receivers

* add cc field for all activities which i forgot before

* convert inbox functions, add missing checks

* convert undo like/dislike receivers

* convert undo_delete and undo_remove receivers

* move block/unblock activities

* convert remaining activity receivers

* reimplement http signature verification and other checks

* also use actor type for routing, VerifyActivity and SendActivity traits

* cleanup and restructure apub_receive code

* wip: try to fix activity routing

* implement a (very bad) derive macro for activityhandler

* working activity routing!

* rework pm verify(), fix tests and confirm manually

also remove inbox username check which was broken

* rework following verify(), fix tests and test manually

* fix post/comment create/update, rework voting

* Rewrite remove/delete post/comment, fix tests, test manually

* Rework and fix (un)block user, announce, update post

* some code cleanup

* rework delete/remove activity receivers (still quite messy)

* rewrite, test and fix add/remove mod, update community handlers

* add docs for ActivityHandler derive macro

* dont try to compile macro comments
2021-07-17 12:08:46 -04:00
Dessalines
f54209c451
Running clippy --fix (#1647) 2021-07-05 16:07:26 +00:00
Dessalines
12d50e42b4
Change join.lemmy.ml to join-lemmy.org (#1628) 2021-06-07 21:10:47 +00:00
f8cd6fd445 Making more fields optional in the API.
- Fixes #1569
2021-04-23 02:30:13 -04:00
efee2062dd
Mark accounts as bot nutomic (#1565)
* Mark account as bot. Fixes #1357

* Fix clippy

* Federate bot status using actor `type` field

* fix clippy

Co-authored-by: Dessalines <tyhou13@gmx.com>
2021-04-21 17:41:14 -04:00
Dessalines
9dc5605663
Merge pull request #1588 from LemmyNet/improved-logging
Improved logging
2021-04-21 10:34:47 -04:00
8bb3ba4a16
Add option to disable strict allowlist (fixes #1486) (#1581)
* Add option to disable strict allowlist (fixes #1486)

* adjust docs
2021-04-21 09:36:07 -04:00
78eee7dc9e Improved logging 2021-04-21 14:45:10 +02:00
c572dc0cc6 Remote mods can update/delete/undelete communities 2021-04-13 15:19:17 +02:00
aa79c5131f
Implement federated bans (fixes #1298) (#1553)
* Implement federated bans (fixes #1298)

* mod actions should always be federated to affected user, in addition to followers

* Make Undo/Block work for remote mods

* clippy fix

* fix federation test

* vscodium doesnt auto-save changes...
2021-04-09 11:01:26 -04:00
Dessalines
c3d64f996e
Removing community.creator column. Fixes #1504 (#1541)
* Removing community.creator column. Fixes #1504

* Fixing unit tests.

* Fixing federation tests.
2021-04-08 11:29:08 +00:00
bf7558830f Changing preferred to display name. Fixes #1211 2021-04-01 13:57:45 -04:00
722cdb78ba Split lemmy_apub crate into two parts apub and apub_receive 2021-03-30 22:29:16 +02:00
4c8f2e976e Merge remote-tracking branch 'yerba/split-api-crate' into test_merge_api_crates_reorg 2021-03-29 16:24:50 -04:00
01fc1228d5 Fix API and clippy warnings 2021-03-29 20:55:08 +02:00
249fcc5066 Split api crate into api_structs and api 2021-03-25 20:19:40 +01:00
34bdf4c7c5 Federate Matrix ID (fixes #1438) 2021-03-24 17:56:13 +01:00
3ca2453fc6 Merge branch 'main' into move_matrix_and_admin_to_person 2021-03-24 11:51:34 -04:00
8a10a9079f Merge remote-tracking branch 'yerba/federated-moderation' 2021-03-24 11:48:02 -04:00
c7524d924b Fix federation tests 2021-03-24 16:33:04 +01:00
e4ead96d3a Merge branch 'main' into move_matrix_and_admin_to_person 2021-03-22 10:29:10 -04:00
eb45bf2d0a Moving admin to person table. Fixes #1515 2021-03-22 10:28:00 -04:00
d6bd072ea1 Make federation compatible with Lemmy v0.9.9 2021-03-22 15:08:06 +01:00
a5a0d90349 Address review comments 2021-03-22 13:52:00 +01:00
459b95bc7e Make previous commit compile 2021-03-22 13:11:32 +01:00
Grishka
115b986edc uh 2021-03-21 04:03:53 +03:00
Grishka
c14a505456 Fix JSON-LD contexts 2021-03-21 04:00:32 +03:00
c884510173 Creating default DB forms. Fixes #1511 2021-03-20 16:59:07 -04:00
1745b64ceb Moving matrix_user_id to person table. #1438 2021-03-20 15:21:51 -04:00
4f54108a9c Merge branch 'main' into federated-moderation 2021-03-19 17:11:34 +01:00
9930c7288a Merge branch 'split_user_table' into strictly_type_db_ids 2021-03-18 16:30:42 -04:00
8d9fab0389 Merge branch 'main' into split_user_table 2021-03-18 16:30:29 -04:00
c3efb9f7cf Strictly typing DB id fields. Fixes #1498 2021-03-18 16:25:21 -04:00
4f7dca7c2b Fix three federation test cases 2021-03-18 17:02:15 +01:00
b3a5b4eb82 Refactor activitypub code 2021-03-17 18:12:37 +01:00
71067a8cb5 For FromApub trait, use is_mod_action: bool instead 2021-03-16 18:26:19 +01:00
be00f63fb2 Allow remot moderators to do Remove/Post and Remove/Comment 2021-03-16 18:06:59 +01:00
621355b6ef Insert announced activities into DB for fetching (fixes #1494) 2021-03-15 13:58:54 +01:00
5998c83b2a Only sending private message if its a local user. 2021-03-12 15:18:03 -05:00