switch to external ips
Signed-off-by: Valentyn Faychuk <valy@detee.ltd>
This commit is contained in:
parent
e5cc423e07
commit
331788fb6e
271
Cargo.lock
generated
271
Cargo.lock
generated
@ -115,7 +115,7 @@ dependencies = [
|
|||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"mio",
|
"mio",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
@ -178,7 +178,7 @@ dependencies = [
|
|||||||
"serde_json",
|
"serde_json",
|
||||||
"serde_urlencoded",
|
"serde_urlencoded",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"time",
|
"time",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
@ -1387,14 +1387,38 @@ dependencies = [
|
|||||||
"zeroize",
|
"zeroize",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "darling"
|
||||||
|
version = "0.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858"
|
||||||
|
dependencies = [
|
||||||
|
"darling_core 0.10.2",
|
||||||
|
"darling_macro 0.10.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "darling"
|
name = "darling"
|
||||||
version = "0.20.10"
|
version = "0.20.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
|
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core",
|
"darling_core 0.20.10",
|
||||||
"darling_macro",
|
"darling_macro 0.20.10",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "darling_core"
|
||||||
|
version = "0.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b"
|
||||||
|
dependencies = [
|
||||||
|
"fnv",
|
||||||
|
"ident_case",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"strsim 0.9.3",
|
||||||
|
"syn 1.0.109",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1411,13 +1435,24 @@ dependencies = [
|
|||||||
"syn 2.0.79",
|
"syn 2.0.79",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "darling_macro"
|
||||||
|
version = "0.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72"
|
||||||
|
dependencies = [
|
||||||
|
"darling_core 0.10.2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "darling_macro"
|
name = "darling_macro"
|
||||||
version = "0.20.10"
|
version = "0.20.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
|
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core",
|
"darling_core 0.20.10",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.79",
|
"syn 2.0.79",
|
||||||
]
|
]
|
||||||
@ -1510,6 +1545,31 @@ dependencies = [
|
|||||||
"syn 1.0.109",
|
"syn 1.0.109",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "derive_builder"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0"
|
||||||
|
dependencies = [
|
||||||
|
"darling 0.10.2",
|
||||||
|
"derive_builder_core",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "derive_builder_core"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef"
|
||||||
|
dependencies = [
|
||||||
|
"darling 0.10.2",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "derive_more"
|
name = "derive_more"
|
||||||
version = "0.99.18"
|
version = "0.99.18"
|
||||||
@ -1614,6 +1674,18 @@ dependencies = [
|
|||||||
"syn 2.0.79",
|
"syn 2.0.79",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dns-lookup"
|
||||||
|
version = "1.0.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "53ecafc952c4528d9b51a458d1a8904b81783feff9fde08ab6ed2545ff396872"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"socket2 0.4.10",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "dunce"
|
name = "dunce"
|
||||||
version = "1.0.5"
|
version = "1.0.5"
|
||||||
@ -1682,6 +1754,24 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "endian-type"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "enum-as-inner"
|
||||||
|
version = "0.3.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4"
|
||||||
|
dependencies = [
|
||||||
|
"heck 0.4.1",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 1.0.109",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "enum-iterator"
|
name = "enum-iterator"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@ -2032,6 +2122,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"prost",
|
"prost",
|
||||||
"prost-types",
|
"prost-types",
|
||||||
|
"public-ip",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"rustls 0.23.20",
|
"rustls 0.23.20",
|
||||||
"serde",
|
"serde",
|
||||||
@ -2097,6 +2188,12 @@ dependencies = [
|
|||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "heck"
|
name = "heck"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
@ -2266,7 +2363,7 @@ dependencies = [
|
|||||||
"httpdate",
|
"httpdate",
|
||||||
"itoa",
|
"itoa",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
"tracing",
|
"tracing",
|
||||||
@ -2327,6 +2424,20 @@ dependencies = [
|
|||||||
"tower-service",
|
"tower-service",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hyper-system-resolver"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6eea26c5d0b6ab9d72219f65000af310f042a740926f7b2fa3553e774036e2e7"
|
||||||
|
dependencies = [
|
||||||
|
"derive_builder",
|
||||||
|
"dns-lookup",
|
||||||
|
"hyper 0.14.30",
|
||||||
|
"tokio",
|
||||||
|
"tower-service",
|
||||||
|
"tracing",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hyper-timeout"
|
name = "hyper-timeout"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
@ -2353,7 +2464,7 @@ dependencies = [
|
|||||||
"http-body 1.0.1",
|
"http-body 1.0.1",
|
||||||
"hyper 1.4.1",
|
"hyper 1.4.1",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
"tracing",
|
"tracing",
|
||||||
@ -2388,6 +2499,17 @@ version = "1.0.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "idna"
|
||||||
|
version = "0.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
|
||||||
|
dependencies = [
|
||||||
|
"matches",
|
||||||
|
"unicode-bidi",
|
||||||
|
"unicode-normalization",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.5.0"
|
version = "0.5.0"
|
||||||
@ -2675,6 +2797,12 @@ version = "0.4.22"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "matches"
|
||||||
|
version = "0.1.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "matchit"
|
name = "matchit"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
@ -2773,6 +2901,15 @@ version = "0.10.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
|
checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nibble_vec"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
|
||||||
|
dependencies = [
|
||||||
|
"smallvec",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nix"
|
name = "nix"
|
||||||
version = "0.28.0"
|
version = "0.28.0"
|
||||||
@ -3242,7 +3379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15"
|
checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"heck",
|
"heck 0.5.0",
|
||||||
"itertools 0.13.0",
|
"itertools 0.13.0",
|
||||||
"log",
|
"log",
|
||||||
"multimap",
|
"multimap",
|
||||||
@ -3278,6 +3415,27 @@ dependencies = [
|
|||||||
"prost",
|
"prost",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "public-ip"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7b4c40db5262d93298c363a299f8bc1b3a956a78eecddba3bc0e58b76e2f419a"
|
||||||
|
dependencies = [
|
||||||
|
"dns-lookup",
|
||||||
|
"futures-core",
|
||||||
|
"futures-util",
|
||||||
|
"http 0.2.12",
|
||||||
|
"hyper 0.14.30",
|
||||||
|
"hyper-system-resolver",
|
||||||
|
"pin-project-lite",
|
||||||
|
"thiserror",
|
||||||
|
"tokio",
|
||||||
|
"tracing",
|
||||||
|
"tracing-futures",
|
||||||
|
"trust-dns-client",
|
||||||
|
"trust-dns-proto",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "qstring"
|
name = "qstring"
|
||||||
version = "0.7.2"
|
version = "0.7.2"
|
||||||
@ -3330,7 +3488,7 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"bytes",
|
"bytes",
|
||||||
"libc",
|
"libc",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"tracing",
|
"tracing",
|
||||||
"windows-sys 0.48.0",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
@ -3344,6 +3502,16 @@ dependencies = [
|
|||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "radix_trie"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
|
||||||
|
dependencies = [
|
||||||
|
"endian-type",
|
||||||
|
"nibble_vec",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rand"
|
name = "rand"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
@ -3916,7 +4084,7 @@ version = "2.3.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f"
|
checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling",
|
"darling 0.20.10",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.79",
|
"syn 2.0.79",
|
||||||
@ -3928,7 +4096,7 @@ version = "3.11.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
|
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling",
|
"darling 0.20.10",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn 2.0.79",
|
"syn 2.0.79",
|
||||||
@ -4039,6 +4207,16 @@ version = "1.13.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "socket2"
|
||||||
|
version = "0.4.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "socket2"
|
name = "socket2"
|
||||||
version = "0.5.7"
|
version = "0.5.7"
|
||||||
@ -4243,7 +4421,7 @@ dependencies = [
|
|||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"solana-logger",
|
"solana-logger",
|
||||||
"solana-sdk",
|
"solana-sdk",
|
||||||
"solana-version",
|
"solana-version",
|
||||||
@ -5238,6 +5416,12 @@ version = "0.8.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.9.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
@ -5490,7 +5674,7 @@ dependencies = [
|
|||||||
"parking_lot",
|
"parking_lot",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"tokio-macros",
|
"tokio-macros",
|
||||||
"windows-sys 0.52.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
@ -5613,7 +5797,7 @@ dependencies = [
|
|||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
"pin-project",
|
"pin-project",
|
||||||
"prost",
|
"prost",
|
||||||
"socket2",
|
"socket2 0.5.7",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"tower 0.4.13",
|
"tower 0.4.13",
|
||||||
@ -5782,6 +5966,63 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-futures"
|
||||||
|
version = "0.2.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
|
||||||
|
dependencies = [
|
||||||
|
"futures",
|
||||||
|
"futures-task",
|
||||||
|
"pin-project",
|
||||||
|
"tracing",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "trust-dns-client"
|
||||||
|
version = "0.20.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5b4ef9b9bde0559b78a4abb00339143750085f05e5a453efb7b8bef1061f09dc"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"data-encoding",
|
||||||
|
"futures-channel",
|
||||||
|
"futures-util",
|
||||||
|
"lazy_static",
|
||||||
|
"log",
|
||||||
|
"radix_trie",
|
||||||
|
"rand 0.8.5",
|
||||||
|
"thiserror",
|
||||||
|
"time",
|
||||||
|
"tokio",
|
||||||
|
"trust-dns-proto",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "trust-dns-proto"
|
||||||
|
version = "0.20.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ca94d4e9feb6a181c690c4040d7a24ef34018d8313ac5044a61d21222ae24e31"
|
||||||
|
dependencies = [
|
||||||
|
"async-trait",
|
||||||
|
"cfg-if",
|
||||||
|
"data-encoding",
|
||||||
|
"enum-as-inner",
|
||||||
|
"futures-channel",
|
||||||
|
"futures-io",
|
||||||
|
"futures-util",
|
||||||
|
"idna 0.2.3",
|
||||||
|
"ipnet",
|
||||||
|
"lazy_static",
|
||||||
|
"log",
|
||||||
|
"rand 0.8.5",
|
||||||
|
"smallvec",
|
||||||
|
"thiserror",
|
||||||
|
"tinyvec",
|
||||||
|
"tokio",
|
||||||
|
"url",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "try-lock"
|
name = "try-lock"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
@ -5905,7 +6146,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
|
checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"form_urlencoded",
|
"form_urlencoded",
|
||||||
"idna",
|
"idna 0.5.0",
|
||||||
"percent-encoding",
|
"percent-encoding",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -11,8 +11,10 @@ actix-web = "4.9"
|
|||||||
async-stream = "0.3"
|
async-stream = "0.3"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
dashmap = "6.1"
|
dashmap = "6.1"
|
||||||
|
tonic = "0.12"
|
||||||
prost = "0.13"
|
prost = "0.13"
|
||||||
prost-types = "0.13"
|
prost-types = "0.13"
|
||||||
|
public-ip = "0.2"
|
||||||
rand = "0.8"
|
rand = "0.8"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_with = { version = "3.11", features = ["macros", "base64"] }
|
serde_with = { version = "3.11", features = ["macros", "base64"] }
|
||||||
@ -24,7 +26,6 @@ spl-associated-token-account = "5.0"
|
|||||||
spl-token = "6.0"
|
spl-token = "6.0"
|
||||||
tokio = { version = "1.40", features = ["macros", "rt-multi-thread", "fs"] } # this can be "full"
|
tokio = { version = "1.40", features = ["macros", "rt-multi-thread", "fs"] } # this can be "full"
|
||||||
tokio-stream = { version = "0.1", features = ["sync"] }
|
tokio-stream = { version = "0.1", features = ["sync"] }
|
||||||
tonic = "0.12"
|
|
||||||
# sgx poc dependencies
|
# sgx poc dependencies
|
||||||
rustls = "0.23"
|
rustls = "0.23"
|
||||||
tokio-rustls = "0.26"
|
tokio-rustls = "0.26"
|
||||||
|
@ -7,7 +7,7 @@ RUN mkdir sgx_libs &&\
|
|||||||
|
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
RUN apt update -y && apt install -y jq curl
|
RUN apt update -y && apt install -y jq curl && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY challenge.sh /challenge.sh
|
COPY challenge.sh /challenge.sh
|
||||||
COPY challenge.tar.gz /challenge.tar.gz
|
COPY challenge.tar.gz /challenge.tar.gz
|
||||||
|
@ -5,7 +5,6 @@ use serde_with::{serde_as, TimestampSeconds};
|
|||||||
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
use std::time::{Duration, SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
type IP = String;
|
type IP = String;
|
||||||
pub const LOCALHOST: &str = "localhost";
|
|
||||||
const LOG_PATH: &str = "/host/main/logs";
|
const LOG_PATH: &str = "/host/main/logs";
|
||||||
const LOCAL_INFO_FILE: &str = "/host/main/node_info";
|
const LOCAL_INFO_FILE: &str = "/host/main/node_info";
|
||||||
|
|
||||||
@ -103,16 +102,17 @@ impl NodeInfo {
|
|||||||
/// Multithreaded state, designed to be
|
/// Multithreaded state, designed to be
|
||||||
/// shared everywhere in the code
|
/// shared everywhere in the code
|
||||||
pub struct State {
|
pub struct State {
|
||||||
|
my_ip: String,
|
||||||
nodes: DashMap<IP, NodeInfo>,
|
nodes: DashMap<IP, NodeInfo>,
|
||||||
conns: DashSet<IP>,
|
conns: DashSet<IP>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl State {
|
impl State {
|
||||||
pub fn new_with_localhost() -> Self {
|
pub fn new(my_ip: String) -> Self {
|
||||||
let localhost_info = NodeInfo::load();
|
let nodes = DashMap::new();
|
||||||
let state = Self { nodes: DashMap::new(), conns: DashSet::new() };
|
let my_info = NodeInfo::load();
|
||||||
state.nodes.insert(LOCALHOST.to_string(), localhost_info);
|
nodes.insert(my_ip.clone(), my_info);
|
||||||
state
|
Self { my_ip, nodes, conns: DashSet::new() }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_conn(&self, ip: &str) {
|
pub fn add_conn(&self, ip: &str) {
|
||||||
@ -124,49 +124,67 @@ impl State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn increase_mint_requests(&self) {
|
pub fn increase_mint_requests(&self) {
|
||||||
if let Some(mut localhost_info) = self.nodes.get_mut(LOCALHOST) {
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
localhost_info.mint_requests += 1;
|
my_info.mint_requests += 1;
|
||||||
localhost_info.log(localhost_info.key());
|
my_info.log(my_info.key());
|
||||||
localhost_info.save();
|
my_info.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn increase_mints(&self) {
|
pub fn increase_mints(&self) {
|
||||||
if let Some(mut localhost_info) = self.nodes.get_mut(LOCALHOST) {
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
localhost_info.mints += 1;
|
my_info.mints += 1;
|
||||||
localhost_info.log(localhost_info.key());
|
my_info.log(my_info.key());
|
||||||
localhost_info.save();
|
my_info.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn increase_mratls_conns(&self) {
|
pub fn increase_mratls_conns(&self) {
|
||||||
if let Some(mut localhost_info) = self.nodes.get_mut(LOCALHOST) {
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
localhost_info.mratls_conns += 1;
|
my_info.mratls_conns += 1;
|
||||||
localhost_info.log(localhost_info.key());
|
my_info.log(my_info.key());
|
||||||
localhost_info.save();
|
my_info.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn decrease_mratls_conns(&self) {
|
||||||
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
|
if my_info.mratls_conns > 0 {
|
||||||
|
my_info.mratls_conns -= 1;
|
||||||
|
my_info.log(my_info.key());
|
||||||
|
my_info.save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn increase_disk_attacks(&self) {
|
pub fn increase_disk_attacks(&self) {
|
||||||
if let Some(mut localhost_info) = self.nodes.get_mut(LOCALHOST) {
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
localhost_info.disk_attacks += 1;
|
my_info.disk_attacks += 1;
|
||||||
localhost_info.log(localhost_info.key());
|
my_info.log(my_info.key());
|
||||||
localhost_info.save();
|
my_info.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn increase_net_attacks(&self) {
|
pub fn increase_net_attacks(&self) {
|
||||||
if let Some(mut localhost_info) = self.nodes.get_mut(LOCALHOST) {
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
localhost_info.net_attacks += 1;
|
my_info.net_attacks += 1;
|
||||||
localhost_info.log(localhost_info.key());
|
my_info.log(my_info.key());
|
||||||
localhost_info.save();
|
my_info.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_localhost(&self) -> NodeInfo {
|
pub fn declare_myself_public(&self) {
|
||||||
let mut localhost = self.nodes.get_mut(LOCALHOST).expect("no localhost node");
|
if let Some(mut my_info) = self.nodes.get_mut(&self.my_ip) {
|
||||||
localhost.keepalive = SystemTime::now();
|
my_info.public = true;
|
||||||
localhost.clone()
|
my_info.log(my_info.key());
|
||||||
|
my_info.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_my_info(&self) -> NodeInfo {
|
||||||
|
let mut my_info = self.nodes.get_mut(&self.my_ip).expect("no info for this node");
|
||||||
|
my_info.keepalive = SystemTime::now();
|
||||||
|
my_info.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This returns true if NodeInfo got modified.
|
/// This returns true if NodeInfo got modified.
|
||||||
@ -188,7 +206,7 @@ impl State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// returns a random node that does not have an active connection
|
// returns a random node that does not have an active connection
|
||||||
pub fn get_random_node(&self) -> Option<String> {
|
pub fn get_random_disconnected_node(&self) -> Option<String> {
|
||||||
use rand::{rngs::OsRng, RngCore};
|
use rand::{rngs::OsRng, RngCore};
|
||||||
let len = self.nodes.len();
|
let len = self.nodes.len();
|
||||||
if len == 0 {
|
if len == 0 {
|
||||||
@ -200,7 +218,7 @@ impl State {
|
|||||||
.map(|n| n.key().clone())
|
.map(|n| n.key().clone())
|
||||||
.cycle()
|
.cycle()
|
||||||
.skip(skip)
|
.skip(skip)
|
||||||
.find(|k| !self.conns.contains(k))
|
.find(|ip| ip != &self.my_ip && !self.conns.contains(ip))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn remove_inactive_nodes(&self) {
|
pub fn remove_inactive_nodes(&self) {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use super::challenge::{Keys, NodeUpdate};
|
use super::challenge::{Keys, NodeUpdate};
|
||||||
use crate::{
|
use crate::{
|
||||||
datastore::{State, LOCALHOST},
|
datastore::State,
|
||||||
grpc::challenge::{update_client::UpdateClient, Empty},
|
grpc::challenge::{update_client::UpdateClient, Empty},
|
||||||
};
|
};
|
||||||
use detee_sgx::RaTlsConfig;
|
use detee_sgx::RaTlsConfig;
|
||||||
@ -13,14 +13,20 @@ use tokio_stream::{wrappers::BroadcastStream, StreamExt};
|
|||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct ConnManager {
|
pub struct ConnManager {
|
||||||
|
my_ip: String,
|
||||||
state: Arc<State>,
|
state: Arc<State>,
|
||||||
tx: Sender<NodeUpdate>,
|
tx: Sender<NodeUpdate>,
|
||||||
ratls_config: RaTlsConfig,
|
ratls_config: RaTlsConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ConnManager {
|
impl ConnManager {
|
||||||
pub fn init(state: Arc<State>, ratls_config: RaTlsConfig, tx: Sender<NodeUpdate>) -> Self {
|
pub fn init(
|
||||||
Self { state, ratls_config, tx }
|
my_ip: String,
|
||||||
|
state: Arc<State>,
|
||||||
|
ratls_config: RaTlsConfig,
|
||||||
|
tx: Sender<NodeUpdate>,
|
||||||
|
) -> Self {
|
||||||
|
Self { my_ip, state, ratls_config, tx }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn start_with_node(self, node_ip: String) {
|
pub async fn start_with_node(self, node_ip: String) {
|
||||||
@ -29,10 +35,8 @@ impl ConnManager {
|
|||||||
|
|
||||||
pub async fn start(self) {
|
pub async fn start(self) {
|
||||||
loop {
|
loop {
|
||||||
if let Some(node) = self.state.get_random_node() {
|
if let Some(ip) = self.state.get_random_disconnected_node() {
|
||||||
if node != LOCALHOST {
|
self.connect_wrapper(ip.clone()).await;
|
||||||
self.connect_wrapper(node.clone()).await;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
sleep(Duration::from_secs(3)).await;
|
sleep(Duration::from_secs(3)).await;
|
||||||
}
|
}
|
||||||
@ -96,17 +100,9 @@ impl ConnManager {
|
|||||||
})?;
|
})?;
|
||||||
let mut resp_stream = response.into_inner();
|
let mut resp_stream = response.into_inner();
|
||||||
|
|
||||||
let _ = self.tx.send((LOCALHOST.to_string(), self.state.get_localhost()).into());
|
let _ = self.tx.send((self.my_ip.clone(), self.state.get_my_info()).into());
|
||||||
|
|
||||||
while let Some(mut update) = resp_stream.message().await? {
|
|
||||||
// "localhost" IPs need to be changed to the real IP of the counterpart
|
|
||||||
if update.ip == LOCALHOST {
|
|
||||||
update.ip = node_ip.clone();
|
|
||||||
// since we are connecting TO this server, we have a guarantee that this
|
|
||||||
// server is not behind NAT, so we can set it public
|
|
||||||
update.public = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
while let Some(update) = resp_stream.message().await? {
|
||||||
// update the entire network in case the information is new
|
// update the entire network in case the information is new
|
||||||
if self.state.process_node_update(update.clone().into())
|
if self.state.process_node_update(update.clone().into())
|
||||||
&& self.tx.send(update.clone()).is_err()
|
&& self.tx.send(update.clone()).is_err()
|
||||||
|
@ -129,36 +129,38 @@ impl Update for MyServer {
|
|||||||
&self,
|
&self,
|
||||||
req: Request<Streaming<NodeUpdate>>,
|
req: Request<Streaming<NodeUpdate>>,
|
||||||
) -> Result<Response<Self::GetUpdatesStream>, Status> {
|
) -> Result<Response<Self::GetUpdatesStream>, Status> {
|
||||||
|
// connection info is added in the tower for tls connection and must be present
|
||||||
let conn_info = req.extensions().get::<Arc<ConnInfo>>().unwrap();
|
let conn_info = req.extensions().get::<Arc<ConnInfo>>().unwrap();
|
||||||
self.state.increase_mratls_conns();
|
|
||||||
let remote_ip = conn_info.addr.ip().to_string();
|
let remote_ip = conn_info.addr.ip().to_string();
|
||||||
let tx = self.tx.clone();
|
let tx = self.tx.clone();
|
||||||
let mut rx = self.tx.subscribe();
|
let mut rx = self.tx.subscribe();
|
||||||
let mut inbound = req.into_inner();
|
let mut inbound = req.into_inner();
|
||||||
let ds = self.state.clone();
|
let state = self.state.clone();
|
||||||
|
|
||||||
let stream = async_stream::stream! {
|
let stream = async_stream::stream! {
|
||||||
let full_update_list: Vec<NodeUpdate> = ds.get_node_list().into_iter().map(Into::<NodeUpdate>::into).collect();
|
state.declare_myself_public();
|
||||||
|
state.increase_mratls_conns();
|
||||||
|
|
||||||
|
let full_update_list: Vec<NodeUpdate> = state.get_node_list().into_iter().map(Into::<NodeUpdate>::into).collect();
|
||||||
for update in full_update_list {
|
for update in full_update_list {
|
||||||
yield Ok(update);
|
yield Ok(update);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let error_status: Status;
|
||||||
loop {
|
loop {
|
||||||
tokio::select! {
|
tokio::select! {
|
||||||
Some(msg) = inbound.next() => {
|
Some(msg) = inbound.next() => {
|
||||||
match msg {
|
match msg {
|
||||||
Ok(mut update) => {
|
Ok(update) => {
|
||||||
if update.ip == "localhost" {
|
if update.ip != remote_ip {
|
||||||
update.ip = remote_ip.clone();
|
println!("node {remote_ip} is forwarding us the update for {}", update.ip);
|
||||||
// note that we don't set this node online,
|
|
||||||
// as it can be behind NAT
|
|
||||||
}
|
}
|
||||||
if update.ip != "127.0.0.1" && ds.process_node_update(update.clone().into()) && tx.send(update.clone()).is_err() {
|
if state.process_node_update(update.clone().into()) && tx.send(update.clone()).is_err() {
|
||||||
println!("tokio broadcast receivers had an issue consuming the channel");
|
println!("tokio broadcast receivers had an issue consuming the channel");
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
yield Err(Status::internal(format!("Error receiving client stream: {}", e)));
|
error_status = Status::internal(format!("Error receiving client stream: {}", e));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,13 +169,14 @@ impl Update for MyServer {
|
|||||||
yield Ok(update);
|
yield Ok(update);
|
||||||
// disconnect client if too many connections are active
|
// disconnect client if too many connections are active
|
||||||
if tx.receiver_count() > 9 {
|
if tx.receiver_count() > 9 {
|
||||||
yield Err(Status::internal("Already have too many clients. Connect to another server."));
|
error_status = Status::internal("Already have too many clients. Connect to another server.");
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
yield Err(error_status);
|
||||||
|
state.decrease_mratls_conns();
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(Response::new(Box::pin(stream) as Self::GetUpdatesStream))
|
Ok(Response::new(Box::pin(stream) as Self::GetUpdatesStream))
|
||||||
|
33
src/main.rs
33
src/main.rs
@ -6,14 +6,14 @@ mod solana;
|
|||||||
|
|
||||||
use crate::persistence::SealError;
|
use crate::persistence::SealError;
|
||||||
use crate::{
|
use crate::{
|
||||||
datastore::LOCALHOST, grpc::challenge::NodeUpdate, persistence::KeysFile,
|
grpc::challenge::NodeUpdate, persistence::KeysFile, persistence::SealedFile, solana::SolClient,
|
||||||
persistence::SealedFile, solana::SolClient,
|
|
||||||
};
|
};
|
||||||
use datastore::State;
|
use datastore::State;
|
||||||
use detee_sgx::{InstanceMeasurement, RaTlsConfig};
|
use detee_sgx::{InstanceMeasurement, RaTlsConfig};
|
||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::{BufRead, BufReader},
|
io::{BufRead, BufReader},
|
||||||
|
io::{Error, ErrorKind},
|
||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
use tokio::{
|
use tokio::{
|
||||||
@ -26,10 +26,16 @@ const INIT_NODES_FILE: &str = "/host/detee_challenge_nodes";
|
|||||||
const KEYS_FILE: &str = "/host/main/TRY_TO_HACK_THIS";
|
const KEYS_FILE: &str = "/host/main/TRY_TO_HACK_THIS";
|
||||||
const MAX_CONNECTIONS: usize = 3;
|
const MAX_CONNECTIONS: usize = 3;
|
||||||
|
|
||||||
pub async fn localhost_cron(state: Arc<State>, tx: Sender<NodeUpdate>) {
|
async fn resolve_my_ip() -> Result<String, Error> {
|
||||||
|
let err = "Can't resolve my external IP, try again";
|
||||||
|
let ip = public_ip::addr_v4().await.ok_or(Error::new(ErrorKind::Other, err))?;
|
||||||
|
Ok(format!("{}", ip))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn heartbeat_cron(my_ip: String, state: Arc<State>, tx: Sender<NodeUpdate>) {
|
||||||
loop {
|
loop {
|
||||||
sleep(Duration::from_secs(60)).await;
|
sleep(Duration::from_secs(60)).await;
|
||||||
let _ = tx.send((LOCALHOST.to_string(), state.get_localhost()).into());
|
let _ = tx.send((my_ip.clone(), state.get_my_info()).into());
|
||||||
state.remove_inactive_nodes();
|
state.remove_inactive_nodes();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,14 +109,15 @@ async fn main() {
|
|||||||
let ratls_config = RaTlsConfig::new()
|
let ratls_config = RaTlsConfig::new()
|
||||||
.allow_instance_measurement(InstanceMeasurement::new().with_current_mrenclave().unwrap());
|
.allow_instance_measurement(InstanceMeasurement::new().with_current_mrenclave().unwrap());
|
||||||
|
|
||||||
let state = Arc::new(State::new_with_localhost());
|
let my_ip = resolve_my_ip().await.unwrap();
|
||||||
|
let state = Arc::new(State::new(my_ip.clone()));
|
||||||
let sol_client = Arc::new(get_sol_client(state.clone(), ratls_config.clone()).await);
|
let sol_client = Arc::new(get_sol_client(state.clone(), ratls_config.clone()).await);
|
||||||
|
|
||||||
let (tx, _) = broadcast::channel(500);
|
let (tx, _) = broadcast::channel(500);
|
||||||
|
|
||||||
let mut tasks = JoinSet::new();
|
let mut tasks = JoinSet::new();
|
||||||
|
|
||||||
tasks.spawn(localhost_cron(state.clone(), tx.clone()));
|
tasks.spawn(heartbeat_cron(my_ip.clone(), state.clone(), tx.clone()));
|
||||||
tasks.spawn(http_server::init(state.clone(), sol_client.clone()));
|
tasks.spawn(http_server::init(state.clone(), sol_client.clone()));
|
||||||
tasks.spawn(
|
tasks.spawn(
|
||||||
grpc::server::MyServer::init(
|
grpc::server::MyServer::init(
|
||||||
@ -125,7 +132,12 @@ async fn main() {
|
|||||||
if let Ok(input) = std::fs::read_to_string(INIT_NODES_FILE) {
|
if let Ok(input) = std::fs::read_to_string(INIT_NODES_FILE) {
|
||||||
for line in input.lines() {
|
for line in input.lines() {
|
||||||
tasks.spawn(
|
tasks.spawn(
|
||||||
grpc::client::ConnManager::init(state.clone(), ratls_config.clone(), tx.clone())
|
grpc::client::ConnManager::init(
|
||||||
|
my_ip.clone(),
|
||||||
|
state.clone(),
|
||||||
|
ratls_config.clone(),
|
||||||
|
tx.clone(),
|
||||||
|
)
|
||||||
.start_with_node(line.to_string()),
|
.start_with_node(line.to_string()),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -133,7 +145,12 @@ async fn main() {
|
|||||||
|
|
||||||
for _ in 0..MAX_CONNECTIONS {
|
for _ in 0..MAX_CONNECTIONS {
|
||||||
tasks.spawn(
|
tasks.spawn(
|
||||||
grpc::client::ConnManager::init(state.clone(), ratls_config.clone(), tx.clone())
|
grpc::client::ConnManager::init(
|
||||||
|
my_ip.clone(),
|
||||||
|
state.clone(),
|
||||||
|
ratls_config.clone(),
|
||||||
|
tx.clone(),
|
||||||
|
)
|
||||||
.start(),
|
.start(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user