Commit graph

706 commits

Author SHA1 Message Date
strawberry 56e4166ee8 never let clippy fail, use CARGO_PKG_NAME, allow issues on gh, simplify regex a tad
Signed-off-by: strawberry <strawberry@puppygock.gay>
2023-11-29 23:19:53 -05:00
strawberry 87d6a17f0a fix all the warnings!!!! (0 clippy and rustc warnings now)
too many changes to list, codebase significantly better than it was a few weeks ago though

Signed-off-by: strawberry <june@girlboss.ceo>
2023-11-29 21:36:02 -05:00
strawberry 54a3f47851 fix every clippy warning possible, remove io_uring as default feature
this project's codebase is so horrendous, im shocked that no one has ran
clippy at all. it had ~200 total lint warnings, some with performance
issues and unsoundness, and the rest just very ugly codebase. i have sat
down and fixed as many of these as possible and i am exhausted.
i haven't fixed some extremely complex ones, but i brought it down from
~200 to ~30.

i have also removed io_uring as a default feature due to it falling
under the same category as linux eBPF: major kernel attack surface for
minimal performance gains. this also makes it impossible to cross-compile
from macOS to Linux because io_uring does not exist in Darwin land.
there are far better ways to achieve better performance than io_uring on
the codebase level.

Signed-off-by: strawberry <june@girlboss.ceo>
2023-11-27 00:50:55 -05:00
strawberry 2dc1c1fdcb fix clippy performance and sus warnings, remove 1 unwrap, forgot to increment db version
Signed-off-by: strawberry <strawberry@pupbrain.dev>
2023-11-26 22:14:43 -05:00
strawberry b4e2f7ca37 log error for invalid room member events in db
Signed-off-by: strawberry <strawberry@pupbrain.dev>
2023-11-25 20:42:38 -05:00
strawberry 6958c720d0 make pdu stuff async, remove unnecessary db version check
Signed-off-by: strawberry <strawberry@pupbrain.dev>
2023-11-25 18:29:38 -05:00
strawberry 0c4604b482 bump ruma, add wrong room keys error code, tiny logging change
can't update ruma to very latest commit because of the weird JsOption thing for syncv4 that i can't wrap my head around how to use, not important anyways

Signed-off-by: strawberry <strawberry@pupbrain.dev>
2023-11-25 12:42:05 -05:00
strawberry e9cd8caaed add feature flagged support for migrating from base64 file name keys to sha256 ones
core implementation and tests from https://gitlab.com/famedly/conduit/-/merge_requests/467
feature flag, base64 encode update, and tweaks were me

Signed-off-by: strawberry <strawberry@pupbrain.dev>
2023-11-25 11:38:28 -05:00
Val Lorentz d092820699 Fetch server keys concurrently
This speeds up handling of /_matrix/federation/v1/send/:transaction_id
when more than one event contains unknown keys.

In particular, when receiving multiple PDUs with dead servers in their
auth chain, timeouts of each server accumulate and can make handling of
incoming requests take several minutes, to the point the client closes
the connection (eg. matrix.org has a 2 minute timeout), causing new
events to be dropped eventually.
2023-11-25 11:38:28 -05:00
girlbossceo 16c3a38761 remove another unnecessary unwrap/expect
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-28 23:43:08 -04:00
girlbossceo 6931f4b778 reduce more unnecessary logging and improve a tad
dead servers in rooms are not relevant to log, keep it as info/debug

Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-28 23:40:44 -04:00
girlbossceo 64084fb2d0 use a proper function for this instead of checking 200
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-28 22:36:47 -04:00
girlbossceo 03af588efb don't unwrap reqwest requests for appservice and pushers too
this is another denial of service vector, but less severe than the federation one.

Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-28 22:34:09 -04:00
girlbossceo 95187419f9 do not expect/unwrap requests
causes tokio runtime worker to panic as we attempt to convert an HTTP
Request from ruma (try_into_http_request) into a reqwest Request so the
reqwest http client on the server can execute said request. error
message is not ideal ("invalid port number") but core issue is fixed.

