diff --git a/Cargo.lock b/Cargo.lock index 20b88218c..b40286da7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -421,6 +421,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + [[package]] name = "binascii" version = "0.1.4" @@ -519,7 +525,7 @@ dependencies = [ "serde", "serde_bytes", "serde_json", - "uuid", + "uuid 0.8.2", ] [[package]] @@ -798,12 +804,12 @@ dependencies = [ [[package]] name = "debugid" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ee87af31d84ef885378aebca32be3d682b0e0dc119d5b4860a2c5bb5046730" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ "serde", - "uuid", + "uuid 1.4.1", ] [[package]] @@ -1001,6 +1007,18 @@ dependencies = [ "version_check", ] +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" +dependencies = [ + "cc", + "lazy_static", + "libc", + "winapi 0.3.9", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2006,7 +2024,7 @@ dependencies = [ "trust-dns-proto", "trust-dns-resolver", "typed-builder", - "uuid", + "uuid 0.8.2", "webpki-roots", ] @@ -2232,11 +2250,12 @@ dependencies = [ [[package]] name = "os_info" -version = "3.4.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eca3ecae1481e12c3d9379ec541b238a16f0b75c9a409942daa8ec20dbfdb62" +checksum = "006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e" dependencies = [ "log", + "serde", "winapi 0.3.9", ] @@ -2693,7 +2712,7 @@ dependencies = [ [[package]] name = "redis" version = "0.22.3" -source = "git+https://github.com/insertish/redis-rs?rev=1a41faf356fd21aebba71cea7eb7eb2653e5f0ef#1a41faf356fd21aebba71cea7eb7eb2653e5f0ef" +source = "git+https://github.com/revoltchat/redis-rs?rev=1a41faf356fd21aebba71cea7eb7eb2653e5f0ef#1a41faf356fd21aebba71cea7eb7eb2653e5f0ef" dependencies = [ "async-std", "async-trait", @@ -2712,9 +2731,8 @@ dependencies = [ [[package]] name = "redis" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea8c51b5dc1d8e5fd3350ec8167f464ec0995e79f2e90a075b63371500d557f" +version = "0.23.1" +source = "git+https://github.com/revoltchat/redis-rs?rev=f8ca28ab85da59d2ccde526b4d2fb390eff5a5f9#f8ca28ab85da59d2ccde526b4d2fb390eff5a5f9" dependencies = [ "async-std", "async-trait", @@ -2740,7 +2758,7 @@ dependencies = [ "lazy_static", "mobc", "mobc-redis", - "redis 0.23.0", + "redis 0.23.1", "rmp-serde", "serde", "serde_json", @@ -2858,7 +2876,7 @@ dependencies = [ [[package]] name = "revolt-bonfire" -version = "0.6.5" +version = "0.6.7" dependencies = [ "async-std", "async-tungstenite", @@ -2869,13 +2887,14 @@ dependencies = [ "revolt-presence", "revolt-quark", "rmp-serde", + "sentry", "serde", "serde_json", ] [[package]] name = "revolt-database" -version = "0.6.5" +version = "0.6.7" dependencies = [ "async-recursion", "async-std", @@ -2910,7 +2929,7 @@ dependencies = [ [[package]] name = "revolt-delta" -version = "0.6.5" +version = "0.6.7" dependencies = [ "async-channel", "async-std", @@ -2951,7 +2970,7 @@ dependencies = [ [[package]] name = "revolt-models" -version = "0.6.5" +version = "0.6.7" dependencies = [ "indexmap", "iso8601-timestamp 0.2.11", @@ -2966,7 +2985,7 @@ dependencies = [ [[package]] name = "revolt-permissions" -version = "0.6.5" +version = "0.6.7" dependencies = [ "async-std", "async-trait", @@ -2981,7 +3000,7 @@ dependencies = [ [[package]] name = "revolt-presence" -version = "0.6.5" +version = "0.6.7" dependencies = [ "async-std", "log", @@ -2992,7 +3011,7 @@ dependencies = [ [[package]] name = "revolt-quark" -version = "0.6.5" +version = "0.6.7" dependencies = [ "async-lock", "async-recursion", @@ -3045,7 +3064,7 @@ dependencies = [ [[package]] name = "revolt-result" -version = "0.6.5" +version = "0.6.7" dependencies = [ "revolt_okapi", "revolt_rocket_okapi", @@ -3466,39 +3485,44 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sentry" -version = "0.25.0" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d23af89cf3e40dffb53f974e9a21653353b3e21cf51633aa58006f2a0caf8a" +checksum = "01b0ad16faa5d12372f914ed40d00bda21a6d1bdcc99264c5e5e1c9495cf3654" dependencies = [ "httpdate 1.0.2", + "native-tls", "reqwest", "sentry-backtrace", "sentry-contexts", "sentry-core", + "sentry-debug-images", "sentry-panic", + "sentry-tracing", "tokio 1.18.2", + "ureq", ] [[package]] name = "sentry-backtrace" -version = "0.25.0" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8158a446429420acdf6a4f75192ee8929da16a0c41c89a1c34b2e0f1eaebcc02" +checksum = "11f2ee8f147bb5f22ac59b5c35754a759b9a6f6722402e2a14750b2a63fc59bd" dependencies = [ "backtrace", - "lazy_static", + "once_cell", "regex", "sentry-core", ] [[package]] name = "sentry-contexts" -version = "0.25.0" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3bda8a1e3213f1944da2d42f3081ea9f3717105bb2a6b0a8fe4f5e603010a3" +checksum = "dcd133362c745151eeba0ac61e3ba8350f034e9fe7509877d08059fe1d7720c6" dependencies = [ "hostname", "libc", + "os_info", "rustc_version 0.4.0", "sentry-core", "uname", @@ -3506,32 +3530,55 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.25.0" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56333f11be3a78131c67637f7611339df8af7ad9af831226585a457df75f9e3b" +checksum = "7163491708804a74446642ff2c80b3acd668d4b9e9f497f85621f3d250fd012b" dependencies = [ - "lazy_static", + "once_cell", "rand 0.8.5", "sentry-types", "serde", "serde_json", ] +[[package]] +name = "sentry-debug-images" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a5003d7ff08aa3b2b76994080b183e8cfa06c083e280737c9cee02ca1c70f5e" +dependencies = [ + "findshlibs", + "once_cell", + "sentry-core", +] + [[package]] name = "sentry-panic" -version = "0.25.0" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b957b1965c450acd220a27806fe1f2dec998d393973ebae797936b12df1c7416" +checksum = "c4dfe8371c9b2e126a8b64f6fefa54cef716ff2a50e63b5558a48b899265bccd" dependencies = [ "sentry-backtrace", "sentry-core", ] +[[package]] +name = "sentry-tracing" +version = "0.31.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aca8b88978677a27ee1a91beafe4052306c474c06f582321fde72d2e2cc2f7f" +dependencies = [ + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "sentry-types" -version = "0.25.0" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825fd3382e2397007499a910e0184e55f7837cb0df4af30ae62bd2123e2ebcd6" +checksum = "9e7a88e0c1922d19b3efee12a8215f6a8a806e442e665ada71cc222cab72985f" dependencies = [ "debugid", "getrandom", @@ -3541,7 +3588,7 @@ dependencies = [ "thiserror", "time 0.3.17", "url", - "uuid", + "uuid 1.4.1", ] [[package]] @@ -4413,6 +4460,19 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +[[package]] +name = "ureq" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +dependencies = [ + "base64 0.21.2", + "log", + "native-tls", + "once_cell", + "url", +] + [[package]] name = "url" version = "2.2.2" @@ -4442,6 +4502,16 @@ dependencies = [ "serde", ] +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom", + "serde", +] + [[package]] name = "validator" version = "0.15.0" diff --git a/Cargo.toml b/Cargo.toml index a5a131175..36f24bb1b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,4 +3,8 @@ members = ["crates/delta", "crates/bonfire", "crates/quark", "crates/core/*"] [patch.crates-io] # mobc-redis = { git = "https://github.com/insertish/mobc", rev = "8b880bb59f2ba80b4c7bc40c649c113d8857a186" } -redis = { git = "https://github.com/insertish/redis-rs", rev = "1a41faf356fd21aebba71cea7eb7eb2653e5f0ef" } +redis22 = { package = "redis", version = "0.22.3", git = "https://github.com/revoltchat/redis-rs", rev = "1a41faf356fd21aebba71cea7eb7eb2653e5f0ef" } +redis23 = { package = "redis", version = "0.23.1", git = "https://github.com/revoltchat/redis-rs", rev = "f8ca28ab85da59d2ccde526b4d2fb390eff5a5f9" } + +[profile.release] +debug = true diff --git a/crates/bonfire/Cargo.toml b/crates/bonfire/Cargo.toml index baff48b83..338dd7a7f 100644 --- a/crates/bonfire/Cargo.toml +++ b/crates/bonfire/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-bonfire" -version = "0.6.5" +version = "0.6.7" license = "AGPL-3.0-or-later" edition = "2021" @@ -25,7 +25,12 @@ serde = "1.0.136" # async futures = "0.3.21" async-tungstenite = { version = "0.17.0", features = ["async-std-runtime"] } -async-std = { version = "1.8.0", features = ["tokio1", "tokio02", "attributes"] } +async-std = { version = "1.8.0", features = [ + "tokio1", + "tokio02", + "attributes", +] } # core -revolt-presence = { path = "../core/presence", features = [ "redis-is-patched" ] } +revolt-presence = { path = "../core/presence", features = ["redis-is-patched"] } +sentry = "0.31.5" diff --git a/crates/bonfire/src/websocket.rs b/crates/bonfire/src/websocket.rs index c2bbead6a..b0cb8f45a 100644 --- a/crates/bonfire/src/websocket.rs +++ b/crates/bonfire/src/websocket.rs @@ -136,13 +136,13 @@ pub fn spawn_client(db: &'static Database, stream: TcpStream, addr: SocketAddr) );*/ // Handle incoming events. - match conn.on_message().next().await.map(|item| { - ( + match conn.on_message().next().await.map(|res| { + res.map(|item|( item.get_channel_name().to_string(), redis_kiss::decode_payload::(&item), - ) + )) }) { - Some((channel, item)) => { + Some(Ok((channel, item))) => { if let Ok(mut event) = item { if state .handle_incoming_event_v1( @@ -160,6 +160,11 @@ pub fn spawn_client(db: &'static Database, stream: TcpStream, addr: SocketAddr) warn!("Failed to deserialise an event for {channel}!"); } } + Some(Err(e)) => { + info!("Error while consuming pub/sub messages: {e:?}"); + sentry::capture_error(&e); + break + } // No more data, assume we disconnected or otherwise // something bad occurred, so disconnect user. None => break, diff --git a/crates/core/database/Cargo.toml b/crates/core/database/Cargo.toml index 9524f406e..8a255e646 100644 --- a/crates/core/database/Cargo.toml +++ b/crates/core/database/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-database" -version = "0.6.5" +version = "0.6.7" edition = "2021" license = "AGPL-3.0-or-later" authors = ["Paul Makles "] @@ -22,10 +22,10 @@ default = ["mongodb", "async-std-runtime"] [dependencies] # Core -revolt-result = { version = "0.6.5", path = "../result" } -revolt-models = { version = "0.6.5", path = "../models" } -revolt-presence = { version = "0.6.5", path = "../presence" } -revolt-permissions = { version = "0.6.5", path = "../permissions", features = [ +revolt-result = { version = "0.6.7", path = "../result" } +revolt-models = { version = "0.6.7", path = "../models" } +revolt-presence = { version = "0.6.7", path = "../presence" } +revolt-permissions = { version = "0.6.7", path = "../permissions", features = [ "serde", "bson", ] } diff --git a/crates/core/models/Cargo.toml b/crates/core/models/Cargo.toml index b844283c8..fe293ab1d 100644 --- a/crates/core/models/Cargo.toml +++ b/crates/core/models/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-models" -version = "0.6.5" +version = "0.6.7" edition = "2021" license = "AGPL-3.0-or-later" authors = ["Paul Makles "] @@ -18,7 +18,7 @@ default = ["serde", "partials"] [dependencies] # Core -revolt-permissions = { version = "0.6.5", path = "../permissions" } +revolt-permissions = { version = "0.6.7", path = "../permissions" } # Utility regex = "1" diff --git a/crates/core/permissions/Cargo.toml b/crates/core/permissions/Cargo.toml index 67f9b3616..a41b47d83 100644 --- a/crates/core/permissions/Cargo.toml +++ b/crates/core/permissions/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-permissions" -version = "0.6.5" +version = "0.6.7" edition = "2021" license = "AGPL-3.0-or-later" authors = ["Paul Makles "] diff --git a/crates/core/presence/Cargo.toml b/crates/core/presence/Cargo.toml index a85425c26..b2f7bb540 100644 --- a/crates/core/presence/Cargo.toml +++ b/crates/core/presence/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "revolt-presence" -version = "0.6.5" +version = "0.6.7" edition = "2021" license = "AGPL-3.0-or-later" -authors = [ "Paul Makles " ] +authors = ["Paul Makles "] description = "Revolt Backend: User Presence" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/crates/core/result/Cargo.toml b/crates/core/result/Cargo.toml index cf99e30e0..b11409824 100644 --- a/crates/core/result/Cargo.toml +++ b/crates/core/result/Cargo.toml @@ -1,20 +1,20 @@ [package] name = "revolt-result" -version = "0.6.5" +version = "0.6.7" edition = "2021" license = "AGPL-3.0-or-later" -authors = [ "Paul Makles " ] +authors = ["Paul Makles "] description = "Revolt Backend: Result and Error types" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -serde = [ "dep:serde" ] -schemas = [ "dep:schemars" ] -rocket = [ "dep:rocket", "dep:serde_json" ] -okapi = [ "dep:revolt_rocket_okapi", "dep:revolt_okapi" ] +serde = ["dep:serde"] +schemas = ["dep:schemars"] +rocket = ["dep:rocket", "dep:serde_json"] +okapi = ["dep:revolt_rocket_okapi", "dep:revolt_okapi"] -default = [ "serde" ] +default = ["serde"] [dependencies] # Serialisation diff --git a/crates/delta/Cargo.toml b/crates/delta/Cargo.toml index 668cba53e..d4e663f6b 100644 --- a/crates/delta/Cargo.toml +++ b/crates/delta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-delta" -version = "0.6.5" +version = "0.6.7" license = "AGPL-3.0-or-later" authors = ["Paul Makles "] edition = "2018" @@ -38,29 +38,38 @@ futures = "0.3.8" chrono = "0.4.15" async-channel = "1.6.1" reqwest = { version = "0.11.4", features = ["json"] } -async-std = { version = "1.8.0", features = ["tokio1", "tokio02", "attributes"] } +async-std = { version = "1.8.0", features = [ + "tokio1", + "tokio02", + "attributes", +] } # internal util lettre = "0.10.0-alpha.4" # web -rocket = { version = "0.5.0-rc.2", default-features = false, features = ["json"] } +rocket = { version = "0.5.0-rc.2", default-features = false, features = [ + "json", +] } rocket_empty = { version = "0.1.1", features = ["schema"] } rocket_authifier = { version = "1.0.7" } rocket_prometheus = "0.10.0-rc.3" # spec generation schemars = "0.8.8" -revolt_rocket_okapi = { version = "0.9.1", features = [ "swagger" ] } +revolt_rocket_okapi = { version = "0.9.1", features = ["swagger"] } # quark revolt-quark = { path = "../quark" } # core -revolt-database = { path = "../core/database", features = [ "rocket-impl", "redis-is-patched" ] } -revolt-models = { path = "../core/models", features = [ "schemas", "validator" ] } -revolt-result = { path = "../core/result", features = [ "rocket", "okapi" ] } -revolt-permissions = { path = "../core/permissions", features = [ "schemas" ] } +revolt-database = { path = "../core/database", features = [ + "rocket-impl", + "redis-is-patched", +] } +revolt-models = { path = "../core/models", features = ["schemas", "validator"] } +revolt-result = { path = "../core/result", features = ["rocket", "okapi"] } +revolt-permissions = { path = "../core/permissions", features = ["schemas"] } [build-dependencies] vergen = "7.5.0" diff --git a/crates/delta/src/routes/users/find_mutual.rs b/crates/delta/src/routes/users/find_mutual.rs index 0d2bac7c3..7e5bfaac8 100644 --- a/crates/delta/src/routes/users/find_mutual.rs +++ b/crates/delta/src/routes/users/find_mutual.rs @@ -24,10 +24,6 @@ pub async fn req(db: &State, user: User, target: Ref) -> Result sentry::ClientInitGuard { +pub fn setup_logging(release: &'static str) -> Option { dotenv::dotenv().ok(); if std::env::var("RUST_LOG").is_err() { @@ -13,13 +13,17 @@ pub fn setup_logging(release: &'static str) -> sentry::ClientInitGuard { pretty_env_logger::init(); info!("Starting {release}"); - sentry::init(( - "https://d1d2a6f15c6245a987c532bbbcb30a04@glitchtip.insert.moe/2", - sentry::ClientOptions { - release: Some(release.into()), - ..Default::default() - }, - )) + if let Ok(dsn) = std::env::var("SENTRY_DSN") { + Some(sentry::init(( + dsn, + sentry::ClientOptions { + release: Some(release.into()), + ..Default::default() + }, + ))) + } else { + None + } } #[macro_export]