feat: switch to RabbitMQ streams from Redis Pub/Sub

refactor: redo the bonfire client structure
This commit is contained in:
izzy
2025-06-28 13:35:18 +01:00
parent aab1734615
commit 85989a2138
13 changed files with 1095 additions and 512 deletions

456
Cargo.lock generated
View File

@@ -97,6 +97,54 @@ version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
name = "amq-protocol"
version = "8.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a56406d1cfd9933844a083206bf10fe3748c753bf43c64d4f4453d87181c14f6"
dependencies = [
"amq-protocol-tcp",
"amq-protocol-types",
"amq-protocol-uri",
"cookie-factory",
"nom 8.0.0",
"serde",
]
[[package]]
name = "amq-protocol-tcp"
version = "8.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c95840a64f5529882346cf7710d0c8d6b6e6fb4ecd3fed0883d1ae97c42efc14"
dependencies = [
"amq-protocol-uri",
"tcp-stream",
"tracing",
]
[[package]]
name = "amq-protocol-types"
version = "8.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a7bc568496f6fd598f44bf5c7e9f8157111634a54c114cb9c087e05d282c91a"
dependencies = [
"cookie-factory",
"nom 8.0.0",
"serde",
"serde_json",
]
[[package]]
name = "amq-protocol-uri"
version = "8.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1d80bcd4af9f0fd2bad6def25c66d55130178749cc98000fd3de2b44991b5ed"
dependencies = [
"amq-protocol-types",
"percent-encoding",
"url",
]
[[package]]
name = "amqp_serde"
version = "0.4.2"
@@ -181,6 +229,45 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "asn1-rs"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60"
dependencies = [
"asn1-rs-derive",
"asn1-rs-impl",
"displaydoc",
"nom 7.1.3",
"num-traits",
"rusticata-macros",
"thiserror 2.0.12",
"time",
]
[[package]]
name = "asn1-rs-derive"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c"
dependencies = [
"proc-macro2",
"quote 1.0.40",
"syn 2.0.101",
"synstructure 0.13.2",
]
[[package]]
name = "asn1-rs-impl"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2",
"quote 1.0.40",
"syn 2.0.101",
]
[[package]]
name = "async-attributes"
version = "1.1.2"
@@ -245,6 +332,31 @@ dependencies = [
"tokio 1.45.1",
]
[[package]]
name = "async-global-executor"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13f937e26114b93193065fd44f507aa2e9169ad0cdabbb996920b1fe1ddea7ba"
dependencies = [
"async-channel 2.3.1",
"async-executor",
"async-io",
"async-lock 3.4.0",
"blocking",
"futures-lite 2.6.0",
]
[[package]]
name = "async-global-executor-trait"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9af57045d58eeb1f7060e7025a1631cbc6399e0a1d10ad6735b3d0ea7f8346ce"
dependencies = [
"async-global-executor 3.1.0",
"async-trait",
"executor-trait",
]
[[package]]
name = "async-io"
version = "2.4.1"
@@ -303,6 +415,18 @@ dependencies = [
"tracing",
]
[[package]]
name = "async-reactor-trait"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35ce4c5a0627f1b37c346233c34ef2263e6a58812f7c071b71d3712511421422"
dependencies = [
"async-io",
"async-trait",
"futures-core",
"reactor-trait",
]
[[package]]
name = "async-recursion"
version = "1.1.1"
@@ -340,7 +464,7 @@ checksum = "730294c1c08c2e0f85759590518f6333f0d5a0a766a27d519c1b244c3dfd8a24"
dependencies = [
"async-attributes",
"async-channel 1.9.0",
"async-global-executor",
"async-global-executor 2.4.1",
"async-io",
"async-lock 3.4.0",
"async-process",
@@ -510,7 +634,7 @@ dependencies = [
"anyhow",
"arrayvec",
"log",
"nom",
"nom 7.1.3",
"num-rational",
"v_frame",
]
@@ -1256,6 +1380,15 @@ dependencies = [
"generic-array 0.14.7",
]
[[package]]
name = "block-padding"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
dependencies = [
"generic-array 0.14.7",
]
[[package]]
name = "blocking"
version = "1.6.1"
@@ -1386,6 +1519,15 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
[[package]]
name = "cbc"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
dependencies = [
"cipher",
]
[[package]]
name = "cc"
version = "1.2.26"
@@ -1403,7 +1545,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
dependencies = [
"nom",
"nom 7.1.3",
]
[[package]]
@@ -1487,6 +1629,18 @@ dependencies = [
"cc",
]
[[package]]
name = "cms"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b77c319abfd5219629c45c34c89ba945ed3c5e49fcde9d16b6c3885f118a730"
dependencies = [
"const-oid 0.9.6",
"der 0.7.10",
"spki 0.7.3",
"x509-cert",
]
[[package]]
name = "coarsetime"
version = "0.1.36"
@@ -1536,7 +1690,7 @@ dependencies = [
"async-trait",
"json5",
"lazy_static",
"nom",
"nom 7.1.3",
"pathdiff",
"ron",
"rust-ini",
@@ -2014,7 +2168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4"
dependencies = [
"const-oid 0.6.2",
"der_derive",
"der_derive 0.4.1",
]
[[package]]
@@ -2035,10 +2189,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
dependencies = [
"const-oid 0.9.6",
"der_derive 0.7.3",
"flagset",
"pem-rfc7468 0.7.0",
"zeroize",
]
[[package]]
name = "der-parser"
version = "10.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6"
dependencies = [
"asn1-rs",
"displaydoc",
"nom 7.1.3",
"num-bigint",
"num-traits",
"rusticata-macros",
]
[[package]]
name = "der_derive"
version = "0.4.1"
@@ -2051,6 +2221,17 @@ dependencies = [
"synstructure 0.12.6",
]
[[package]]
name = "der_derive"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18"
dependencies = [
"proc-macro2",
"quote 1.0.40",
"syn 2.0.101",
]
[[package]]
name = "deranged"
version = "0.4.0"
@@ -2096,6 +2277,15 @@ dependencies = [
"syn 2.0.101",
]
[[package]]
name = "des"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e"
dependencies = [
"cipher",
]
[[package]]
name = "devise"
version = "0.4.2"
@@ -2384,7 +2574,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
dependencies = [
"libc",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -2414,6 +2604,15 @@ dependencies = [
"pin-project-lite 0.2.16",
]
[[package]]
name = "executor-trait"
version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13c39dff9342e4e0e16ce96be751eb21a94e94a87bb2f6e63ad1961c2ce109bf"
dependencies = [
"async-trait",
]
[[package]]
name = "exr"
version = "1.73.0"
@@ -2522,6 +2721,12 @@ dependencies = [
"winapi",
]
[[package]]
name = "flagset"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe"
[[package]]
name = "flate2"
version = "1.1.1"
@@ -2541,6 +2746,17 @@ dependencies = [
"num-traits",
]
[[package]]
name = "flume"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095"
dependencies = [
"futures-core",
"futures-sink",
"spin",
]
[[package]]
name = "fnv"
version = "1.0.7"
@@ -3747,6 +3963,7 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
dependencies = [
"block-padding",
"generic-array 0.14.7",
]
@@ -3806,7 +4023,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
dependencies = [
"hermit-abi 0.5.1",
"libc",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -4111,6 +4328,25 @@ dependencies = [
"log",
]
[[package]]
name = "lapin"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "792d823427d788859cf36d471a9983e52e07e1267fb50ec07ecb240ef4ecd8af"
dependencies = [
"amq-protocol",
"async-global-executor-trait",
"async-reactor-trait",
"async-trait",
"executor-trait",
"flume",
"futures-core",
"futures-io",
"reactor-trait",
"tracing",
"waker-fn",
]
[[package]]
name = "lazy_static"
version = "1.5.0"
@@ -4148,7 +4384,7 @@ dependencies = [
"idna 0.3.0",
"mime",
"native-tls",
"nom",
"nom 7.1.3",
"once_cell",
"quoted_printable",
"socket2 0.4.10",
@@ -4655,7 +4891,7 @@ dependencies = [
"md-5",
"mongodb-internal-macros",
"once_cell",
"pbkdf2",
"pbkdf2 0.11.0",
"percent-encoding",
"rand 0.8.5",
"rustc_version_runtime",
@@ -4758,6 +4994,15 @@ dependencies = [
"minimal-lexical",
]
[[package]]
name = "nom"
version = "8.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
dependencies = [
"memchr",
]
[[package]]
name = "noop_proc_macro"
version = "0.3.0"
@@ -4938,6 +5183,15 @@ dependencies = [
"memchr",
]
[[package]]
name = "oid-registry"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7"
dependencies = [
"asn1-rs",
]
[[package]]
name = "once_cell"
version = "1.21.3"
@@ -5027,6 +5281,28 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "p12-keystore"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3cae83056e7cb770211494a0ecf66d9fa7eba7d00977e5bb91f0e925b40b937f"
dependencies = [
"cbc",
"cms",
"der 0.7.10",
"des",
"hex",
"hmac",
"pkcs12",
"pkcs5",
"rand 0.9.1",
"rc2",
"sha1",
"sha2",
"thiserror 2.0.12",
"x509-parser",
]
[[package]]
name = "p256"
version = "0.11.1"
@@ -5112,6 +5388,16 @@ dependencies = [
"digest",
]
[[package]]
name = "pbkdf2"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
dependencies = [
"digest",
"hmac",
]
[[package]]
name = "pear"
version = "0.2.9"
@@ -5382,6 +5668,36 @@ dependencies = [
"zeroize",
]
[[package]]
name = "pkcs12"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "695b3df3d3cc1015f12d70235e35b6b79befc5fa7a9b95b951eab1dd07c9efc2"
dependencies = [
"cms",
"const-oid 0.9.6",
"der 0.7.10",
"digest",
"spki 0.7.3",
"x509-cert",
"zeroize",
]
[[package]]
name = "pkcs5"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6"
dependencies = [
"aes",
"cbc",
"der 0.7.10",
"pbkdf2 0.12.2",
"scrypt",
"sha2",
"spki 0.7.3",
]
[[package]]
name = "pkcs8"
version = "0.9.0"
@@ -5936,6 +6252,15 @@ dependencies = [
"crossbeam-utils",
]
[[package]]
name = "rc2"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62c64daa8e9438b84aaae55010a93f396f8e60e3911590fcba770d04643fc1dd"
dependencies = [
"cipher",
]
[[package]]
name = "rdrand"
version = "0.4.0"
@@ -5945,6 +6270,18 @@ dependencies = [
"rand_core 0.3.1",
]
[[package]]
name = "reactor-trait"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b2eb4ff39ed91c79034b2856a73b07bc8afd752c981bc4433bcbeff531e275a"
dependencies = [
"async-io",
"async-trait",
"futures-core",
"futures-io",
]
[[package]]
name = "redis"
version = "0.23.3"
@@ -5993,7 +6330,7 @@ dependencies = [
"cookie-factory",
"crc16",
"log",
"nom",
"nom 7.1.3",
]
[[package]]
@@ -6228,11 +6565,13 @@ dependencies = [
"bincode",
"fred",
"futures",
"lapin",
"log",
"lru 0.7.8",
"lru_time_cache",
"once_cell",
"querystring",
"rand 0.6.5",
"redis-kiss",
"revolt-config",
"revolt-database",
@@ -6296,6 +6635,7 @@ dependencies = [
"indexmap 1.9.3",
"isahc",
"iso8601-timestamp",
"lapin",
"linkify 0.8.1",
"log",
"lru 0.11.1",
@@ -6315,6 +6655,7 @@ dependencies = [
"revolt_okapi",
"revolt_optional_struct",
"revolt_rocket_okapi",
"rmp-serde",
"rocket",
"schemars",
"serde",
@@ -6341,6 +6682,7 @@ dependencies = [
"futures",
"impl_ops",
"iso8601-timestamp",
"lapin",
"lettre",
"linkify 0.6.0",
"log",
@@ -6359,6 +6701,7 @@ dependencies = [
"revolt-presence",
"revolt-result",
"revolt_rocket_okapi",
"rmp-serde",
"rocket",
"rocket_authifier",
"rocket_cors",
@@ -6892,6 +7235,15 @@ dependencies = [
"semver",
]
[[package]]
name = "rusticata-macros"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632"
dependencies = [
"nom 7.1.3",
]
[[package]]
name = "rustix"
version = "0.38.44"
@@ -6902,7 +7254,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.4.15",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -6915,7 +7267,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.9.4",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -6958,6 +7310,19 @@ dependencies = [
"zeroize",
]
[[package]]
name = "rustls-connector"
version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b68f41384a0c195494f07c9bf5d020dcfca869d3b1492c9391bbc267bd9904fd"
dependencies = [
"log",
"rustls 0.23.27",
"rustls-native-certs 0.8.1",
"rustls-pki-types",
"rustls-webpki 0.103.3",
]
[[package]]
name = "rustls-native-certs"
version = "0.6.3"
@@ -7072,6 +7437,15 @@ version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "salsa20"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213"
dependencies = [
"cipher",
]
[[package]]
name = "schannel"
version = "0.1.27"
@@ -7134,6 +7508,17 @@ dependencies = [
"tendril",
]
[[package]]
name = "scrypt"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f"
dependencies = [
"pbkdf2 0.12.2",
"salsa20",
"sha2",
]
[[package]]
name = "sct"
version = "0.7.1"
@@ -7725,6 +8110,9 @@ name = "spin"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
dependencies = [
"lock_api",
]
[[package]]
name = "spki"
@@ -8029,6 +8417,18 @@ version = "0.12.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
[[package]]
name = "tcp-stream"
version = "0.30.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0217559d8c5a883d66838180671a74007e785689364ebe9627d517af936eaa9"
dependencies = [
"cfg-if",
"p12-keystore",
"rustls-connector",
"rustls-pemfile 2.2.0",
]
[[package]]
name = "tempfile"
version = "3.20.0"
@@ -8039,7 +8439,7 @@ dependencies = [
"getrandom 0.3.3",
"once_cell",
"rustix 1.0.7",
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -9236,7 +9636,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
"windows-sys 0.48.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -9640,6 +10040,34 @@ dependencies = [
"tap",
]
[[package]]
name = "x509-cert"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94"
dependencies = [
"const-oid 0.9.6",
"der 0.7.10",
"spki 0.7.3",
]
[[package]]
name = "x509-parser"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460"
dependencies = [
"asn1-rs",
"data-encoding",
"der-parser",
"lazy_static",
"nom 7.1.3",
"oid-registry",
"rusticata-macros",
"thiserror 2.0.12",
"time",
]
[[package]]
name = "xmlparser"
version = "0.13.6"