Co-authored-by: infamous <ehuff007@gmail.com>
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-28 09:05:23 -04:00
Jakub Kubík 58a83f06b1 feat(presence): add granular allow configuration 2023-10-21 22:31:16 -04:00
Jakub Kubík ba03edfae9 feat(presence): implement presence functionality 2023-10-21 22:31:06 -04:00
girlbossceo 22eff2d29c clean up few unnecessary warnings
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-21 16:15:42 -04:00
girlbossceo 05c08c8529 fix device name federation control
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-21 12:19:21 -04:00
girlbossceo 6e46f56929 error log thing
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-10-21 12:18:59 -04:00
girlbossceo f72fd67a71 remove dbg's, update rocksdb, use iouring
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-24 10:17:26 -04:00
girlbossceo fda30f5602 fix: add destination field authorization handler (not my commit)
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 21:47:37 -04:00
girlbossceo ebd2ec45b1 fix: Do not allow fetching cached remote users' profiles over federation (nyaaori)
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 21:47:37 -04:00
girlbossceo 1b75d384d7 option to control federating device display names
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 21:47:35 -04:00
girlbossceo 81e8df3102 options to control public room directory visibility
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 21:46:43 -04:00
girlbossceo 76c00283de woof woof
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 21:46:41 -04:00
girlbossceo 618036dc31 support querying _matrix-fed and _matrix
_matrix-fed is the new IANA registered SRV record service name
per MSC4040. _matrix is now considered deprecated in Matrix 1.8.
see 3.3 and 3.4 of https://spec.matrix.org/v1.8/server-server-api/#resolving-server-names

Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 20:36:03 -04:00
girlbossceo 87c527ad79 remove unused trace
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-09-13 20:36:03 -04:00
Timo Kösters 75c80df271
Sliding sync improvements and redaction fixes 2023-09-13 20:54:53 +02:00
Timo Kösters f73a657a23
fix: ACL error shouldn't break the whole request 2023-08-11 20:29:22 +02:00
Timo Kösters 11103a92ed
Do not show "Invalid room version" errors when server is not in room 2023-08-11 10:48:48 +02:00
Timo Kösters c028e0553c
feat: registration tokens 2023-08-09 18:27:30 +02:00
Timo Kösters 3e518773e2 Merge branch 'improvements' into 'next'
cross signing fixes

See merge request famedly/conduit!532
2023-08-07 16:11:11 +00:00
Timo Kösters d82c26f0a9
Avatars for sliding sync DMs 2023-08-07 17:54:08 +02:00
Timo Kösters c1e2ffc0cd
improvement: maybe cross signing really works now 2023-08-07 13:55:44 +02:00
girlbossceo fbd8090b0b log room ID for invalid room topic event errors
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-08-03 08:54:47 -10:00
June 5a7bade476 update base64 to 0.21.2
Signed-off-by: June <june@girlboss.ceo>
2023-08-01 14:48:50 -10:00
Timo Kösters d2bfcb018e Merge branch 'error-leak-fix' into 'next'
sanitise potentially sensitive errors

See merge request famedly/conduit!523
2023-08-01 11:25:06 +00:00
Timo Kösters acfe381dd3
fix: threads get updated properly
Workaround for element web while waiting for https://github.com/matrix-org/matrix-js-sdk/pull/3635
2023-07-31 16:18:23 +02:00
girlbossceo 83805c66e5 sanitise potentially sensitive errors
prevents errors like DB or I/O errors from leaking filesystem paths

Co-authored-by: infamous <ehuff007@gmail.com>
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-07-30 17:30:16 +00:00
girlbossceo e2c914cc11 fix: s/ok_or/ok_or_else in relevant places
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-07-29 19:17:12 +00:00
girlbossceo d7061e6984 cargo fmt
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-07-29 14:30:48 +00:00
girlbossceo cc5dcceacc Log the room ID, event ID, PDU, and event type where possible
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-07-29 14:29:26 +00:00
girlbossceo 863103450c Log the unknown login type in warning level
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-07-29 14:29:26 +00:00
girlbossceo 1f867a2c86 Only print raw malformed JSON body in debug level
Signed-off-by: girlbossceo <june@girlboss.ceo>
2023-07-29 14:29:26 +00:00
Tobias Tom 7990822f72 It's ok not being able to find a .well-known response. 2023-07-28 16:26:40 +01:00
Timo Kösters 90a10c84ef Merge branch 'slidingfixes' into 'next'
Better sliding sync

See merge request famedly/conduit!511
2023-07-24 08:48:27 +00:00
Timo Kösters d220641d64
Sliding sync subscriptions, e2ee, to_device messages 2023-07-24 10:42:52 +02:00
Timo Kösters caddc656fb
slightly better sliding sync 2023-07-24 10:42:47 +02:00
Timo Kösters a9ba067e77
fix: e2ee over federation 2023-07-16 16:50:03 +02:00
Timo Kösters c3966f501c
fix: nheko e2ee verification bug 2023-07-10 23:10:27 +02:00
Timo Kösters c17187777f
fix: never try federation with self 2023-07-10 16:26:36 +02:00
Timo Kösters 78e7b711df
fix: better sliding sync 2023-07-10 16:25:33 +02:00
Timo Kösters e4f769963f
feat: very simple sliding sync implementation 2023-07-06 10:32:25 +02:00
Timo Kösters f8a36e7554 Merge branch 'memory' into 'next'
improvement: better memory usage and admin commands to analyze it

