allow any number of simultaneous inbound / outbound connections (to different Cores)

This commit is contained in:
mbecker20
2025-09-27 14:23:36 -07:00
parent e802bb3882
commit d1e32989e3
8 changed files with 199 additions and 134 deletions
Generated
+92 -91
View File
@@ -4,9 +4,9 @@ version = 4
[[package]]
name = "addr2line"
version = "0.24.2"
version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b"
dependencies = [
"gimli",
]
@@ -147,9 +147,9 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
[[package]]
name = "async-compression"
version = "0.4.30"
version = "0.4.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "977eb15ea9efd848bb8a4a1a2500347ed7f0bf794edf0dc3ddcf439f43d36b23"
checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0"
dependencies = [
"compression-codecs",
"compression-core",
@@ -249,9 +249,9 @@ dependencies = [
[[package]]
name = "aws-lc-rs"
version = "1.14.0"
version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786"
checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d"
dependencies = [
"aws-lc-sys",
"zeroize",
@@ -259,15 +259,16 @@ dependencies = [
[[package]]
name = "aws-lc-sys"
version = "0.31.0"
version = "0.32.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd"
checksum = "1ba2e2516bdf37af57fc6ff047855f54abad0066e5c4fdaaeb76dabb2e05bcf5"
dependencies = [
"bindgen",
"cc",
"cmake",
"dunce",
"fs_extra",
"libloading",
]
[[package]]
@@ -296,9 +297,9 @@ dependencies = [
[[package]]
name = "aws-sdk-ec2"
version = "1.170.0"
version = "1.170.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c2d25783bbe5577c6b67cb019e3890174fedc4ee436bbb7cc0256ccbeebfd63"
checksum = "a10d20db0a1e3d6ccaca95529911f186010cb6475087d881c4647a883ed66613"
dependencies = [
"aws-credential-types",
"aws-runtime",
@@ -462,7 +463,7 @@ dependencies = [
"rustls-native-certs 0.8.1",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.3",
"tokio-rustls 0.26.4",
"tower",
"tracing",
]
@@ -695,15 +696,15 @@ dependencies = [
"rustls-pemfile 2.2.0",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.3",
"tokio-rustls 0.26.4",
"tower-service",
]
[[package]]
name = "backtrace"
version = "0.3.75"
version = "0.3.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
dependencies = [
"addr2line",
"cfg-if",
@@ -711,7 +712,7 @@ dependencies = [
"miniz_oxide",
"object",
"rustc-demangle",
"windows-targets 0.52.6",
"windows-link 0.2.0",
]
[[package]]
@@ -992,9 +993,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.38"
version = "1.2.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80f41ae168f955c12fb8960b057d70d0ca153fb83182b57d86380443527be7e9"
checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -1229,9 +1230,9 @@ dependencies = [
[[package]]
name = "compression-codecs"
version = "0.4.30"
version = "0.4.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "485abf41ac0c8047c07c87c72c8fb3eb5197f6e9d7ded615dfd1a00ae00a0f64"
checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23"
dependencies = [
"compression-core",
"flate2",
@@ -1648,12 +1649,12 @@ dependencies = [
[[package]]
name = "deranged"
version = "0.5.3"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc"
checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071"
dependencies = [
"powerfmt",
"serde",
"serde_core",
]
[[package]]
@@ -2052,7 +2053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys 0.61.0",
"windows-sys 0.61.1",
]
[[package]]
@@ -2331,9 +2332,9 @@ dependencies = [
[[package]]
name = "gimli"
version = "0.31.1"
version = "0.32.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
[[package]]
name = "git"
@@ -2739,7 +2740,7 @@ dependencies = [
"rustls-native-certs 0.8.1",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.3",
"tokio-rustls 0.26.4",
"tower-service",
"webpki-roots 1.0.2",
]
@@ -2810,7 +2811,7 @@ dependencies = [
"js-sys",
"log",
"wasm-bindgen",
"windows-core 0.62.0",
"windows-core 0.62.1",
]
[[package]]
@@ -3131,9 +3132,9 @@ dependencies = [
[[package]]
name = "js-sys"
version = "0.3.80"
version = "0.3.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e"
checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305"
dependencies = [
"once_cell",
"wasm-bindgen",
@@ -3296,7 +3297,7 @@ dependencies = [
"strum 0.27.2",
"thiserror 2.0.16",
"tokio",
"tokio-tungstenite 0.27.0",
"tokio-tungstenite 0.28.0",
"tokio-util",
"tracing",
"typeshare",
@@ -3408,7 +3409,7 @@ dependencies = [
"slack_client_rs",
"svi",
"tokio",
"tokio-tungstenite 0.27.0",
"tokio-tungstenite 0.28.0",
"tokio-util",
"toml",
"toml_pretty",
@@ -3508,7 +3509,7 @@ dependencies = [
"sysinfo",
"tokio",
"tokio-stream",
"tokio-tungstenite 0.27.0",
"tokio-tungstenite 0.28.0",
"tokio-util",
"tracing",
"transport",
@@ -3533,12 +3534,12 @@ checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
[[package]]
name = "libloading"
version = "0.8.9"
version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
dependencies = [
"cfg-if",
"windows-link 0.2.0",
"windows-targets 0.53.4",
]
[[package]]
@@ -3730,9 +3731,9 @@ dependencies = [
[[package]]
name = "memchr"
version = "2.7.5"
version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "mime"
@@ -3860,7 +3861,7 @@ dependencies = [
"take_mut",
"thiserror 1.0.69",
"tokio",
"tokio-rustls 0.26.3",
"tokio-rustls 0.26.4",
"tokio-util",
"typed-builder",
"uuid",
@@ -4066,9 +4067,9 @@ dependencies = [
[[package]]
name = "object"
version = "0.36.7"
version = "0.37.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
dependencies = [
"memchr",
]
@@ -4824,9 +4825,9 @@ dependencies = [
[[package]]
name = "regex"
version = "1.11.2"
version = "1.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912"
checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c"
dependencies = [
"aho-corasick",
"memchr",
@@ -4836,9 +4837,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.10"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6"
checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad"
dependencies = [
"aho-corasick",
"memchr",
@@ -4891,7 +4892,7 @@ dependencies = [
"serde_urlencoded",
"sync_wrapper",
"tokio",
"tokio-rustls 0.26.3",
"tokio-rustls 0.26.4",
"tokio-util",
"tower",
"tower-http",
@@ -5153,7 +5154,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys",
"windows-sys 0.61.0",
"windows-sys 0.61.1",
]
[[package]]
@@ -5276,7 +5277,7 @@ version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
dependencies = [
"windows-sys 0.61.0",
"windows-sys 0.61.1",
]
[[package]]
@@ -5405,9 +5406,9 @@ checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
[[package]]
name = "serde"
version = "1.0.226"
version = "1.0.227"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd"
checksum = "80ece43fc6fbed4eb5392ab50c07334d3e577cbf40997ee896fe7af40bba4245"
dependencies = [
"serde_core",
"serde_derive",
@@ -5435,18 +5436,18 @@ dependencies = [
[[package]]
name = "serde_core"
version = "1.0.226"
version = "1.0.227"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4"
checksum = "7a576275b607a2c86ea29e410193df32bc680303c82f31e275bbfcafe8b33be5"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.226"
version = "1.0.227"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33"
checksum = "51e694923b8824cf0e9b382adf0f60d4e05f348f357b38833a3fa5ed7c2ede04"
dependencies = [
"proc-macro2",
"quote",
@@ -5896,9 +5897,9 @@ dependencies = [
[[package]]
name = "sysinfo"
version = "0.37.0"
version = "0.37.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753"
checksum = "3bddd368fda2f82ead69c03d46d351987cfa0c2a57abfa37a017f3aa3e9bf69a"
dependencies = [
"libc",
"memchr",
@@ -6098,9 +6099,9 @@ dependencies = [
[[package]]
name = "tokio-rustls"
version = "0.26.3"
version = "0.26.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f63835928ca123f1bef57abbcd23bb2ba0ac9ae1235f1e65bda0d06e7786bd"
checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
dependencies = [
"rustls 0.23.32",
"tokio",
@@ -6132,9 +6133,9 @@ dependencies = [
[[package]]
name = "tokio-tungstenite"
version = "0.27.0"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "489a59b6730eda1b0171fcfda8b121f4bee2b35cba8645ca35c5f7ba3eb736c1"
checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
dependencies = [
"futures-util",
"log",
@@ -6142,8 +6143,8 @@ dependencies = [
"rustls-native-certs 0.8.1",
"rustls-pki-types",
"tokio",
"tokio-rustls 0.26.3",
"tungstenite 0.27.0",
"tokio-rustls 0.26.4",
"tungstenite 0.28.0",
]
[[package]]
@@ -6231,7 +6232,7 @@ dependencies = [
"prost",
"rustls-native-certs 0.8.1",
"tokio",
"tokio-rustls 0.26.3",
"tokio-rustls 0.26.4",
"tokio-stream",
"tower",
"tower-layer",
@@ -6403,7 +6404,7 @@ dependencies = [
"sha1",
"sha2",
"tokio",
"tokio-tungstenite 0.27.0",
"tokio-tungstenite 0.28.0",
"tracing",
"url",
"uuid",
@@ -6434,9 +6435,9 @@ dependencies = [
[[package]]
name = "tungstenite"
version = "0.27.0"
version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d"
checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
dependencies = [
"bytes",
"data-encoding",
@@ -6674,9 +6675,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
version = "0.2.103"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819"
checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d"
dependencies = [
"cfg-if",
"once_cell",
@@ -6687,9 +6688,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.103"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c"
checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19"
dependencies = [
"bumpalo",
"log",
@@ -6701,9 +6702,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.53"
version = "0.4.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0b221ff421256839509adbb55998214a70d829d3a28c69b4a6672e9d2a42f67"
checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c"
dependencies = [
"cfg-if",
"js-sys",
@@ -6714,9 +6715,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.103"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0"
checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -6724,9 +6725,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.103"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32"
checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7"
dependencies = [
"proc-macro2",
"quote",
@@ -6737,9 +6738,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.103"
version = "0.2.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf"
checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1"
dependencies = [
"unicode-ident",
]
@@ -6774,9 +6775,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.80"
version = "0.3.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbe734895e869dc429d78c4b433f8d17d95f8d05317440b4fad5ab2d33e596dc"
checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -6884,9 +6885,9 @@ dependencies = [
[[package]]
name = "windows-core"
version = "0.62.0"
version = "0.62.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c"
checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9"
dependencies = [
"windows-implement",
"windows-interface",
@@ -6908,9 +6909,9 @@ dependencies = [
[[package]]
name = "windows-implement"
version = "0.60.0"
version = "0.60.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0"
dependencies = [
"proc-macro2",
"quote",
@@ -6919,9 +6920,9 @@ dependencies = [
[[package]]
name = "windows-interface"
version = "0.59.1"
version = "0.59.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5"
dependencies = [
"proc-macro2",
"quote",
@@ -7030,14 +7031,14 @@ version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
dependencies = [
"windows-targets 0.53.3",
"windows-targets 0.53.4",
]
[[package]]
name = "windows-sys"
version = "0.61.0"
version = "0.61.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa"
checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f"
dependencies = [
"windows-link 0.2.0",
]
@@ -7075,11 +7076,11 @@ dependencies = [
[[package]]
name = "windows-targets"
version = "0.53.3"
version = "0.53.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91"
checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b"
dependencies = [
"windows-link 0.1.3",
"windows-link 0.2.0",
"windows_aarch64_gnullvm 0.53.0",
"windows_aarch64_msvc 0.53.0",
"windows_i686_gnu 0.53.0",
+9 -9
View File
@@ -62,7 +62,7 @@ futures-util = "0.3.31"
arc-swap = "1.7.1"
# SERVER
tokio-tungstenite = { version = "0.27.0", features = ["rustls-tls-native-roots"] }
tokio-tungstenite = { version = "0.28.0", features = ["rustls-tls-native-roots"] }
axum-extra = { version = "0.10.1", features = ["typed-header"] }
tower-http = { version = "0.6.6", features = ["fs", "cors"] }
axum-server = { version = "0.7.2", features = ["tls-rustls"] }
@@ -71,17 +71,17 @@ axum = { version = "0.8.4", features = ["ws", "json", "macros"] }
# SER/DE
ipnetwork = { version = "0.21.1", features = ["serde"] }
indexmap = { version = "2.11.4", features = ["serde"] }
serde = { version = "1.0.219", features = ["derive"] }
serde = { version = "1.0.227", features = ["derive"] }
strum = { version = "0.27.2", features = ["derive"] }
bson = { version = "2.15.0" } # must keep in sync with mongodb version
serde_yaml_ng = "0.10.0"
serde_json = "1.0.145"
serde_qs = "0.15.0"
toml = "0.9.6"
toml = "0.9.7"
url = "2.5.7"
# ERROR
anyhow = "1.0.99"
anyhow = "1.0.100"
thiserror = "2.0.16"
# LOGGING
@@ -94,7 +94,7 @@ opentelemetry = "0.30.0"
tracing = "0.1.41"
# CONFIG
clap = { version = "4.5.47", features = ["derive"] }
clap = { version = "4.5.48", features = ["derive"] }
dotenvy = "0.15.7"
envy = "0.4.2"
@@ -117,11 +117,11 @@ hex = "0.4.3"
# SYSTEM
portable-pty = "0.9.0"
bollard = "0.19.2"
sysinfo = "0.37.0"
sysinfo = "0.37.1"
# CLOUD
aws-config = "1.8.6"
aws-sdk-ec2 = "1.167.0"
aws-sdk-ec2 = "1.170.1"
aws-credential-types = "1.2.6"
## CRON
@@ -131,7 +131,7 @@ chrono = "0.4.42"
croner = "3.0.0"
# MISC
async-compression = { version = "0.4.30", features = ["tokio", "gzip"] }
async-compression = { version = "0.4.32", features = ["tokio", "gzip"] }
derive_builder = "0.20.2"
shell-escape = "0.1.5"
comfy-table = "7.2.1"
@@ -140,5 +140,5 @@ octorust = "0.10.0"
dashmap = "6.1.0"
wildcard = "0.3.0"
colored = "3.0.0"
regex = "1.11.2"
regex = "1.11.3"
bytes = "1.10.1"
+6 -3
View File
@@ -81,10 +81,13 @@ pub fn periphery_config() -> &'static PeripheryConfig {
env.periphery_passkeys,
)
.or(config.passkeys),
core_address: env
.periphery_core_address
.or(config.core_address),
core_addresses: env
.periphery_core_addresses
.or(config.core_addresses),
connect_as: env.periphery_connect_as.or(config.connect_as),
server_enabled: env
.periphery_server_enabled
.unwrap_or(config.server_enabled),
port: env.periphery_port.unwrap_or(config.port),
bind_ip: env.periphery_bind_ip.unwrap_or(config.bind_ip),
root_directory: env
-7
View File
@@ -15,13 +15,6 @@ pub async fn handler(
address: &str,
connect_as: &str,
) -> anyhow::Result<()> {
if let Err(e) =
rustls::crypto::aws_lc_rs::default_provider().install_default()
{
error!("Failed to install default crypto provider | {e:?}");
std::process::exit(1);
};
let address = fix_ws_address(address);
let identifiers = AddressConnectionIdentifiers::extract(&address)?;
let query = format!("server={}", urlencoding::encode(connect_as));
+1 -1
View File
@@ -111,7 +111,7 @@ async fn handle<W: Websocket>(
info!(
"Logged in to Komodo Core {} websocket{}",
args.core,
if config.core_address.is_some()
if config.core_addresses.is_some()
&& let Some(connect_as) = &config.connect_as
{
format!(" as Server {connect_as}")
+12 -3
View File
@@ -51,9 +51,6 @@ pub async fn run() -> anyhow::Result<()> {
if config.ssl_enabled {
info!("🔒 Periphery SSL Enabled");
rustls::crypto::ring::default_provider()
.install_default()
.expect("failed to install default rustls CryptoProvider");
crate::helpers::ensure_ssl_certs().await;
info!("Komodo Periphery starting on wss://{}", socket_addr);
let ssl_config = RustlsConfig::from_pem_file(
@@ -92,6 +89,18 @@ async fn handler(
let channel = channels().get_or_insert_default(&args.core).await;
// Ensure the receiver is free before upgrading connection.
// Due to ownership, it needs to be re-locked inside the ws handler,
// opening up a possible timing edge case, but should be good enough.
drop(
channel
.receiver()
.with_context(|| {
format!("Connection for {} is already connected", args.core)
})
.inspect_err(|e| warn!("{e:#}"))?,
);
Ok(ws.on_upgrade(|socket| async move {
let mut socket = AxumWebsocket(socket);
+47 -8
View File
@@ -1,4 +1,4 @@
use anyhow::anyhow;
use futures::{StreamExt, stream::FuturesUnordered};
use crate::config::periphery_public_key;
@@ -28,18 +28,48 @@ async fn app() -> anyhow::Result<()> {
info!("{:?}", config.sanitized());
}
install_crypto_provider();
stats::spawn_polling_thread();
docker::stats::spawn_polling_thread();
match (&config.core_address, &config.connect_as) {
(Some(core_host), Some(connect_as)) => {
connection::client::handler(core_host, connect_as).await
let mut handles = FuturesUnordered::new();
// Spawn client side connections
match (&config.core_addresses, &config.connect_as) {
(Some(addresses), Some(connect_as)) => {
for address in addresses {
handles.push(tokio::spawn(connection::client::handler(
address, connect_as,
)));
}
}
(None, _) => connection::server::run().await,
(Some(_), None) => Err(anyhow!(
"Must provide 'connect_as' (PERIPHERY_CONNECT_AS) for outbound connection."
)),
(Some(_), None) => {
warn!(
"'core_addresses' are defined for outbound connection, but missing 'connect_as' (PERIPHERY_CONNECT_AS)"
);
}
_ => {}
}
// Spawn server connection handler
if config.server_enabled {
handles.push(tokio::spawn(connection::server::run()));
}
// Watch the threads
while let Some(res) = handles.next().await {
match res {
Ok(Err(e)) => {
error!("CONNECTION ERROR: {e:#}");
}
Err(e) => {
error!("SPAWN ERROR: {e:#}");
}
Ok(Ok(())) => {}
}
}
Ok(())
}
#[tokio::main]
@@ -60,3 +90,12 @@ async fn main() -> anyhow::Result<()> {
Ok(())
}
fn install_crypto_provider() {
if let Err(e) =
rustls::crypto::aws_lc_rs::default_provider().install_default()
{
error!("Failed to install default crypto provider | {e:?}");
std::process::exit(1);
};
}
+32 -12
View File
@@ -132,10 +132,13 @@ pub struct Env {
pub periphery_passkeys: Option<Vec<String>>,
/// Override `passkeys` from file
pub periphery_passkeys_file: Option<PathBuf>,
/// Override `core_address`
pub periphery_core_address: Option<String>,
/// Override `core_addresses`
#[serde(alias = "periphery_core_address")]
pub periphery_core_addresses: Option<Vec<String>>,
/// Override `connect_as`
pub periphery_connect_as: Option<String>,
/// Override `server_enabled`
pub periphery_server_enabled: Option<bool>,
/// Override `port`
pub periphery_port: Option<u16>,
/// Override `bind_ip`
@@ -202,6 +205,7 @@ pub struct PeripheryConfig {
/// Optionally pin a specific Core public key
/// for additional trust.
#[serde(
default,
alias = "core_public_key",
deserialize_with = "option_string_list_deserializer",
skip_serializing_if = "Option::is_none"
@@ -209,23 +213,33 @@ pub struct PeripheryConfig {
pub core_public_keys: Option<Vec<String>>,
/// Deprecated. Legacy v1 compatibility.
/// Users should upgrade to private / public key authentication.
/// Can only be used with Core -> Periphery connection.
#[serde(skip_serializing_if = "Option::is_none")]
pub passkeys: Option<Vec<String>>,
// ============================
// = OUTBOUND CONNECTION MODE =
// ============================
// =======================
// = OUTBOUND CONNECTION =
// =======================
/// Address of Komodo Core when connecting outbound
#[serde(skip_serializing_if = "Option::is_none")]
pub core_address: Option<String>,
#[serde(
default,
alias = "core_address",
deserialize_with = "option_string_list_deserializer",
skip_serializing_if = "Option::is_none"
)]
pub core_addresses: Option<Vec<String>>,
/// Server name / id to connect as
#[serde(skip_serializing_if = "Option::is_none")]
pub connect_as: Option<String>,
// ===========================
// = INBOUND CONNECTION MODE =
// ===========================
// ======================
// = INBOUND CONNECTION =
// ======================
/// Enable the inbound connection server
#[serde(default = "default_server_enabled")]
pub server_enabled: bool,
/// The port periphery will run on.
/// Default: `8120`
#[serde(default = "default_periphery_port")]
@@ -379,6 +393,10 @@ fn default_container_stats_polling_rate() -> Timelength {
Timelength::ThirtySeconds
}
fn default_server_enabled() -> bool {
true
}
fn default_ssl_enabled() -> bool {
true
}
@@ -389,8 +407,9 @@ impl Default for PeripheryConfig {
private_key: default_private_key(),
core_public_keys: None,
passkeys: None,
core_address: None,
core_addresses: None,
connect_as: None,
server_enabled: default_server_enabled(),
port: default_periphery_port(),
bind_ip: default_periphery_bind_ip(),
root_directory: default_root_directory(),
@@ -426,8 +445,9 @@ impl PeripheryConfig {
passkeys: self.passkeys.as_ref().map(|passkeys| {
passkeys.iter().map(|p| empty_or_redacted(p)).collect()
}),
core_address: self.core_address.clone(),
core_addresses: self.core_addresses.clone(),
connect_as: self.connect_as.clone(),
server_enabled: self.server_enabled,
port: self.port,
bind_ip: self.bind_ip.clone(),
root_directory: self.root_directory.clone(),