diff --git a/Cargo.lock b/Cargo.lock index 1db141bc..9e33ab94 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -437,17 +437,17 @@ dependencies = [ "lru-cache", "nix", "num_cpus", - "opentelemetry", + "opentelemetry 0.21.0", "opentelemetry-jaeger", - "opentelemetry_sdk", + "opentelemetry_sdk 0.21.2", "parking_lot", "rand", "regex", "reqwest", "ring", - "rocksdb", "ruma", "rusqlite", + "rust-rocksdb", "sd-notify", "serde", "serde_html_form", @@ -876,13 +876,19 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap", + "indexmap 2.2.5", "slab", "tokio", "tokio-util", "tracing", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.3" @@ -899,7 +905,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "692eaaf7f7607518dd3cef090f1474b61edc5301d8012f09579920df68b725ee" dependencies = [ - "hashbrown", + "hashbrown 0.14.3", ] [[package]] @@ -1102,6 +1108,16 @@ dependencies = [ "png", ] +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.2.5" @@ -1109,7 +1125,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.3", "serde", ] @@ -1286,23 +1302,6 @@ dependencies = [ "windows-targets 0.52.4", ] -[[package]] -name = "librocksdb-sys" -version = "0.16.0+8.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce3d60bc059831dc1c83903fb45c103f75db65c5a7bf22272764d9cc683e348c" -dependencies = [ - "bindgen", - "bzip2-sys", - "cc", - "glob", - "libc", - "libz-sys", - "lz4-sys", - "pkg-config", - "zstd-sys", -] - [[package]] name = "libsqlite3-sys" version = "0.28.0" @@ -1613,6 +1612,16 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "opentelemetry" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" +dependencies = [ + "opentelemetry_api", + "opentelemetry_sdk 0.20.0", +] + [[package]] name = "opentelemetry" version = "0.21.0" @@ -1621,7 +1630,7 @@ checksum = "1e32339a5dc40459130b3bd269e9892439f55b33e772d2a9d402a789baaf4e8a" dependencies = [ "futures-core", "futures-sink", - "indexmap", + "indexmap 2.2.5", "js-sys", "once_cell", "pin-project-lite", @@ -1638,9 +1647,9 @@ dependencies = [ "async-trait", "futures-core", "futures-util", - "opentelemetry", + "opentelemetry 0.21.0", "opentelemetry-semantic-conventions", - "opentelemetry_sdk", + "opentelemetry_sdk 0.21.2", "thrift", "tokio", ] @@ -1651,7 +1660,43 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5774f1ef1f982ef2a447f6ee04ec383981a3ab99c8e77a1a7b30182e65bbc84" dependencies = [ - "opentelemetry", + "opentelemetry 0.21.0", +] + +[[package]] +name = "opentelemetry_api" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" +dependencies = [ + "futures-channel", + "futures-util", + "indexmap 1.9.3", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", + "urlencoding", +] + +[[package]] +name = "opentelemetry_sdk" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" +dependencies = [ + "async-trait", + "crossbeam-channel", + "futures-channel", + "futures-executor", + "futures-util", + "once_cell", + "opentelemetry_api", + "ordered-float 3.9.2", + "percent-encoding", + "rand", + "regex", + "thiserror", ] [[package]] @@ -1665,9 +1710,8 @@ dependencies = [ "futures-channel", "futures-executor", "futures-util", - "glob", "once_cell", - "opentelemetry", + "opentelemetry 0.21.0", "ordered-float 4.2.0", "percent-encoding", "rand", @@ -1685,6 +1729,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + [[package]] name = "ordered-float" version = "4.2.0" @@ -2099,20 +2152,10 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rocksdb" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bd13e55d6d7b8cd0ea569161127567cd587676c99f4472f779a0279aa60a7a7" -dependencies = [ - "libc", - "librocksdb-sys", -] - [[package]] name = "ruma" version = "0.9.4" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "assign", "js_int", @@ -2131,7 +2174,7 @@ dependencies = [ [[package]] name = "ruma-appservice-api" version = "0.9.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "js_int", "ruma-common", @@ -2143,7 +2186,7 @@ dependencies = [ [[package]] name = "ruma-client-api" version = "0.17.4" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "as_variant", "assign", @@ -2162,14 +2205,14 @@ dependencies = [ [[package]] name = "ruma-common" version = "0.12.1" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "as_variant", "base64 0.21.7", "bytes", "form_urlencoded", "http", - "indexmap", + "indexmap 2.2.5", "js_int", "konst", "percent-encoding", @@ -2190,10 +2233,10 @@ dependencies = [ [[package]] name = "ruma-events" version = "0.27.11" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "as_variant", - "indexmap", + "indexmap 2.2.5", "js_int", "js_option", "percent-encoding", @@ -2212,7 +2255,7 @@ dependencies = [ [[package]] name = "ruma-federation-api" version = "0.8.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "js_int", "ruma-common", @@ -2224,7 +2267,7 @@ dependencies = [ [[package]] name = "ruma-identifiers-validation" version = "0.9.3" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "js_int", "thiserror", @@ -2233,7 +2276,7 @@ dependencies = [ [[package]] name = "ruma-identity-service-api" version = "0.8.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "js_int", "ruma-common", @@ -2243,7 +2286,7 @@ dependencies = [ [[package]] name = "ruma-macros" version = "0.12.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "once_cell", "proc-macro-crate", @@ -2258,7 +2301,7 @@ dependencies = [ [[package]] name = "ruma-push-gateway-api" version = "0.8.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "js_int", "ruma-common", @@ -2270,7 +2313,7 @@ dependencies = [ [[package]] name = "ruma-signatures" version = "0.14.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "base64 0.21.7", "ed25519-dalek", @@ -2286,7 +2329,7 @@ dependencies = [ [[package]] name = "ruma-state-res" version = "0.10.0" -source = "git+https://github.com/girlbossceo/ruma?rev=13b8386812679b33235c68fa1ec0b50c4647d05a#13b8386812679b33235c68fa1ec0b50c4647d05a" +source = "git+https://github.com/girlbossceo/ruma?branch=conduwuit-changes#13b8386812679b33235c68fa1ec0b50c4647d05a" dependencies = [ "itertools 0.11.0", "js_int", @@ -2311,6 +2354,31 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rust-librocksdb-sys" +version = "0.18.1+8.11.3" +source = "git+https://github.com/zaidoon1/rust-rocksdb?rev=3e4a0f632a8c0c2839c7d183725c53895110d907#3e4a0f632a8c0c2839c7d183725c53895110d907" +dependencies = [ + "bindgen", + "bzip2-sys", + "cc", + "glob", + "libc", + "libz-sys", + "lz4-sys", + "pkg-config", + "zstd-sys", +] + +[[package]] +name = "rust-rocksdb" +version = "0.22.7" +source = "git+https://github.com/zaidoon1/rust-rocksdb?rev=3e4a0f632a8c0c2839c7d183725c53895110d907#3e4a0f632a8c0c2839c7d183725c53895110d907" +dependencies = [ + "libc", + "rust-librocksdb-sys", +] + [[package]] name = "rustc-demangle" version = "0.1.23" @@ -2474,7 +2542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20e1066e1cfa6692a722cf40386a2caec36da5ddc4a2c16df592f0f609677e8c" dependencies = [ "form_urlencoded", - "indexmap", + "indexmap 2.2.5", "itoa", "ryu", "serde", @@ -2538,7 +2606,7 @@ version = "0.9.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f" dependencies = [ - "indexmap", + "indexmap 2.2.5", "itoa", "ryu", "serde", @@ -3009,7 +3077,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap", + "indexmap 2.2.5", "serde", "serde_spanned", "toml_datetime", @@ -3110,6 +3178,17 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "tracing-log" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-log" version = "0.2.0" @@ -3123,20 +3202,16 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.22.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c67ac25c5407e7b961fafc6f7e9aa5958fd297aada2d20fa2ae1737357e55596" +checksum = "fc09e402904a5261e42cf27aea09ccb7d5318c6717a9eec3d8e2e65c56b18f19" dependencies = [ - "js-sys", "once_cell", - "opentelemetry", - "opentelemetry_sdk", - "smallvec", + "opentelemetry 0.20.0", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-subscriber", - "web-time", ] [[package]] @@ -3154,7 +3229,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", ] [[package]] @@ -3413,16 +3488,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "webpage" version = "2.0.0" diff --git a/Cargo.toml b/Cargo.toml index 5f4c24d2..b30e8bcc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,103 +12,47 @@ edition = "2021" # See also `rust-toolchain.toml` rust-version = "1.75.0" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -# Web framework -axum = { version = "0.6.20", default-features = false, features = ["form", "headers", "http1", "http2", "json", "matched-path"], optional = true } -axum-server = { version = "0.5.1", features = ["tls-rustls"] } -tower = { version = "0.4.13", features = ["util"] } -tower-http = { version = "0.4.4", features = ["add-extension", "cors", "sensitive-headers", "trace", "util", "compression-zstd"] } - -# Used for matrix spec type definitions and helpers -#ruma = { version = "0.4.0", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-pre-spec", "unstable-exhaustive-types"] } -#ruma = { git = "https://github.com/ruma/ruma", rev = "4d9f754657a099df8e61533787b8eebd12946435", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified", "unstable-msc2870", "unstable-msc3061", "unstable-msc2867", "unstable-extensible-events"] } -ruma = { git = "https://github.com/girlbossceo/ruma", rev = "13b8386812679b33235c68fa1ec0b50c4647d05a", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified", "unstable-msc2870", "unstable-msc3061", "unstable-msc2867", "unstable-extensible-events"] } -#ruma = { path = "../ruma/crates/ruma", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified" ] } - -# Async runtime and utilities -hyperlocal = { git = "https://github.com/softprops/hyperlocal", rev = "2ee4d149644600d326559af0d2b235c945b05c04", features = [ - "server", -] } -hyper = { version = "0.14", features = ["server", "http1", "http2"] } -tokio = { version = "1.36.0", features = ["fs", "macros", "signal", "sync"] } - -# Used for the http request / response body type for Ruma endpoints used with reqwest -bytes = "1.5.0" -http = "0.2.12" -# Used for ruma wrapper -serde_json = { version = "1.0.114", features = ["raw_value"] } -# Used for appservice registration files -serde_yaml = "0.9.32" -# Used for pdu definition -serde = { version = "1.0.197", features = ["rc"] } # Used for secure identifiers rand = "0.8.5" -# Used to hash passwords -argon2 = { version = "0.5.3", features = ["alloc", "rand"], default-features = false } -reqwest = { version = "0.11.25", default-features = false, features = ["rustls-tls-native-roots", "socks"] } + # Used for conduit::Error type thiserror = "1.0.57" -# Used to generate thumbnails for images -image = { version = "0.24.9", default-features = false, features = ["jpeg", "png", "gif", "webp"] } + # Used to encode server public key base64 = "0.22.0" + # Used when hashing the state ring = "0.17.8" + # Used when querying the SRV record of other servers trust-dns-resolver = "0.23.2" + # Used to find matching events for appservices regex = "1.10.3" + # Used to load forbidden room/user regex from config serde_regex = "1.1.0" itertools = "0.12.1" + # jwt jsonwebtokens jsonwebtoken = "9.2.0" -# Performance measurements -tracing = { version = "0.1.40", features = [] } -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } -tracing-flame = "0.2.0" -opentelemetry = "0.21.0" -opentelemetry_sdk = { version = "0.21.2", features = ["rt-tokio"] } -opentelemetry-jaeger = { version = "0.20.0", features = ["rt-tokio"] } -tracing-opentelemetry = "0.22.0" + lru-cache = "0.1.2" -rusqlite = { git = "https://github.com/rusqlite/rusqlite", rev = "def8e9460d8376a5c0c9f4f9846d413a9cd4581a", optional = true, features = ["bundled"] } -parking_lot = { version = "0.12.1", optional = true } -num_cpus = "1.16.0" + # Used for ruma wrapper serde_html_form = "0.2.4" -thread_local = "1.1.8" # used for TURN server authentication hmac = "0.12.1" sha-1 = "0.10.1" -sha2 = { version = "0.10.8" } -# used for conduit's CLI and admin room command parsing -clap = { version = "4.5.2", default-features = false, features = ["std", "derive", "help", "usage", "error-context"] } -futures-util = { version = "0.3.30", default-features = false } -# Used for reading the configuration from conduit.toml & environment variables -figment = { version = "0.10.14", features = ["env", "toml"] } -tikv-jemalloc-ctl = { version = "0.5.4", features = ["use_std"], optional = true } -tikv-jemallocator = { version = "0.5.4", features = ["unprefixed_malloc_on_supported_platforms"], optional = true } async-trait = "0.1.77" -# used for checking if an IP is in specific subnets / CIDR ranges +# used for checking if an IP is in specific subnets / CIDR ranges easier ipaddress = "0.1.3" -sd-notify = { version = "0.4.1", optional = true } - -webpage = { version = "2.0", default-features = false } - -rocksdb = { version = "0.22.0", default-features = true, features = ["multi-threaded-cf", "zstd"], optional = true } - -either = { version = "1.10.0", features = ["serde"] } - -# to listen on both HTTP and HTTPS -axum-server-dual-protocol = { version = "0.5.2", optional = true } - # to encode/decode percent URIs when conduwuit is running without a reverse proxy #urlencoding = "2.1.3" @@ -118,25 +62,275 @@ axum-server-dual-protocol = { version = "0.5.2", optional = true } # to parse user-friendly time durations in admin commands cyborgtime = "2.1.1" +# all the web/HTTP dependencies +# Used for the http request / response body type for Ruma endpoints used with reqwest +bytes = "1.5.0" +http = "0.2.12" + +# Web framework +[dependencies.axum] +version = "0.6.20" +default-features = false +features = ["form", "headers", "http1", "http2", "json", "matched-path"] +optional = true + +[dependencies.axum-server] +version = "0.5.1" +features = ["tls-rustls"] + +[dependencies.tower] +version = "0.4.13" +features = ["util"] + +[dependencies.tower-http] +version = "0.4.4" +features = [ + "add-extension", + "cors", + "sensitive-headers", + "trace", + "util", +] + +# unix socket support +[dependencies.hyperlocal] +git = "https://github.com/softprops/hyperlocal" +rev = "2ee4d149644600d326559af0d2b235c945b05c04" +features = ["server"] + +[dependencies.hyper] +version = "0.14" +features = [ + "server", + "http1", + "http2", +] + +[dependencies.reqwest] +version = "0.11.25" +default-features = false +features = [ + "rustls-tls-native-roots", + "socks", +] + +# all the serde stuff +# Used for pdu definition +[dependencies.serde] +version = "1.0.197" +features = ["rc"] +# Used for appservice registration files +[dependencies.serde_yaml] +version = "0.9.32" +# Used for ruma wrapper +[dependencies.serde_json] +version = "1.0.114" +features = ["raw_value"] + + +# Used for password hashing +[dependencies.argon2] +version = "0.5.3" +features = [ + "alloc", + "rand", +] +default-features = false + +# Used to generate thumbnails for images +[dependencies.image] +version = "0.24.9" +default-features = false +features = [ + "jpeg", + "png", + "gif", + "webp", +] + +# logging +[dependencies.tracing] +version = "0.1.40" +default-features = false +[dependencies.tracing-subscriber] +version = "0.3.18" +features = ["env-filter"] + +# optional SHA256 media keys feature +[dependencies.sha2] +version = "0.10.8" +optional = true + +# optional opentelemetry, performance measurements, flamegraphs, etc for performance measurements and monitoring +[dependencies.opentelemetry] +version = "0.21.0" +optional = true +[dependencies.tracing-flame] +version = "0.2.0" +optional = true +[dependencies.tracing-opentelemetry] +version = "0.20.0" +optional = true +[dependencies.opentelemetry_sdk] +version = "0.21.2" +optional = true +features = ["rt-tokio"] +[dependencies.opentelemetry-jaeger] +version = "0.20.0" +optional = true +features = ["rt-tokio"] + +# optional jemalloc usage +[dependencies.tikv-jemallocator] +version = "0.5.4" +optional = true +default-features = false +features = ["unprefixed_malloc_on_supported_platforms"] +[dependencies.tikv-jemalloc-ctl] +version = "0.5.4" +optional = true +default-features = false +features = ["use_std"] + +# for URL previews +[dependencies.webpage] +version = "2.0" +default-features = false + +# to support multiple variations of setting a config option +[dependencies.either] +version = "1.10.0" +features = ["serde"] + +# to listen on both HTTP and HTTPS if listening on TLS dierctly from conduwuit for complement or sytest +[dependencies.axum-server-dual-protocol] +version = "0.5.2" +optional = true + +# used for conduit's CLI and admin room command parsing +[dependencies.clap] +version = "4.5.2" +default-features = false +features = [ + "std", + "derive", + "help", + "usage", + "error-context", +] + +[dependencies.futures-util] +version = "0.3.30" +default-features = false + +# Used for reading the configuration from conduit.toml & environment variables +[dependencies.figment] +version = "0.10.14" +features = [ + "env", + "toml", +] + +# Used for matrix spec type definitions and helpers +#ruma = { version = "0.4.0", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-pre-spec", "unstable-exhaustive-types"] } +#ruma = { git = "https://github.com/ruma/ruma", rev = "4d9f754657a099df8e61533787b8eebd12946435", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified", "unstable-msc2870", "unstable-msc3061", "unstable-msc2867", "unstable-extensible-events"] } +#ruma = { path = "../ruma/crates/ruma", features = ["compat", "rand", "appservice-api-c", "client-api", "federation-api", "push-gateway-api-c", "state-res", "unstable-msc2448", "unstable-msc3575", "unstable-exhaustive-types", "ring-compat", "unstable-unspecified" ] } +[dependencies.ruma] +git = "https://github.com/girlbossceo/ruma" +branch = "conduwuit-changes" +features = [ + "compat", + "rand", + "appservice-api-c", + "client-api", + "federation-api", + "push-gateway-api-c", + "state-res", + "unstable-msc2448", + "unstable-msc3575", + "unstable-exhaustive-types", + "ring-compat", + "unstable-unspecified", + "unstable-msc2870", + "unstable-msc3061", + "unstable-msc2867", + "unstable-extensible-events", +] + +[dependencies.rust-rocksdb] +git = "https://github.com/zaidoon1/rust-rocksdb" +#branch = "master" +rev = "3e4a0f632a8c0c2839c7d183725c53895110d907" +optional = true +features = [ + "multi-threaded-cf", + "zstd", +] + +[dependencies.rusqlite] +git = "https://github.com/rusqlite/rusqlite" +#branch = "master" +rev = "def8e9460d8376a5c0c9f4f9846d413a9cd4581a" +optional = true +features = ["bundled"] + +# used only by rusqlite +[dependencies.parking_lot] +version = "0.12.1" +optional = true + +# used only by rusqlite +[dependencies.thread_local] +version = "1.1.8" +optional = true + +# used only by rusqlite and rust-rocksdb +[dependencies.num_cpus] +version = "1.16.0" +optional = true + + +[target.'cfg(not(unix))'.dependencies] +tokio = { version = "1.36.0", features = ["fs", + "macros", + "sync", +] } # tokio signals are not used on non-*nix platforms + +# *nix-specific dependencies [target.'cfg(unix)'.dependencies] nix = { version = "0.28.0", features = ["resource"] } +sd-notify = { version = "0.4.1", optional = true } # systemd is only available/relevant on *nix platforms +tokio = { version = "1.36.0", features = [ + "fs", + "macros", + "sync", + "signal", +] } + + [features] -default = ["conduit_bin", "backend_rocksdb", "systemd", "zstd_compression"] +default = ["conduit_bin", "backend_rocksdb", "systemd"] backend_sqlite = ["sqlite"] -backend_rocksdb = ["rocksdb"] +backend_rocksdb = ["rust-rocksdb", "num_cpus"] jemalloc = ["tikv-jemalloc-ctl", "tikv-jemallocator"] -sqlite = ["rusqlite", "parking_lot", "tokio/signal"] +sqlite = ["rusqlite", "parking_lot", "thread_local", "num_cpus"] conduit_bin = ["axum"] systemd = ["sd-notify"] + #gzip_compression = ["tower-http/compression-gzip"] -zstd_compression = [] +zstd_compression = ["tower-http/compression-zstd"] #brotli_compression = ["tower-http/compression-br"] -#compression = ["tower-http/compression-full"] -sha256_media = [] -io_uring = ["rocksdb/io-uring"] +#all_compression = ["tower-http/compression-full"] # all compression algos + +sha256_media = ["sha2"] +io_uring = ["rust-rocksdb/io-uring"] axum_dual_protocol = ["axum-server-dual-protocol"] +perf_measurements = ["opentelemetry", "tracing-flame", "tracing-opentelemetry", "opentelemetry_sdk", "opentelemetry-jaeger"] + + + [[bin]] name = "conduit" path = "src/main.rs" @@ -167,6 +361,8 @@ conf-files = [ maintainer-scripts = "debian/" systemd-units = { unit-name = "matrix-conduit" } + + [profile.dev] debug = 0 lto = 'off' @@ -203,6 +399,8 @@ debug = 0 opt-level = 3 codegen-units = 1 + + [lints] workspace = true @@ -230,7 +428,6 @@ unit_bindings = "warn" # this seems to suggest broken code and is not working correctly unused_braces = "allow" - [workspace.lints.clippy] # pedantic = "warn" diff --git a/conduwuit-example.toml b/conduwuit-example.toml index 2ab19b5b..6fae84a1 100644 --- a/conduwuit-example.toml +++ b/conduwuit-example.toml @@ -85,6 +85,7 @@ max_request_size = 20_000_000 # in bytes #unix_socket_perms = 660 # Set this to true for conduwuit to compress HTTP response bodies using zstd. +# This option does nothing if conduwuit was not built with `zstd_compression` feature. # Please be aware that enabling HTTP compression may weaken or even defeat TLS. # Most users should not need to enable this. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH before deciding to enable this.