See merge request famedly/conduit!497
2023-07-03 17:43:27 +00:00
Timo Kösters a2c3256ced
improvement: better memory usage and admin commands to analyze it 2023-07-03 19:41:07 +02:00
Timo Kösters 833c1505f1 Merge branch 'hierarchy' into 'next'
feat: space hierarchies

See merge request famedly/conduit!495
2023-07-03 13:56:47 +00:00
Timo Kösters 9d49d599f3
feat: space hierarchies 2023-07-02 22:12:06 +02:00
Jonas Platte 0ded637b4a
Upgrade axum to 0.6 2023-06-29 11:20:52 +02:00
Timo Kösters fd1ccbd3ad
improvement: randomize server order for alias joins 2023-06-28 17:44:30 +02:00
Timo Kösters be877ef719
Improve sync performance with more caching and wrapping things in Arcs to avoid copies 2023-06-27 13:15:11 +02:00
Timo Kösters 72eb1972c1
Add relations endpoints, edits and threads work now 2023-06-26 12:38:51 +02:00
Timo Kösters db6def8800
fix: send correct bearer token to appservices 2023-06-26 09:15:52 +02:00
Timo Kösters 49a0f3a60d
fix: /context for element android. start and end must be set even with limit=0 2023-06-26 08:33:31 +02:00
Timo Kösters c7e0ea525a
feat: WIP relationships and threads 2023-06-25 19:40:33 +02:00
Timo Kösters faa9208a3e
cargo fmt 2023-06-08 20:51:34 +02:00
Timo Kösters 1ea27c4f97
fix: restricted room error is now FORBIDDEN 2023-06-08 20:49:42 +02:00
Timo Kösters 422ee40107 Merge branch 'mr-conduit-appservice-login' into 'next'
feat: support end to bridge encryption

See merge request famedly/conduit!454
2023-05-26 12:48:23 +00:00
digital 664d6baace fix: make requested changes 2023-05-26 13:06:28 +02:00
Kévin Commaille 88c6bf7595
Always return an error if a push rule is not found 2023-03-18 15:03:57 +01:00
Kévin Commaille 4635644e21
Use the ruma methods for managing rulesets 2023-03-18 15:03:57 +01:00
Kévin Commaille f53ecaa97d
Bump Ruma 2023-03-18 15:03:56 +01:00
Timo Kösters 42b12934e3
Don't crash when a room errors 2023-03-13 10:43:09 +01:00
Timo Kösters 63f787f635
Reduce logs from info to debug 2023-03-13 10:39:19 +01:00
Timo Kösters a1bd348977
fix: history visibility 2023-03-13 10:39:19 +01:00
Timo Kösters 27f29ba699
fix: SRV lookups should end with a period 2023-03-13 10:39:19 +01:00
Timo Kösters cb0ce5b08f
Logs for server resolution 2023-03-13 10:39:18 +01:00
Timo Kösters 2316d89048
Even more logging 2023-03-13 10:39:18 +01:00
Timo Kösters 4617ee2b6b
More logging for remote joins 2023-03-13 10:39:18 +01:00
Timo Kösters 10fa686c77
feat: respect history visibility 2023-03-13 10:39:18 +01:00
Timo Kösters 2aa0a2474b
fix: ignore unparsable pdus in /send 2023-03-13 10:39:17 +01:00
Timo Kösters eae0989c40
fix: refactor backfill and add support for search 2023-03-13 10:39:17 +01:00
Timo Kösters 7bdd9660aa
feat: ask for backfill 2023-03-13 10:39:17 +01:00
Timo Kösters 23b18d71ee
feat: handle backfill requests
Based on https://gitlab.com/famedly/conduit/-/merge_requests/421
2023-03-13 10:39:16 +01:00
Jonathan de Jong b158896396 Merge remote-tracking branch 'origin/next' into complement-improvements 2023-01-26 18:19:39 +01:00
digital 4d589d9788 feat: support end to bridge encryption
by implementing appservice logins
2023-01-18 23:34:18 +01:00
Nyaaori 7cc346bc18
feat: Implement membership ban/join/leave/invite reason support 2022-12-21 11:45:12 +01:00
Nyaaori c86313d4fa
chore: code cleanup
https://rust-lang.github.io/rust-clippy/master/index.html#op_ref

https://rust-lang.github.io/rust-clippy/master/index.html#str_to_string

