From 7dd502aa7ab681636deb77c5c8f021511ab64d42 Mon Sep 17 00:00:00 2001 From: Maple Nebel Date: Thu, 9 Jul 2026 04:17:05 +0200 Subject: [PATCH] start implementing sentry propperly --- Cargo.lock | 969 +++++++++++++++++- check-edition.sh | 2 +- macros/src/lib.rs | 2 +- macros/src/rmc_struct.rs | 2 +- proxy/src/insecure.rs | 15 +- proxy/src/secure.rs | 15 +- rnex-core/Cargo.toml | 4 + rnex-core/src/common.rs | 68 +- .../executables/backend_server_insecure.rs | 35 +- .../src/executables/backend_server_secure.rs | 47 +- rnex-core/src/executables/common.rs | 3 +- .../executables/edge_node_holder_server.rs | 89 +- rnex-core/src/grpc/account.rs | 7 +- rnex-core/src/kerberos/mod.rs | 2 - rnex-core/src/nex/friends_handler.rs | 92 +- rnex-core/src/nex/user.rs | 8 +- rnex-core/src/rmc/protocols/datastore.rs | 29 +- .../src/rmc/protocols/message_delivery.rs | 6 +- rnex-core/src/rmc/structures/any.rs | 2 +- rnex-core/src/rmc/structures/mod.rs | 2 - rnex-core/src/trace/mod.rs | 0 21 files changed, 1172 insertions(+), 227 deletions(-) delete mode 100644 rnex-core/src/trace/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 4423e9d..bd7dfe2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,163 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "actix-codec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-http" +version = "3.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e2faa3e7418ed780cca54829d32782a4008a077230f67457caa063415e99c2" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "bitflags", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "foldhash 0.2.0", + "futures-core", + "http 0.2.12", + "httparse", + "httpdate", + "itoa", + "language-tags", + "mime", + "percent-encoding", + "pin-project-lite", + "smallvec", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "actix-router" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f8c75c51892f18d9c46150c5ac7beb81c95f78c8b83a634d49f4ca32551fe7" +dependencies = [ + "bytestring", + "cfg-if", + "http 0.2.12", + "regex-lite", + "serde", + "tracing", +] + +[[package]] +name = "actix-rt" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a65064ea4a457eaf07f2fba30b4c695bf43b721790e9530d26cb6f9019ff7502" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "socket2 0.5.10", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46f36bf0e5af44bdc4bdb36fbbd421aa98c79a9bce724e1edeb3894e10dc7f" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df09e2d9239703dd64056359c920c7f3fba6535ec61a0059e0f44e095ffe02b4" +dependencies = [ + "actix-codec", + "actix-http", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "bytes", + "bytestring", + "cfg-if", + "derive_more", + "encoding_rs", + "foldhash 0.2.0", + "futures-core", + "futures-util", + "impl-more", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex-lite", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2 0.6.3", + "time", + "tracing", + "url", +] + +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + [[package]] name = "adler2" version = "2.0.1" @@ -578,6 +735,21 @@ dependencies = [ "tower-service", ] +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-link", +] + [[package]] name = "base16ct" version = "0.1.1" @@ -633,6 +805,15 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + [[package]] name = "bumpalo" version = "3.20.2" @@ -681,6 +862,15 @@ dependencies = [ "either", ] +[[package]] +name = "bytestring" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86566c496f2f47d9b8147a4c8b02ffdb69c919fe0c2b2e7195d22cbba0e635c9" +dependencies = [ + "bytes", +] + [[package]] name = "cc" version = "1.2.61" @@ -699,6 +889,12 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chacha20" version = "0.10.0" @@ -779,6 +975,15 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "cookie" version = "0.18.1" @@ -965,6 +1170,16 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" +[[package]] +name = "debugid" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "serde", + "uuid", +] + [[package]] name = "der" version = "0.6.1" @@ -975,6 +1190,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fd89660b2dc699704064e59e9dba0147b903e85319429e131620d022be411b" +dependencies = [ + "pem-rfc7468", + "zeroize", +] + [[package]] name = "deranged" version = "0.5.8" @@ -984,6 +1209,29 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -1007,6 +1255,16 @@ dependencies = [ "ctutils", ] +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags", + "objc2", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -1051,7 +1309,7 @@ version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "der", + "der 0.6.1", "elliptic-curve", "rfc6979", "signature", @@ -1074,7 +1332,7 @@ checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ "base16ct", "crypto-bigint 0.4.9", - "der", + "der 0.6.1", "digest 0.10.7", "ff", "generic-array", @@ -1086,6 +1344,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -1145,6 +1412,18 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[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", +] + [[package]] name = "fixedbitset" version = "0.5.7" @@ -1190,6 +1469,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1351,6 +1645,12 @@ dependencies = [ "wasip3", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + [[package]] name = "group" version = "0.12.1" @@ -1474,6 +1774,17 @@ dependencies = [ "digest 0.11.3", ] +[[package]] +name = "hostname" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd" +dependencies = [ + "cfg-if", + "libc", + "windows-link", +] + [[package]] name = "http" version = "0.2.12" @@ -1641,6 +1952,22 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.9.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.20" @@ -1797,6 +2124,12 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "impl-more" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35a84fd5aa25fae5c0f4a33d9cac2ca017fc622cbd089be2229993514990f870" + [[package]] name = "indexmap" version = "2.14.0" @@ -1876,6 +2209,18 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "leb128fmt" version = "0.1.0" @@ -1928,6 +2273,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" +[[package]] +name = "local-waker" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" + [[package]] name = "lock_api" version = "0.4.14" @@ -2026,6 +2377,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", + "log", "wasi", "windows-sys 0.61.2", ] @@ -2036,6 +2388,23 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" +[[package]] +name = "native-tls" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + [[package]] name = "nex-account" version = "0.2.3" @@ -2058,6 +2427,27 @@ dependencies = [ "tonic-prost-build", ] +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nu-ansi-term" +version = "0.50.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "num-conv" version = "0.2.1" @@ -2091,18 +2481,239 @@ dependencies = [ "libc", ] +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags", + "block2", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +[[package]] +name = "openssl" +version = "0.10.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "openssl-probe" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +[[package]] +name = "openssl-sys" +version = "0.9.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_info" +version = "3.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf20a545b305cf1da722b236b5155c9bb35f1d5ceb28c048bd96ca842f41b5b" +dependencies = [ + "android_system_properties", + "log", + "nix", + "objc2", + "objc2-foundation", + "objc2-ui-kit", + "serde", + "windows-sys 0.61.2", +] + [[package]] name = "outref" version = "0.5.2" @@ -2155,6 +2766,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pem-rfc7468" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.2" @@ -2210,7 +2830,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" dependencies = [ - "der", + "der 0.6.1", "spki", ] @@ -2540,6 +3160,45 @@ version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2 0.4.13", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.9.0", + "hyper-rustls 0.27.9", + "hyper-tls", + "hyper-util", + "js-sys", + "log", + "native-tls", + "percent-encoding", + "pin-project-lite", + "rustls-pki-types", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-native-tls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "rfc6979" version = "0.3.1" @@ -2591,6 +3250,8 @@ dependencies = [ "paste", "rand 0.10.2", "rc4", + "sentry", + "sentry-tracing", "serde", "serde_json", "sha2 0.10.9", @@ -2599,12 +3260,20 @@ dependencies = [ "thiserror", "tokio", "tonic", + "tracing", + "tracing-subscriber", "typenum", "ureq", "urlencoding", "v-byte-helpers", ] +[[package]] +name = "rustc-demangle" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b74b56ffa8bb2830709a538c2cbcae9aa062db0d2a42563bfb09bdaae44020eb" + [[package]] name = "rustc_version" version = "0.4.1" @@ -2624,7 +3293,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2742,7 +3411,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ "base16ct", - "der", + "der 0.6.1", "generic-array", "pkcs8", "subtle", @@ -2778,6 +3447,128 @@ version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +[[package]] +name = "sentry" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82719d9cd9d2686541dc49875f7944ab71348edfcc6a5686414b22ea0b6d9b29" +dependencies = [ + "cfg_aliases", + "httpdate", + "native-tls", + "reqwest", + "sentry-actix", + "sentry-backtrace", + "sentry-contexts", + "sentry-core", + "sentry-debug-images", + "sentry-panic", + "sentry-tracing", + "tokio", + "ureq", +] + +[[package]] +name = "sentry-actix" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bb4d1d4d51490bbce81d23a9808a70f12ef5a51a114abe0d08196562887eead" +dependencies = [ + "actix-http", + "actix-web", + "bytes", + "futures-util", + "sentry-core", +] + +[[package]] +name = "sentry-backtrace" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317271b821fcca9fc661f66aa8afe93058578d05cca4bd09615fe28a16c8b4cb" +dependencies = [ + "backtrace", + "regex", + "sentry-core", +] + +[[package]] +name = "sentry-contexts" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bae5c2f69cd0f7a1543846b4df412ba8ea1aa2ec4eb5333f125332cec8d4868" +dependencies = [ + "hostname", + "libc", + "os_info", + "rustc_version", + "sentry-core", + "uname", +] + +[[package]] +name = "sentry-core" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8c44ee52fa3d30581f951b57aec754ef9cd70186df5fb788367804360c48097" +dependencies = [ + "rand 0.9.4", + "sentry-types", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "sentry-debug-images" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f96d38ec7e843f909e59acb0cc77452157755ad582be0386df800b6ce71350ba" +dependencies = [ + "findshlibs", + "sentry-core", +] + +[[package]] +name = "sentry-panic" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d47aa64170cf609b948fe8f47d2690541bde11e465daa836cf81ad6e62bb3240" +dependencies = [ + "sentry-backtrace", + "sentry-core", +] + +[[package]] +name = "sentry-tracing" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bdb405dbdfb1dd8b1cca46db8afe7ddd28dd4a55108b27b893170cc614912c" +dependencies = [ + "bitflags", + "sentry-backtrace", + "sentry-core", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "sentry-types" +version = "0.48.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1be93ef0435a5ab91f88178fb7681249437e875d004f996ecb35be94dc99a0e0" +dependencies = [ + "debugid", + "hex", + "rand 0.9.4", + "serde", + "serde_json", + "thiserror", + "time", + "url", + "uuid", +] + [[package]] name = "serde" version = "1.0.228" @@ -2821,6 +3612,18 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -2865,6 +3668,15 @@ dependencies = [ "digest 0.11.3", ] +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + [[package]] name = "shlex" version = "1.3.0" @@ -2981,7 +3793,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" dependencies = [ "base64ct", - "der", + "der 0.6.1", ] [[package]] @@ -3209,6 +4021,9 @@ name = "sync_wrapper" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -3231,7 +4046,7 @@ dependencies = [ "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3263,6 +4078,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + [[package]] name = "time" version = "0.3.47" @@ -3349,6 +4173,16 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.24.1" @@ -3496,6 +4330,24 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags", + "bytes", + "futures-util", + "http 1.4.0", + "http-body 1.0.1", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + [[package]] name = "tower-layer" version = "0.3.3" @@ -3538,6 +4390,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", ] [[package]] @@ -3570,6 +4448,15 @@ version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" +[[package]] +name = "uname" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" +dependencies = [ + "libc", +] + [[package]] name = "unicase" version = "2.9.0" @@ -3603,6 +4490,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -3623,8 +4516,10 @@ checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" dependencies = [ "base64", "cookie_store", + "der 0.8.0", "flate2", "log", + "native-tls", "percent-encoding", "rustls 0.23.40", "rustls-pki-types", @@ -3632,6 +4527,7 @@ dependencies = [ "serde_json", "ureq-proto", "utf8-zero", + "webpki-root-certs", "webpki-roots", ] @@ -3657,6 +4553,7 @@ dependencies = [ "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] @@ -3684,6 +4581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" dependencies = [ "js-sys", + "serde_core", "wasm-bindgen", ] @@ -3696,6 +4594,12 @@ dependencies = [ "macros 0.1.1", ] +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" @@ -3760,6 +4664,16 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af934872acec734c2d80e6617bbb5ff4f12b052dd8e6332b0817bce889516084" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.120" @@ -3826,6 +4740,25 @@ dependencies = [ "semver", ] +[[package]] +name = "web-sys" +version = "0.3.97" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eadbac71025cd7b0834f20d1fe8472e8495821b4e9801eb0a60bd1f19827602" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "1.0.7" @@ -3841,6 +4774,22 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "998767ef88740d1f5b0682a9c53c24431453923962269c2db68ee43788c5a40d" +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.11" @@ -3850,6 +4799,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.62.2" diff --git a/check-edition.sh b/check-edition.sh index c734770..7494337 100755 --- a/check-edition.sh +++ b/check-edition.sh @@ -13,4 +13,4 @@ echo CHECKING $EDITION echo FEATURES: echo $EDITION_FEATURES -cargo check --features "$EDITION_FEATURES" +RUSTFLAGS="--deny warnings" cargo check --features "$EDITION_FEATURES" diff --git a/macros/src/lib.rs b/macros/src/lib.rs index e54ee7c..dc42aa3 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -11,7 +11,7 @@ use proc_macro::TokenStream; use proc_macro2::Ident; use quote::quote; use syn::spanned::Spanned; -use syn::{parse_macro_input, Data, DeriveInput, Lit, LitStr}; +use syn::{parse_macro_input, Data, DeriveInput}; #[proc_macro_derive(RmcSerialize, attributes(extends, rmc_struct))] pub fn rmc_serialize(input: TokenStream) -> TokenStream { diff --git a/macros/src/rmc_struct.rs b/macros/src/rmc_struct.rs index b9e701b..de93949 100644 --- a/macros/src/rmc_struct.rs +++ b/macros/src/rmc_struct.rs @@ -1,7 +1,7 @@ use proc_macro2::{Literal, Span, TokenStream}; use quote::{quote, ToTokens}; use syn::{ - bracketed, ext, parse::Parse, punctuated::Punctuated, token::Bracket, DataEnum, DataStruct, + bracketed, parse::Parse, punctuated::Punctuated, token::Bracket, DataEnum, DataStruct, DeriveInput, Field, Fields, Ident, LitStr, Meta, Token, Variant, }; diff --git a/proxy/src/insecure.rs b/proxy/src/insecure.rs index 1451a64..6dbed45 100644 --- a/proxy/src/insecure.rs +++ b/proxy/src/insecure.rs @@ -1,15 +1,16 @@ use proxy::edge_node_dc_callback; use proxy_common::{ProxyStartupParam, setup_edge_node_connection}; -use rnex_core::common::setup; +use rnex_core::common::with_setup; #[tokio::main] async fn main() { - setup(); + with_setup(async || { + let param = ProxyStartupParam::new(proxy_common::ProxyType::Insecure) + .expect("unable to get startup parameters"); - let param = ProxyStartupParam::new(proxy_common::ProxyType::Insecure) - .expect("unable to get startup parameters"); + setup_edge_node_connection(¶m, edge_node_dc_callback).await; - setup_edge_node_connection(¶m, edge_node_dc_callback).await; - - proxy::start_insecure(param).await; + proxy::start_insecure(param).await; + }) + .await; } diff --git a/proxy/src/secure.rs b/proxy/src/secure.rs index 6d42c87..8e7212f 100644 --- a/proxy/src/secure.rs +++ b/proxy/src/secure.rs @@ -1,14 +1,15 @@ use proxy::edge_node_dc_callback; use proxy_common::{ProxyStartupParam, setup_edge_node_connection}; -use rnex_core::common::setup; +use rnex_core::common::with_setup; #[tokio::main] async fn main() { - setup(); + with_setup(async || { + let param = ProxyStartupParam::new(proxy_common::ProxyType::Secure) + .expect("unable to get startup parameters"); - let param = ProxyStartupParam::new(proxy_common::ProxyType::Secure) - .expect("unable to get startup parameters"); - - setup_edge_node_connection(¶m, edge_node_dc_callback).await; - proxy::start_secure(param).await; + setup_edge_node_connection(¶m, edge_node_dc_callback).await; + proxy::start_secure(param).await; + }) + .await; } diff --git a/rnex-core/Cargo.toml b/rnex-core/Cargo.toml index e508ebe..c4cd3aa 100644 --- a/rnex-core/Cargo.toml +++ b/rnex-core/Cargo.toml @@ -39,6 +39,10 @@ async-trait = "0.1.89" ctor = "1.0.7" nex-account = { version = "0.2.1", registry = "spbr" } tonic = "0.14.6" +tracing = { version = "0.1.44", features = ["log"] } +tracing-subscriber = "0.3.23" +sentry-tracing = "0.48.4" +sentry = { version = "0.48.4", features = ["tracing"] } [dev-dependencies] # criterion = "0.7.0" diff --git a/rnex-core/src/common.rs b/rnex-core/src/common.rs index d183629..c1894f3 100644 --- a/rnex-core/src/common.rs +++ b/rnex-core/src/common.rs @@ -1,38 +1,48 @@ -use chrono::{Local, SecondsFormat}; -use log::LevelFilter; -use simplelog::{ColorChoice, CombinedLogger, Config, TermLogger, TerminalMode, WriteLogger}; -use std::fs; -use std::fs::File; +use std::borrow::Cow; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; -pub fn setup() { +pub fn rnex_release() -> String { + let edition_piece = if let Some(e) = option_env!("EDITION") { + format!("{}", e) + } else { + env!("FEATURESET").into() + }; + + format!( + "rnex {} v{}({})", + edition_piece, + env!("CARGO_PKG_VERSION"), + env!("GIT_HASH") + ) +} + +pub async fn with_setup(f: impl AsyncFnOnce()) { println!("setting up logger and dotenv"); - CombinedLogger::init(vec![ - TermLogger::new( - LevelFilter::Info, - Config::default(), - TerminalMode::Mixed, - ColorChoice::Auto, - ), - WriteLogger::new(LevelFilter::max(), Config::default(), { - fs::create_dir_all("log").unwrap(); - let date = Local::now().to_rfc3339_opts(SecondsFormat::Secs, false); - // this fixes windows being windows - let date = date.replace(":", "-"); - let filename = format!("{}.log", date); - if cfg!(windows) { - File::create(format!("log\\{}", filename)).unwrap() - } else { - File::create(format!("log/{}", filename)).unwrap() - } - }), - ]) - .unwrap(); + dotenv::dotenv().ok(); + let _maybe_sentry = if let Ok(sentry_url) = std::env::var("SENTRY_URL") { + Some(sentry::init(( + sentry_url, + sentry::ClientOptions { + release: Some(Cow::Owned(rnex_release())), + send_default_pii: true, + ..Default::default() + }, + ))) + } else { + None + }; + tracing_subscriber::registry() + .with(tracing_subscriber::fmt::layer()) + .with(sentry::integrations::tracing::layer()) + .try_init() + .expect("failed to init tracing subscriber"); + + f().await; /*ctrlc::set_handler(||{ FORCE_EXIT.call_once_force(|_|{ println!("attempting exit"); }); }).unwrap();*/ - - dotenv::dotenv().ok(); } diff --git a/rnex-core/src/executables/backend_server_insecure.rs b/rnex-core/src/executables/backend_server_insecure.rs index b7ce979..4da5bb9 100644 --- a/rnex-core/src/executables/backend_server_insecure.rs +++ b/rnex-core/src/executables/backend_server_insecure.rs @@ -1,5 +1,5 @@ use once_cell::sync::Lazy; -use rnex_core::common::setup; +use rnex_core::common::with_setup; use rnex_core::executables::common::{SECURE_SERVER_ACCOUNT, new_simple_backend}; use rnex_core::nex::auth_handler::AuthHandler; use rnex_core::reggie::EdgeNodeHolderConnectOption::DontRegister; @@ -21,27 +21,28 @@ pub static FORWARD_EDGE_NODE_HOLDER: Lazy = Lazy::new(|| { #[tokio::main] async fn main() { - setup(); + with_setup(async || { + let conn = TcpStream::connect(&*FORWARD_EDGE_NODE_HOLDER) + .await + .unwrap(); - let conn = TcpStream::connect(&*FORWARD_EDGE_NODE_HOLDER) - .await - .unwrap(); + let conn: SplittableBufferConnection = conn.into(); - let conn: SplittableBufferConnection = conn.into(); + conn.send(DontRegister.to_data().unwrap()).await; - conn.send(DontRegister.to_data().unwrap()).await; + let conn = new_rmc_gateway_connection(conn, |r| { + Arc::new(OnlyRemote::::new(r)) + }); - let conn = new_rmc_gateway_connection(conn, |r| { - Arc::new(OnlyRemote::::new(r)) - }); - - new_simple_backend(move |_, _| { - let controller = conn.clone(); - Arc::new(AuthHandler { - destination_server_acct: &SECURE_SERVER_ACCOUNT, - build_name: env!("AUTH_REPORT_VERSION"), - control_server: controller, + new_simple_backend(move |_, _| { + let controller = conn.clone(); + Arc::new(AuthHandler { + destination_server_acct: &SECURE_SERVER_ACCOUNT, + build_name: env!("AUTH_REPORT_VERSION"), + control_server: controller, + }) }) + .await; }) .await; } diff --git a/rnex-core/src/executables/backend_server_secure.rs b/rnex-core/src/executables/backend_server_secure.rs index aa889ca..d44e21d 100644 --- a/rnex-core/src/executables/backend_server_secure.rs +++ b/rnex-core/src/executables/backend_server_secure.rs @@ -1,31 +1,32 @@ use cfg_if::cfg_if; -use rnex_core::common::setup; +use rnex_core::common::with_setup; #[tokio::main] async fn main() { - setup(); + with_setup(async || { + #[cfg(feature = "database-support")] + { + use rnex_core::executables::common::DB_POOL; + use sqlx::PgPool; + let database_url = std::env::var("RNEX_DATASTORE_DATABASE_URL") + .expect("RNEX_DATASTORE_DATABASE_URL must be set"); - #[cfg(feature = "database-support")] - { - use rnex_core::executables::common::DB_POOL; - use sqlx::PgPool; - let database_url = std::env::var("RNEX_DATASTORE_DATABASE_URL") - .expect("RNEX_DATASTORE_DATABASE_URL must be set"); + let pool = PgPool::connect(&database_url) + .await + .expect("Failed to create pool"); - let pool = PgPool::connect(&database_url) - .await - .expect("Failed to create pool"); - - DB_POOL.set(pool).expect("failed to set global DB_POOL"); - } - - cfg_if! { - if #[cfg(feature = "friends")]{ - use rnex_core::executables::friends_backend::start_friends_backend; - start_friends_backend().await; - } else { - use rnex_core::executables::regular_backend; - regular_backend::start_regular_backend().await + DB_POOL.set(pool).expect("failed to set global DB_POOL"); } - } + + cfg_if! { + if #[cfg(feature = "friends")]{ + use rnex_core::executables::friends_backend::start_friends_backend; + start_friends_backend().await; + } else { + use rnex_core::executables::regular_backend; + regular_backend::start_regular_backend().await + } + } + }) + .await; } diff --git a/rnex-core/src/executables/common.rs b/rnex-core/src/executables/common.rs index 4642232..1f96446 100644 --- a/rnex-core/src/executables/common.rs +++ b/rnex-core/src/executables/common.rs @@ -162,9 +162,8 @@ where #[cfg(test)] mod test { - use std::net::ToSocketAddrs; - use crate::executables::common::{IP_REQ_SERVICE_URLS, try_get_ip}; + use crate::executables::common::try_get_ip; #[test] fn get_ip() { diff --git a/rnex-core/src/executables/edge_node_holder_server.rs b/rnex-core/src/executables/edge_node_holder_server.rs index ea798c5..756d2ee 100644 --- a/rnex-core/src/executables/edge_node_holder_server.rs +++ b/rnex-core/src/executables/edge_node_holder_server.rs @@ -1,24 +1,24 @@ -use std::io::Cursor; -use std::net::SocketAddrV4; -use std::sync::{Arc, Weak}; use macros::rmc_struct; -use tokio::net::TcpListener; -use tokio::sync::RwLock; -use rnex_core::common::setup; +use rnex_core::common::with_setup; use rnex_core::executables::common::{OWN_IP_PRIVATE, SERVER_PORT}; use rnex_core::reggie::{EdgeNodeHolderConnectOption, EdgeNodeManagement, LocalEdgeNodeHolder}; use rnex_core::rmc::protocols::new_rmc_gateway_connection; use rnex_core::rmc::response::ErrorCode; -use rnex_core::util::SplittableBufferConnection; use rnex_core::rmc::structures::RmcSerialize; +use rnex_core::util::SplittableBufferConnection; +use std::io::Cursor; +use std::net::SocketAddrV4; +use std::sync::{Arc, Weak}; +use tokio::net::TcpListener; +use tokio::sync::RwLock; #[rmc_struct(EdgeNodeHolder)] -struct EdgeNode{ +struct EdgeNode { data_holder: Arc, - address: SocketAddrV4 + address: SocketAddrV4, } -impl EdgeNodeManagement for EdgeNode{ +impl EdgeNodeManagement for EdgeNode { async fn get_url(&self, seed: u64) -> Result { self.data_holder.get_url(seed).await } @@ -26,18 +26,18 @@ impl EdgeNodeManagement for EdgeNode{ #[rmc_struct(EdgeNodeHolder)] #[derive(Default)] -struct DataHolder{ - edge_nodes: RwLock>> +struct DataHolder { + edge_nodes: RwLock>>, } -impl EdgeNodeManagement for DataHolder{ +impl EdgeNodeManagement for DataHolder { async fn get_url(&self, seed: u64) -> Result { let nodes = self.edge_nodes.read().await; let nodes: Vec<_> = nodes.iter().filter_map(|n| n.upgrade()).collect(); // avoid a devide by zero - if nodes.len() == 0{ + if nodes.len() == 0 { return Err(ErrorCode::Core_InvalidIndex); }; @@ -49,43 +49,44 @@ impl EdgeNodeManagement for DataHolder{ #[tokio::main] async fn main() { - setup(); + with_setup(async || { + log::error!("test"); + let listen = TcpListener::bind(SocketAddrV4::new(*OWN_IP_PRIVATE, *SERVER_PORT)) + .await + .unwrap(); - let listen = TcpListener::bind(SocketAddrV4::new(*OWN_IP_PRIVATE, *SERVER_PORT)).await.unwrap(); + let holder: Arc = Default::default(); - let holder: Arc = Default::default(); + while let Ok((stream, _addr)) = listen.accept().await { + let mut conn: SplittableBufferConnection = stream.into(); - while let Ok((stream, _addr)) = listen.accept().await { - let mut conn: SplittableBufferConnection = stream.into(); + let Some(data) = conn.recv().await else { + continue; + }; - let Some(data) = conn.recv().await else { - continue; - }; + let Ok(data) = EdgeNodeHolderConnectOption::deserialize(&mut Cursor::new(data)) else { + continue; + }; - let Ok(data) = EdgeNodeHolderConnectOption::deserialize(&mut Cursor::new(data)) else { - continue; - }; + let holder = holder.clone(); - let holder = holder.clone(); + match data { + EdgeNodeHolderConnectOption::DontRegister => { + new_rmc_gateway_connection(conn, |_| holder); + } + EdgeNodeHolderConnectOption::Register(address) => { + let edge_node = EdgeNode { + address, + data_holder: holder.clone(), + }; - match data{ - EdgeNodeHolderConnectOption::DontRegister => { + let node = new_rmc_gateway_connection(conn, move |_| Arc::new(edge_node)); - new_rmc_gateway_connection(conn, |_| holder); - }, - EdgeNodeHolderConnectOption::Register(address) => { - let edge_node = EdgeNode{ - address, - data_holder: holder.clone() - }; - - let node = new_rmc_gateway_connection(conn, move |_| Arc::new(edge_node)); - - let mut nodes = holder.edge_nodes.write().await; - nodes.push(Arc::downgrade(&node)); + let mut nodes = holder.edge_nodes.write().await; + nodes.push(Arc::downgrade(&node)); + } } } - - - } -} \ No newline at end of file + }) + .await; +} diff --git a/rnex-core/src/grpc/account.rs b/rnex-core/src/grpc/account.rs index 445a00c..40f3647 100644 --- a/rnex-core/src/grpc/account.rs +++ b/rnex-core/src/grpc/account.rs @@ -1,15 +1,12 @@ -use crate::grpc::account::Error::SomethingHappened; -use json::{JsonValue, object}; use nex_account::grpc::Pid; use nex_account::grpc::nex_account_service_client::NexAccountServiceClient; use once_cell::sync::Lazy; use rnex_core::PID; use std::array::TryFromSliceError; -use std::ops::Deref; use std::sync::LazyLock; use std::{env, result}; use thiserror::Error; -use tokio::task::{JoinError, spawn_blocking}; +use tokio::task::JoinError; use tonic::transport::Channel; static API_KEY: Lazy = Lazy::new(|| { @@ -69,7 +66,7 @@ impl Client { Ok(nexkey) } - pub async fn get_user_level(&mut self, pid: PID) -> Result { + pub async fn get_user_level(&mut self, _pid: PID) -> Result { // let req = self // .do_request(object! { // "query": r"query($pid: Int!){ diff --git a/rnex-core/src/kerberos/mod.rs b/rnex-core/src/kerberos/mod.rs index 48d9bbc..42e8575 100644 --- a/rnex-core/src/kerberos/mod.rs +++ b/rnex-core/src/kerberos/mod.rs @@ -3,8 +3,6 @@ use cfg_if::cfg_if; use chrono::{Datelike, NaiveDate, NaiveDateTime, NaiveTime, Timelike, Utc}; use hmac::Hmac; use hmac::Mac; -use md5::digest::generic_array::GenericArray; -use md5::{Digest, Md5}; use rc4::KeyInit; use rc4::cipher::StreamCipherCoreWrapper; use rc4::{Rc4, Rc4Core, StreamCipher}; diff --git a/rnex-core/src/nex/friends_handler.rs b/rnex-core/src/nex/friends_handler.rs index 0515b01..e0c5d22 100644 --- a/rnex-core/src/nex/friends_handler.rs +++ b/rnex-core/src/nex/friends_handler.rs @@ -1,18 +1,11 @@ -use std::collections::{HashMap, HashSet}; -use std::io::{Cursor, Write}; -use std::ops::Deref; -use std::process::id; +use std::collections::HashMap; use std::sync::{Arc, atomic::AtomicU32}; use std::sync::{LazyLock, Weak}; use std::time::Duration; use std::{env, mem}; -use base64::{Engine as _, engine::general_purpose}; -use bytemuck::{Pod, Zeroable, bytes_of}; -use chrono::{NaiveDateTime, TimeZone, Utc}; -use futures::StreamExt; -use hex::decode; -use hmac::Mac; +use bytemuck::{Pod, Zeroable}; +use chrono::{TimeZone, Utc}; use log::info; use macros::rmc_struct; use rnex_core::rmc::protocols::account_management::{ @@ -56,13 +49,11 @@ use rnex_core::PID; use rnex_core::rmc::protocols::account_management::NintendoCreateAccountData; use rnex_core::rmc::protocols::nintendo_notification::NintendoNotificationEvent; -use rnex_core::rmc::structures::RmcSerialize; use rnex_core::rmc::structures::data::Data; use crate::executables::common::get_db; -use crate::kerberos; use crate::rmc::protocols::friends_3ds::{ FriendComment, FriendMii, FriendMiiList, FriendPersistentInfo, FriendPicture, FriendPresence, FriendRelationship, Mii, MiiList, MyProfile, NintendoPresence, PlayedGame, @@ -71,7 +62,6 @@ use crate::rmc::protocols::friends_wiiu::FriendRequestMessage; use crate::rmc::protocols::nintendo_notification::NintendoNotificationEventGeneral; use crate::rmc::response::ErrorCode::FPD_InvalidArgument; use nex_account::grpc::ActCreateInfo; -use nex_account::grpc::nex_account_service_client::NexAccountServiceClient; use nex_account::{derive_pid_hmac, grpc_client}; use rnex_core::rmc::structures::qbuffer::QBuffer; @@ -146,27 +136,27 @@ impl FriendsManager { // ALL of this is stubbed impl Friends3DS for FriendsUser { - async fn update_profile(&self, profile: MyProfile) -> Result<(), ErrorCode> { + async fn update_profile(&self, _profile: MyProfile) -> Result<(), ErrorCode> { Ok(()) } - async fn update_mii(&self, profile: Mii) -> Result<(), ErrorCode> { + async fn update_mii(&self, _profile: Mii) -> Result<(), ErrorCode> { Ok(()) } - async fn update_mii_list(&self, profile: MiiList) -> Result<(), ErrorCode> { + async fn update_mii_list(&self, _profile: MiiList) -> Result<(), ErrorCode> { Ok(()) } - async fn update_played_games(&self, profile: Vec) -> Result<(), ErrorCode> { + async fn update_played_games(&self, _profile: Vec) -> Result<(), ErrorCode> { Ok(()) } async fn update_preference( &self, - show_online_status: bool, - show_current_title: bool, - block_friend_requests: bool, + _show_online_status: bool, + _show_current_title: bool, + _block_friend_requests: bool, ) -> Result<(), ErrorCode> { // stubbed Ok(()) @@ -174,7 +164,7 @@ impl Friends3DS for FriendsUser { async fn get_friend_mii( &self, - friends: Vec, + _friends: Vec, ) -> Result, ErrorCode> { // sorry for the copying pretendo but i don't have a mii on hand rn let data: Vec = vec![ @@ -205,30 +195,30 @@ impl Friends3DS for FriendsUser { async fn get_friend_mii_list( &self, - friends: Vec, + _friends: Vec, ) -> Result, ErrorCode> { Err(ErrorCode::Core_NotImplemented) } async fn is_active_game( &self, - unk: Vec, - game_key: crate::rmc::protocols::friends_3ds::GameKey, + _unk: Vec, + _game_key: crate::rmc::protocols::friends_3ds::GameKey, ) -> Result, ErrorCode> { Err(ErrorCode::Core_NotImplemented) } async fn get_principal_id_by_local_friend_code( &self, - unk1: u64, - unk2: Vec, + _unk1: u64, + _unk2: Vec, ) -> Result, ErrorCode> { Err(ErrorCode::Core_NotImplemented) } async fn get_friend_relationships( &self, - unk2: Vec, + _unk2: Vec, ) -> Result, ErrorCode> { let dummy = FriendRelationship { data: Data {}, @@ -240,23 +230,27 @@ impl Friends3DS for FriendsUser { Ok(vec![dummy]) } - async fn add_friend_by_pid(&self, unk: u64, pid: PID) -> Result { + async fn add_friend_by_pid( + &self, + _unk: u64, + _pid: PID, + ) -> Result { Err(ErrorCode::Core_NotImplemented) } async fn add_friend_by_lst_pid( &self, - unk: u64, - pid: Vec, + _unk: u64, + _pid: Vec, ) -> Result, ErrorCode> { Err(ErrorCode::Core_NotImplemented) } - async fn remove_friend_by_local_code(&self, local_code: u64) -> Result<(), ErrorCode> { + async fn remove_friend_by_local_code(&self, _local_code: u64) -> Result<(), ErrorCode> { Err(ErrorCode::Core_NotImplemented) } - async fn remove_friend_by_pid(&self, pid: PID) -> Result<(), ErrorCode> { + async fn remove_friend_by_pid(&self, _pid: PID) -> Result<(), ErrorCode> { Err(ErrorCode::Core_NotImplemented) } @@ -295,8 +289,8 @@ impl Friends3DS for FriendsUser { async fn update_presence( &self, - nintendo_presence: NintendoPresence, - unk: bool, + _nintendo_presence: NintendoPresence, + _unk: bool, ) -> Result<(), ErrorCode> { Ok(()) } @@ -310,11 +304,11 @@ impl Friends3DS for FriendsUser { Ok(()) } - async fn update_comment(&self, comment: String) -> Result<(), ErrorCode> { + async fn update_comment(&self, _comment: String) -> Result<(), ErrorCode> { Ok(()) } - async fn update_picture(&self, unk: u32, picture: Vec) -> Result<(), ErrorCode> { + async fn update_picture(&self, _unk: u32, _picture: Vec) -> Result<(), ErrorCode> { Err(ErrorCode::Core_NotImplemented) } @@ -348,18 +342,18 @@ impl Friends3DS for FriendsUser { async fn get_friend_comment( &self, - unk: Vec, + _unk: Vec, ) -> Result, ErrorCode> { Err(ErrorCode::Core_NotImplemented) } - async fn get_friend_picture(&self, unk: Vec) -> Result, ErrorCode> { + async fn get_friend_picture(&self, _unk: Vec) -> Result, ErrorCode> { Err(ErrorCode::Core_NotImplemented) } async fn get_friend_persistent_info( &self, - unk: Vec, + _unk: Vec, ) -> Result, ErrorCode> { let dummypersistentinfo = FriendPersistentInfo { data: Data {}, @@ -383,7 +377,7 @@ impl Friends3DS for FriendsUser { Ok(vec![dummypersistentinfo]) } - async fn send_invitation(&self, unk: Vec) -> Result<(), ErrorCode> { + async fn send_invitation(&self, _unk: Vec) -> Result<(), ErrorCode> { Err(ErrorCode::Core_NotImplemented) } } @@ -594,7 +588,7 @@ impl FriendsWiiU for FriendsUser { let mut friends = Vec::with_capacity(friends_raw.len()); - for mut friend in friends_raw { + for friend in friends_raw { let Some(friend_since) = friend.since else { println!("this should absolutely never happen(psql messed up somehow)"); return Err(ErrorCode::Core_SystemError); @@ -737,7 +731,7 @@ impl FriendsWiiU for FriendsUser { } async fn remove_friend(&self, friend: PID) -> Result<(), ErrorCode> { - let Ok(query) = query!( + let Ok(_) = query!( "delete from friendships where (pid_a = $1 AND pid_b = $2) OR (pid_a = $2 AND pid_b = $1)", self.pid, friend @@ -791,15 +785,15 @@ impl FriendsWiiU for FriendsUser { async fn add_friend_request( &self, friend: PID, - mut unk1: u8, + _unk1: u8, message: String, - mut unk2: u8, + _unk2: u8, unk3: String, game_key: GameKey, unk4: KerberosDateTime, ) -> Result<(FriendRequest, FriendInfo), ErrorCode> { - unk1 = 0; - unk2 = 1; + let unk1 = 0; + let unk2 = 1; if self.fm.denies_friend_requests(friend).await? { return Err(ErrorCode::FPD_FriendRequestNotAllowed); @@ -1087,7 +1081,7 @@ impl FriendsWiiU for FriendsUser { .await { Ok(_) => {} - Err(e) => return Err(ErrorCode::FPD_FriendAlreadyAdded), + Err(_) => return Err(ErrorCode::FPD_FriendAlreadyAdded), }; let Ok(query) = query!( @@ -1571,7 +1565,7 @@ impl FriendsWiiU for FriendsUser { async fn delete_persistent_notification( &self, - notifs: Vec, + _notifs: Vec, ) -> Result<(), ErrorCode> { Ok(()) } @@ -1750,7 +1744,7 @@ impl AccountManagement for FriendsGuest { let nexkey = client .create_new_sequential_or_update_and_get_account(new_account) .await - .map_err(|e| ErrorCode::Core_Unknown)? + .map_err(|_| ErrorCode::Core_Unknown)? .into_inner(); if nexkey.key.len() != 16 { diff --git a/rnex-core/src/nex/user.rs b/rnex-core/src/nex/user.rs index dceed5d..7f17923 100644 --- a/rnex-core/src/nex/user.rs +++ b/rnex-core/src/nex/user.rs @@ -1,5 +1,3 @@ -use futures::future::join_all; -use log::warn; use rnex_core::PID; use rnex_core::define_rmc_proto; use rnex_core::kerberos::KerberosDateTime; @@ -791,7 +789,7 @@ impl NatTraversal for User { .await .ok(); } - if let Some(user) = self.self_join_ticket_requesters.lock().await.take(&cid) { + if let Some(_user) = self.self_join_ticket_requesters.lock().await.take(&cid) { self.join_tickets_stage2_sender .send(ConnectionTicket { cid, result }) .await @@ -891,7 +889,7 @@ impl Utility for User { return Ok(rand::random()); } - async fn get_integer_settings(&self, index: u32) -> Result, ErrorCode> { + async fn get_integer_settings(&self, _index: u32) -> Result, ErrorCode> { Ok(vec![(0, 1), (1, 2), (2, 0), (3, 4)]) } } @@ -1017,7 +1015,7 @@ impl MessageDelivery for User { async fn deliver_message(&self, mut message: Any) -> Result<(), ErrorCode> { let mut msg = message.get()?; - let users = match msg.recipient_type { + let _users = match msg.recipient_type { 1 => { let Some(user) = self .matchmake_manager diff --git a/rnex-core/src/rmc/protocols/datastore.rs b/rnex-core/src/rmc/protocols/datastore.rs index e6b847d..f850a90 100644 --- a/rnex-core/src/rmc/protocols/datastore.rs +++ b/rnex-core/src/rmc/protocols/datastore.rs @@ -1,4 +1,4 @@ -use macros::{RmcSerialize, method_id, rmc_proto, rmc_struct}; +use macros::{RmcSerialize, method_id, rmc_proto}; use rnex_core::PID; use rnex_core::kerberos::KerberosDateTime; use rnex_core::rmc::response::ErrorCode; @@ -273,7 +273,7 @@ pub struct DataStoreChangeMetaParam { pub struct DataStoreUploadCourseRecordParam { pub dataid: i64, pub slot: u8, - pub score: i32 + pub score: i32, } #[derive(RmcSerialize, Clone, Default, Debug)] @@ -338,15 +338,9 @@ pub struct DataStoreGetCustomRankingParam { #[rmc_proto(115)] pub trait DataStore { #[method_id(4)] - async fn delete_object( - &self, - param: DataStoreDeleteParam, - ) -> Result<(), ErrorCode>; + async fn delete_object(&self, param: DataStoreDeleteParam) -> Result<(), ErrorCode>; #[method_id(8)] - async fn get_meta( - &self, - metaparam: GetMetaParam, - ) -> Result; + async fn get_meta(&self, metaparam: GetMetaParam) -> Result; #[method_id(24)] async fn prepare_post_object( &self, @@ -358,8 +352,8 @@ pub trait DataStore { prepare_get_param: DataStorePrepareGetParam, ) -> Result; #[method_id(26)] - async fn complete_post_object(&self, completeparam: CompletePostParam - ) -> Result<(), ErrorCode>; + async fn complete_post_object(&self, completeparam: CompletePostParam) + -> Result<(), ErrorCode>; #[method_id(36)] async fn get_metas_multiple_param( &self, @@ -411,10 +405,7 @@ pub trait DataStore { application_id: u32, ) -> Result, ErrorCode>; #[method_id(38)] - async fn change_meta( - &self, - param: DataStoreChangeMetaParam - ) -> Result<(), ErrorCode>; + async fn change_meta(&self, param: DataStoreChangeMetaParam) -> Result<(), ErrorCode>; #[method_id(40)] async fn rate_objects( &self, @@ -431,7 +422,7 @@ pub trait DataStore { #[method_id(57)] async fn complete_attach_file( &self, - complete_attach_param: CompletePostParam + complete_attach_param: CompletePostParam, ) -> Result; #[method_id(59)] async fn prepare_attach_file( @@ -441,7 +432,7 @@ pub trait DataStore { #[method_id(71)] async fn upload_course_record( &self, - upload_course_record_param: DataStoreUploadCourseRecordParam + upload_course_record_param: DataStoreUploadCourseRecordParam, ) -> Result<(), ErrorCode>; #[method_id(72)] async fn get_course_record( @@ -462,6 +453,6 @@ pub trait DataStore { #[method_id(87)] async fn report_course( &self, - report_course_param: DataStoreReportCourseParam + report_course_param: DataStoreReportCourseParam, ) -> Result<(), ErrorCode>; } diff --git a/rnex-core/src/rmc/protocols/message_delivery.rs b/rnex-core/src/rmc/protocols/message_delivery.rs index 8cd806f..e0d5cf1 100644 --- a/rnex-core/src/rmc/protocols/message_delivery.rs +++ b/rnex-core/src/rmc/protocols/message_delivery.rs @@ -1,10 +1,6 @@ use macros::{method_id, rmc_proto}; -use crate::rmc::{ - protocols::messaging::UserMessage, - response::ErrorCode, - structures::{Error, any::Any}, -}; +use crate::rmc::{protocols::messaging::UserMessage, response::ErrorCode, structures::any::Any}; #[rmc_proto(27)] pub trait MessageDelivery { diff --git a/rnex-core/src/rmc/structures/any.rs b/rnex-core/src/rmc/structures/any.rs index cdc1357..439f2d6 100644 --- a/rnex-core/src/rmc/structures/any.rs +++ b/rnex-core/src/rmc/structures/any.rs @@ -103,7 +103,7 @@ impl Any { mod test { use std::io::Cursor; - use macros::{RmcSerialize, rmc_struct}; + use macros::RmcSerialize; use crate::rmc::structures::RmcSerialize; use crate::rmc::structures::any::Any; diff --git a/rnex-core/src/rmc/structures/mod.rs b/rnex-core/src/rmc/structures/mod.rs index d78782f..1a44ffe 100644 --- a/rnex-core/src/rmc/structures/mod.rs +++ b/rnex-core/src/rmc/structures/mod.rs @@ -1,6 +1,4 @@ use crate::rmc::structures::helpers::DummyWriter; -use async_trait::async_trait; -use ctor::ctor; use std::io::{Read, Write}; use std::string::FromUtf8Error; use std::sync::RwLock; diff --git a/rnex-core/src/trace/mod.rs b/rnex-core/src/trace/mod.rs deleted file mode 100644 index e69de29..0000000