7021c52c9b
amazing that this wasn't done in the first place. a lack of a UA is suspicious and some providers may block our requests just for the sake of no UA. Signed-off-by: strawberry <strawberry@puppygock.gay>
4.8 KiB
4.8 KiB
list of features, bug fixes, etc that conduwuit does that upstream does not:
- Has a working CI/CD for tests, codebase warnings (rustc and clippy), caching, and build (still need to output artifacts with build variants)
- Fixed every single clippy (default lints) and rustc warnings, including some that were performance related or potential safety issues / unsoundness
- Has dependabot and significantly updates all dependencies possible
- Uses upstream reqwest instead of super old fork (via upstream MR)
- Uses proper argon2 crate instead of questionable rust-argon2 crate
- Improved and cleaned up logging (less noisy dead server logging, registration attempts, more useful troubleshooting logging, etc)
- Attempts and interest in removing extreme and unnecessary panics/unwraps/expects that can lead to denial of service or such (upstream and upstream contributors want this unusual behaviour for some reason)
- Merged and cleaned up upstream MRs that have been sitting for 6-12 months
- Using latest rust-rocksdb git for the latest RocksDB release which has various fixes, features, improvements, etc, including some regarding database corruption.
- Configurable RocksDB logging (
LOG
files) with proper defaults (rotate, max size, verbosity, etc) to stop LOG files from accumulating so much - Federated presence support and configurable local presence (via upstream MR)
- Concurrency support for key fetching for faster remote room joins and room joins that will error less frequently (via upstream MR)
- Experimental room version 11 support (via upstream MR)
- Enabled all non-officially-supported room versions as experimental so we can at least attempt to join them
- Configurable guest registration including forbidding guest registrations if no admin user is created yet, respects allow registration setting, and an optional override setting with a default of no guest registrations allowed.
- Explicit startup error/warning if your configuration allows open registration without a token or such like Synapse
- Improved RocksDB defaults to use new features that help with performance significantly, uses settings tailored to SSDs, and a conduwuit setting to tell RocksDB to use settings that are tailored to HDDs or slow spinning rust storage.
- Updated Ruma to latest commit where possible, and add some unstable MSCs (some still require an implementation though)
- conduwuit allows MXIDs with
+
in them (thanks to Ruma update) - Revamped admin room infrastructure and commands (via upstream MR)
- Make spaces/hierarchy cache use cache_capacity_modifier instead of hardcoded small value
- Send missing push notifications on invitations (via upstream MR)
- Make PDU appending, building, etc asynchronous
- Add optional feature flag to use SHA256 key names for media instead of base64 to overcome filesystem file name length limitations (OS error file name too long) (via upstream MR)
- Add optional feature flag to enable zstd HTTP body compression
- Add support for querying both Matrix SRV records, the deprecated
_matrix
record and_matrix-fed
record if necessary - Add config option for device name federation with a privacy-friendly default (disabled)
- Add config option for requiring authentication to the
/publicRooms
endpoint (room directory) with a default enabled for privacy - Add config option for federating
/publicRooms
endpoint (room directory) to other servers with a default disabled for privacy - Add support for listening on a UNIX socket for performance and host security with proper default permissions (660)
- Add missing
destination
key to allX-Matrix
Authorization
requests (spec compliance issue) - Fix spec compliance issue with servers being able to fetch remote user profiles over federation for users who don't belong to our server (
/_matrix/federation/v1/query/profile
) - Use aggressive build-time performance optimisations for release builds (1 codegen unit, no debug, fat LTO, etc, and optimise all crates with same)
- Raise various hardcoded timeouts in codebase that were way too short, making some things like room joins and client bugs error less or none at all than they should
- Add debug admin command to force update user device lists (could potentially resolve some E2EE flukes) (
ForceDeviceListUpdates
) - Declare various missing Matrix versions and features at
/_matrix/client/versions
- Add support for serving server and client well-known files from conduwuit using
well_known_client
andwell_known_server
options - Add non-standard sliding sync proxy health check (?) endpoint at
/client/server.json
that some clients such as Element Web query using thewell_known_client
orwell_known_server
config options - Send a User-Agent on all of our requests (
conduwuit/0.7.0-alpha+conduwuit-0.1.1
) which strangely was not done upstream since forever. Some providers consider no User-Agent suspicious and block said requests.