https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
2022-12-21 10:42:12 +01:00
Timo Kösters 2a04c213f9
improvement: handle restricted joins locally 2022-12-18 09:44:46 +01:00
Timo Kösters 6d5e54a66b
fix: jaeger support 2022-12-18 06:37:03 +01:00
Timo Kösters f1d2574651
finish upgrade ruma 2022-12-17 09:28:08 +01:00
Jonas Platte d39ce1401d
WIP: Upgrade Ruma 2022-12-16 11:57:32 +01:00
Timo Kösters 5894d35eb2 Merge branch 'fixrestrictedjoin' into 'next'
fix: rejoining restricted rooms over federation

See merge request famedly/conduit!431
2022-11-30 21:32:12 +00:00
Timo Kösters b9fd6127e2
fix: rejoining restricted rooms over federation 2022-11-30 22:30:55 +01:00
Timo Kösters 396dac6d82 Merge branch 'fixroomleave' into 'next'
fix: unable to leave room

See merge request famedly/conduit!419
2022-11-21 20:04:27 +00:00
Timo Kösters 9149be31af Merge branch 'logs-cleanup' into 'next'
Clean some noisy logs

See merge request famedly/conduit!423
2022-11-21 20:03:17 +00:00
Nyaaori b59304a4df
Reduce length of generated access tokens and session ids
Reduces generated tokens and session ids down to 32 characters (~190 bits of entropy) in length
2022-11-21 20:51:59 +01:00
Nyaaori 66bc41125c
refactor: cleanup 2022-11-21 20:50:39 +01:00
Andriy Kushnir (Orhideous) a3a1db124d
Clean some noisy logs 2022-11-21 21:48:06 +02:00
Timo Kösters 3b3c451c83
fix: unable to leave room 2022-11-21 19:50:48 +01:00
Timo Kösters c063700255
fix: invite dendrite users 2022-11-09 21:14:17 +01:00
Timo Kösters 7540227388
chore: bump dependencies 2022-11-09 18:46:10 +01:00
Nyaaori 00996dd834
Cargo Clippy 2022-10-31 09:31:17 +01:00
Timo Kösters 0cf6545116
fix: not sending enough state on join 2022-10-30 21:23:43 +01:00
Timo Kösters c61914c8e1 Merge branch 'fixhead' into 'next'
fix: HEAD requests should continue to produce METHOD_NOT_ALLOWED

See merge request famedly/conduit!402
2022-10-30 19:45:58 +00:00
Timo Kösters 02dd3d32f2
fix: element android did not reset notification counts 2022-10-30 20:41:32 +01:00
Timo Kösters 7c98ba64aa
fix: HEAD requests should produce METHOD_NOT_ALLOWED 2022-10-30 19:53:05 +01:00
Jonathan de Jong 52018c3967 allow complement dockerfile to copy over target folder 2022-10-28 21:04:05 +02:00
James Blachly 3bc0a1924b Return 403 to 3pid token routes to signal not implemented 2022-10-25 20:47:41 +00:00
Jonathan de Jong 215d909e59 More debug info when try_from_http_request fails 2022-10-17 18:41:59 +02:00
Timo Kösters 2231a69b4c
fix: make previous MR compile 2022-10-15 14:07:27 +02:00
Max Cohen 6fd39ae174
Raise 404 when room doesn't exist
Raise 404 "Room not found" when changing or accessing room visibility
settings (`GET` and `PUT
/_matrix/client/r0/directory/list/room/{roomId}`).
See issue #290
2022-10-15 13:52:58 +02:00
Nyaaori 2d0fdddd34
Do not return true for is_guest on whoami for appservice users 2022-10-15 13:17:58 +02:00
Timo Kösters b1991c8f4f Merge branch 'Nyaaori/rejoin-fix' into 'next'
Rejoin over federation if we are not participating

See merge request famedly/conduit!399
2022-10-15 09:56:55 +00:00
Nyaaori e9697f13d6
Handle initiating restricted joins over federation
Allows Conduit users to join restricted rooms if we are not currently participating
2022-10-15 10:46:50 +02:00
Nyaaori 3b0aa23fdf
Rejoin room over federation if we are not participating in it; do not include invited users in participating servers calculation 2022-10-15 10:38:30 +02:00
Timo Kösters 3a45628e1d
fix: send unrecognized error on wrong http methods 2022-10-15 00:28:43 +02:00
Timo Kösters c948324cf2 Merge branch 'fix-admin-help' into 'next'
fix `@conduit help` not working in the admin room

See merge request famedly/conduit!392
2022-10-13 11:15:49 +00:00
Timo Kösters 175fba5739 Merge branch 'fix-login-token' into 'next'
fix(client/login): username in lowercase for login by token

See merge request famedly/conduit!380
2022-10-13 11:08:04 +00:00
Timo Kösters f46d64e52f Merge branch 'unstability' into 'next'
Mark unstable versions as unstable in /capabilities

See merge request famedly/conduit!394
2022-10-13 09:39:45 +00:00
Timo Kösters 8c6e75a0cd
Mark unstable versions as unstable in /capabilities 2022-10-13 10:27:42 +02:00
Timo Kösters ac52b234fa
fix: all the e2ee problems 2022-10-13 10:15:35 +02:00
AndSDev 9a47069f45 fix(client/login): username in lowercase for login by token 2022-10-13 06:40:17 +00:00
Charles Hall 3c20c1b72e
fix cargo test 2022-10-12 17:55:12 -07:00
Timo Kösters 4d982d05af Merge branch 'claimfast' into 'next'
improvement: more efficient /claim

See merge request famedly/conduit!389
2022-10-12 09:09:23 +00:00
Timo Kösters dd8f4681a2
fix: make join should not send event id 2022-10-12 10:57:54 +02:00
Timo Kösters 0290f1f355
improvement: more efficient /claim 2022-10-12 10:43:30 +02:00
Timo Kösters d3968c2fd1
fix: bump ruma again to fix state res problems 2022-10-11 21:51:20 +02:00
Timo Kösters 8105c5cc60
cargo fmt 2022-10-11 18:10:51 +02:00
Timo Kösters d1e5acd7b3
fix: don't panic on missing events in state 2022-10-11 17:59:49 +02:00
Timo Kösters 68227c06c3
fix: state for left rooms 2022-10-11 17:10:56 +02:00
Timo Kösters 31d1801912
fix: workaround for missing avatars on element and rooms becoming historical 2022-10-11 17:10:09 +02:00
Timo Kösters fb6bfa9753
fix: missing field origin error with synapse servers 2022-10-11 15:25:10 +02:00
Timo Kösters c30cc6120b
fix: send right errors on make/send join in restricted rooms 2022-10-11 11:53:13 +02:00
Jakub Kubík 0ddc3c01ef
style(client/keys): rename signature key to signed key 2022-10-10 14:41:43 +02:00
Jakub Kubík c15205fb46
fix(client/keys): ignore non-signature keys in signature upload route 2022-10-10 14:41:00 +02:00
Jim df8703cc13
Lightning bolt optional 2022-10-10 14:34:28 +02:00
Nyaaori f430b87459
cargo clippy 2022-10-10 14:09:11 +02:00
Timo Kösters 076e9810ba
cargo fix 2022-10-10 14:02:04 +02:00
Timo Kösters 6b131202b9
Bump ruma 2022-10-10 14:02:04 +02:00
Timo Kösters 275c6b447d
Bump some dependencies 2022-10-10 14:02:04 +02:00
Timo Kösters 1a7893dbbd
fix: update state_cache on join over federation 2022-10-10 14:02:03 +02:00
Timo Kösters 8b5b7a1f63
fix: panic on launch
Now we start the admin and sending threads at a later time.
2022-10-10 14:02:02 +02:00
Timo Kösters 50b0eb9929
cargo fix 2022-10-10 14:02:02 +02:00
Timo Kösters 7822a385bb
cargo fmt 2022-10-10 14:02:02 +02:00
Timo Kösters d5b4754cf4
0 errors left! 2022-10-10 14:02:02 +02:00
Timo Kösters f47a5cd5d5
cargo fix 2022-10-10 14:02:01 +02:00
Timo Kösters a4637e2ba1
cargo fmt 2022-10-10 14:02:01 +02:00
Timo Kösters 33a2b2b772
37 errors left 2022-10-10 14:02:01 +02:00
Timo Kösters 44fe6d1554
127 errors left 2022-10-10 14:02:00 +02:00
Timo Kösters cff52d7ebb
messing around with arcs 2022-10-10 14:02:00 +02:00
Timo Kösters face766e0f
messing with trait objects 2022-10-10 14:02:00 +02:00
Timo Kösters 8708cd3b63
431 errors left 2022-10-10 14:02:00 +02:00
Timo Kösters bd8b616ca0
Fixed more compile time errors 2022-10-10 13:54:00 +02:00
Timo Kösters 057f8364cc
fix: some compile time errors
Only 174 errors left!
2022-10-10 13:25:01 +02:00
Timo Kösters dcdbcc0851
refactor: event handling code 2022-08-15 17:12:22 +02:00
Timo Kösters 025b64befc
refactor: renames and split room.rs 2022-08-15 16:30:34 +02:00