proxy
This commit is contained in:
parent
46e5fdb7dc
commit
71857ebbce
3
.cargo/config.toml
Normal file
3
.cargo/config.toml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[target.x86_64-unknown-linux-gnu.env]
|
||||||
|
OPENSSL_LIB_DIR="/usr/lib/x86_64-linux-gnu"
|
||||||
|
OPENSSL_DIR="/usr"
|
||||||
505
Cargo.lock
generated
505
Cargo.lock
generated
@ -17,18 +17,71 @@ version = "1.0.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anyhow"
|
name = "anyhow"
|
||||||
version = "1.0.86"
|
version = "1.0.86"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
|
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "as-any"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5b8a30a44e99a1c83ccb2a6298c563c888952a1c9134953db26876528f84c93a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "async-trait"
|
||||||
|
version = "0.1.81"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.1.0"
|
version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aws-lc-rs"
|
||||||
|
version = "1.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4ae74d9bd0a7530e8afd1770739ad34b36838829d6ad61818f9230f683f5ad77"
|
||||||
|
dependencies = [
|
||||||
|
"aws-lc-sys",
|
||||||
|
"mirai-annotations",
|
||||||
|
"paste",
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aws-lc-sys"
|
||||||
|
version = "0.20.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0f0e249228c6ad2d240c2dc94b714d711629d52bad946075d8e9b2f5391f0703"
|
||||||
|
dependencies = [
|
||||||
|
"bindgen",
|
||||||
|
"cc",
|
||||||
|
"cmake",
|
||||||
|
"dunce",
|
||||||
|
"fs_extra",
|
||||||
|
"libc",
|
||||||
|
"paste",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "backtrace"
|
name = "backtrace"
|
||||||
version = "0.3.69"
|
version = "0.3.69"
|
||||||
@ -50,6 +103,29 @@ version = "0.21.3"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53"
|
checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bindgen"
|
||||||
|
version = "0.69.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags 2.4.0",
|
||||||
|
"cexpr",
|
||||||
|
"clang-sys",
|
||||||
|
"itertools",
|
||||||
|
"lazy_static",
|
||||||
|
"lazycell",
|
||||||
|
"log",
|
||||||
|
"prettyplease",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"regex",
|
||||||
|
"rustc-hash",
|
||||||
|
"shlex",
|
||||||
|
"syn",
|
||||||
|
"which",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "1.3.2"
|
version = "1.3.2"
|
||||||
@ -68,6 +144,12 @@ version = "3.13.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
|
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "byteorder"
|
||||||
|
version = "1.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytes"
|
name = "bytes"
|
||||||
version = "1.4.0"
|
version = "1.4.0"
|
||||||
@ -80,15 +162,45 @@ version = "1.0.83"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
|
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"jobserver",
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cexpr"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
|
||||||
|
dependencies = [
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clang-sys"
|
||||||
|
version = "1.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
|
||||||
|
dependencies = [
|
||||||
|
"glob",
|
||||||
|
"libc",
|
||||||
|
"libloading",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cmake"
|
||||||
|
version = "0.1.50"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation"
|
name = "core-foundation"
|
||||||
version = "0.9.3"
|
version = "0.9.3"
|
||||||
@ -105,6 +217,12 @@ version = "0.8.4"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dunce"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
version = "1.9.0"
|
version = "1.9.0"
|
||||||
@ -128,7 +246,7 @@ checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"errno-dragonfly",
|
"errno-dragonfly",
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -178,46 +296,93 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-channel"
|
name = "fs_extra"
|
||||||
version = "0.3.28"
|
version = "1.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
|
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures"
|
||||||
|
version = "0.3.30"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
|
||||||
|
dependencies = [
|
||||||
|
"futures-channel",
|
||||||
|
"futures-core",
|
||||||
|
"futures-executor",
|
||||||
|
"futures-io",
|
||||||
|
"futures-sink",
|
||||||
|
"futures-task",
|
||||||
|
"futures-util",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-channel"
|
||||||
|
version = "0.3.30"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
"futures-sink",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-core"
|
name = "futures-core"
|
||||||
version = "0.3.28"
|
version = "0.3.30"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
|
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-executor"
|
||||||
|
version = "0.3.30"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
|
||||||
|
dependencies = [
|
||||||
|
"futures-core",
|
||||||
|
"futures-task",
|
||||||
|
"futures-util",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-io"
|
name = "futures-io"
|
||||||
version = "0.3.28"
|
version = "0.3.30"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
|
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-macro"
|
||||||
|
version = "0.3.30"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-sink"
|
name = "futures-sink"
|
||||||
version = "0.3.28"
|
version = "0.3.30"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
|
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-task"
|
name = "futures-task"
|
||||||
version = "0.3.28"
|
version = "0.3.30"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
|
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-util"
|
name = "futures-util"
|
||||||
version = "0.3.28"
|
version = "0.3.30"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
|
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-io",
|
"futures-io",
|
||||||
|
"futures-macro",
|
||||||
|
"futures-sink",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
"memchr",
|
"memchr",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
@ -225,12 +390,29 @@ dependencies = [
|
|||||||
"slab",
|
"slab",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.2.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gimli"
|
name = "gimli"
|
||||||
version = "0.28.0"
|
version = "0.28.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "glob"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.3.21"
|
version = "0.3.21"
|
||||||
@ -262,6 +444,15 @@ version = "0.3.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
|
checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "home"
|
||||||
|
version = "0.5.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys 0.52.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "http"
|
name = "http"
|
||||||
version = "0.2.9"
|
version = "0.2.9"
|
||||||
@ -359,12 +550,30 @@ version = "2.8.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
|
checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.12.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.9"
|
version = "1.0.9"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "jobserver"
|
||||||
|
version = "0.1.32"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "js-sys"
|
name = "js-sys"
|
||||||
version = "0.3.64"
|
version = "0.3.64"
|
||||||
@ -381,10 +590,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "lazycell"
|
||||||
version = "0.2.147"
|
version = "1.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
|
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.155"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libloading"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "linux-raw-sys"
|
name = "linux-raw-sys"
|
||||||
@ -404,9 +629,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "log"
|
name = "log"
|
||||||
version = "0.4.20"
|
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 = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
@ -420,6 +645,12 @@ version = "0.3.17"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "minimal-lexical"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "miniz_oxide"
|
name = "miniz_oxide"
|
||||||
version = "0.7.1"
|
version = "0.7.1"
|
||||||
@ -437,9 +668,15 @@ checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"wasi",
|
"wasi",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mirai-annotations"
|
||||||
|
version = "1.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c9be0862c1b3f26a88803c4a49de6889c10e608b3ee9344e6ef5b45fb37ad3d1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "native-tls"
|
name = "native-tls"
|
||||||
version = "0.2.11"
|
version = "0.2.11"
|
||||||
@ -458,6 +695,16 @@ dependencies = [
|
|||||||
"tempfile",
|
"tempfile",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nom"
|
||||||
|
version = "7.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"minimal-lexical",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num_cpus"
|
name = "num_cpus"
|
||||||
version = "1.16.0"
|
version = "1.16.0"
|
||||||
@ -550,6 +797,12 @@ dependencies = [
|
|||||||
"windows-targets 0.52.6",
|
"windows-targets 0.52.6",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "paste"
|
||||||
|
version = "1.0.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "percent-encoding"
|
name = "percent-encoding"
|
||||||
version = "2.3.0"
|
version = "2.3.0"
|
||||||
@ -574,6 +827,16 @@ version = "0.3.27"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
|
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prettyplease"
|
||||||
|
version = "0.2.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.86"
|
version = "1.0.86"
|
||||||
@ -610,6 +873,35 @@ dependencies = [
|
|||||||
"bitflags 2.4.0",
|
"bitflags 2.4.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.10.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "reqwest"
|
name = "reqwest"
|
||||||
version = "0.11.20"
|
version = "0.11.20"
|
||||||
@ -648,12 +940,33 @@ dependencies = [
|
|||||||
"winreg",
|
"winreg",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ring"
|
||||||
|
version = "0.17.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"cfg-if",
|
||||||
|
"getrandom",
|
||||||
|
"libc",
|
||||||
|
"spin",
|
||||||
|
"untrusted",
|
||||||
|
"windows-sys 0.52.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustc-demangle"
|
name = "rustc-demangle"
|
||||||
version = "0.1.23"
|
version = "0.1.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustc-hash"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustix"
|
name = "rustix"
|
||||||
version = "0.38.11"
|
version = "0.38.11"
|
||||||
@ -664,7 +977,40 @@ dependencies = [
|
|||||||
"errno",
|
"errno",
|
||||||
"libc",
|
"libc",
|
||||||
"linux-raw-sys",
|
"linux-raw-sys",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustls"
|
||||||
|
version = "0.23.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044"
|
||||||
|
dependencies = [
|
||||||
|
"aws-lc-rs",
|
||||||
|
"log",
|
||||||
|
"once_cell",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"rustls-webpki",
|
||||||
|
"subtle",
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustls-pki-types"
|
||||||
|
version = "1.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustls-webpki"
|
||||||
|
version = "0.102.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e"
|
||||||
|
dependencies = [
|
||||||
|
"aws-lc-rs",
|
||||||
|
"ring",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"untrusted",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -679,7 +1025,7 @@ version = "0.1.22"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
|
checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -755,6 +1101,12 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "shlex"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "signal-hook-registry"
|
name = "signal-hook-registry"
|
||||||
version = "1.4.2"
|
version = "1.4.2"
|
||||||
@ -796,9 +1148,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
|
checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "socks5-impl"
|
||||||
|
version = "0.5.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "922f9d794c286fb5821e900f0cc73cd38d74049508dbe4f17c758b10d387a2bc"
|
||||||
|
dependencies = [
|
||||||
|
"as-any",
|
||||||
|
"async-trait",
|
||||||
|
"byteorder",
|
||||||
|
"bytes",
|
||||||
|
"percent-encoding",
|
||||||
|
"serde",
|
||||||
|
"thiserror",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spin"
|
||||||
|
version = "0.9.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "subtle"
|
||||||
|
version = "2.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.72"
|
version = "2.0.72"
|
||||||
@ -820,7 +1200,7 @@ dependencies = [
|
|||||||
"fastrand",
|
"fastrand",
|
||||||
"redox_syscall 0.3.5",
|
"redox_syscall 0.3.5",
|
||||||
"rustix",
|
"rustix",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -874,7 +1254,7 @@ dependencies = [
|
|||||||
"signal-hook-registry",
|
"signal-hook-registry",
|
||||||
"socket2 0.5.3",
|
"socket2 0.5.3",
|
||||||
"tokio-macros",
|
"tokio-macros",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -898,6 +1278,17 @@ dependencies = [
|
|||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tokio-rustls"
|
||||||
|
version = "0.26.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4"
|
||||||
|
dependencies = [
|
||||||
|
"rustls",
|
||||||
|
"rustls-pki-types",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio-socks"
|
name = "tokio-socks"
|
||||||
version = "0.5.1"
|
version = "0.5.1"
|
||||||
@ -977,6 +1368,12 @@ dependencies = [
|
|||||||
"tinyvec",
|
"tinyvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "untrusted"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "url"
|
name = "url"
|
||||||
version = "2.4.1"
|
version = "2.4.1"
|
||||||
@ -1090,10 +1487,37 @@ name = "web_test"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"futures",
|
||||||
|
"log",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
|
"rustls-pki-types",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"socks5-impl",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"tokio-rustls",
|
||||||
|
"webpki-roots",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "webpki-roots"
|
||||||
|
version = "0.26.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd"
|
||||||
|
dependencies = [
|
||||||
|
"rustls-pki-types",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "which"
|
||||||
|
version = "4.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
"home",
|
||||||
|
"once_cell",
|
||||||
|
"rustix",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1127,6 +1551,15 @@ dependencies = [
|
|||||||
"windows-targets 0.48.5",
|
"windows-targets 0.48.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-sys"
|
||||||
|
version = "0.52.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets 0.52.6",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-targets"
|
name = "windows-targets"
|
||||||
version = "0.48.5"
|
version = "0.48.5"
|
||||||
@ -1255,5 +1688,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
|
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"windows-sys",
|
"windows-sys 0.48.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zeroize"
|
||||||
|
version = "1.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
|
||||||
|
dependencies = [
|
||||||
|
"zeroize_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zeroize_derive"
|
||||||
|
version = "1.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
]
|
]
|
||||||
|
|||||||
@ -11,3 +11,9 @@ reqwest = { version = "0.11", features = ["blocking", "json", "socks"] }
|
|||||||
anyhow = "1"
|
anyhow = "1"
|
||||||
serde = {version = "1.0.204", features = ["derive"]}
|
serde = {version = "1.0.204", features = ["derive"]}
|
||||||
serde_json = "1.0.121"
|
serde_json = "1.0.121"
|
||||||
|
socks5-impl = "0"
|
||||||
|
rustls-pki-types = "1.7.0"
|
||||||
|
tokio-rustls = "0.26.0"
|
||||||
|
webpki-roots = "0.26.3"
|
||||||
|
log = "0.4.22"
|
||||||
|
futures = "0.3"
|
||||||
|
|||||||
5
Cross.toml
Normal file
5
Cross.toml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[target.x86_64-unknown-linux-musl]
|
||||||
|
pre-build = [
|
||||||
|
"apt update",
|
||||||
|
"apt install --assume-yes -y pkg-config libssl-dev",
|
||||||
|
]
|
||||||
@ -608,5 +608,10 @@
|
|||||||
"name": "coal_zx.json",
|
"name": "coal_zx.json",
|
||||||
"bind": "127.0.0.1:9503",
|
"bind": "127.0.0.1:9503",
|
||||||
"file": "coal_zx.json"
|
"file": "coal_zx.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dmit-vpc-kr",
|
||||||
|
"bind": "192.168.4.4:29365",
|
||||||
|
"file": "dmit-vpc-kr"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
902
output-home.json
Normal file
902
output-home.json
Normal file
@ -0,0 +1,902 @@
|
|||||||
|
[
|
||||||
|
[
|
||||||
|
"yxvm-hk-vol-5d",
|
||||||
|
{
|
||||||
|
"name": "yxvm-hk-vol-5d",
|
||||||
|
"latency": 93.4,
|
||||||
|
"variance": 13.64,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-hk-vol-5d.json",
|
||||||
|
{
|
||||||
|
"name": "yxvm-hk-vol-5d.json",
|
||||||
|
"latency": 95.60000000000001,
|
||||||
|
"variance": 35.24000000000005,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm_hk_hybird_5d",
|
||||||
|
{
|
||||||
|
"name": "yxvm_hk_hybird_5d",
|
||||||
|
"latency": 99.39999999999999,
|
||||||
|
"variance": 16.84,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-0.json",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-0.json",
|
||||||
|
"latency": 101.6,
|
||||||
|
"variance": 31.240000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-0",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-0",
|
||||||
|
"latency": 102.6,
|
||||||
|
"variance": 21.84000000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm_hk_vol",
|
||||||
|
{
|
||||||
|
"name": "yxvm_hk_vol",
|
||||||
|
"latency": 102.60000000000001,
|
||||||
|
"variance": 50.44,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm_hk_hybird_5d.json",
|
||||||
|
{
|
||||||
|
"name": "yxvm_hk_hybird_5d.json",
|
||||||
|
"latency": 103.4,
|
||||||
|
"variance": 130.84000000000003,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ggy-gg-old",
|
||||||
|
{
|
||||||
|
"name": "ggy-gg-old",
|
||||||
|
"latency": 103.7,
|
||||||
|
"variance": 27.610000000000007,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm_hk_vol.json",
|
||||||
|
{
|
||||||
|
"name": "yxvm_hk_vol.json",
|
||||||
|
"latency": 103.79999999999998,
|
||||||
|
"variance": 33.959999999999994,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-hybird-10d",
|
||||||
|
{
|
||||||
|
"name": "yxvm-hybird-10d",
|
||||||
|
"latency": 104.3,
|
||||||
|
"variance": 43.41000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ak-gz-nat-iepl.json",
|
||||||
|
{
|
||||||
|
"name": "ak-gz-nat-iepl.json",
|
||||||
|
"latency": 105.10000000000001,
|
||||||
|
"variance": 32.89,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ak-szhk",
|
||||||
|
{
|
||||||
|
"name": "ak-szhk",
|
||||||
|
"latency": 105.8,
|
||||||
|
"variance": 48.96000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ggy-gg",
|
||||||
|
{
|
||||||
|
"name": "ggy-gg",
|
||||||
|
"latency": 106.4,
|
||||||
|
"variance": 16.44,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ipraft-hk-pnac",
|
||||||
|
{
|
||||||
|
"name": "ipraft-hk-pnac",
|
||||||
|
"latency": 106.5,
|
||||||
|
"variance": 26.249999999999993,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"pnac-333",
|
||||||
|
{
|
||||||
|
"name": "pnac-333",
|
||||||
|
"latency": 106.5,
|
||||||
|
"variance": 7.25,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ipraft_hk_pnac.json",
|
||||||
|
{
|
||||||
|
"name": "ipraft_hk_pnac.json",
|
||||||
|
"latency": 107.6,
|
||||||
|
"variance": 31.439999999999987,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-hybird.json",
|
||||||
|
{
|
||||||
|
"name": "yxvm-hybird.json",
|
||||||
|
"latency": 107.8,
|
||||||
|
"variance": 79.56000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"pnac333.json",
|
||||||
|
{
|
||||||
|
"name": "pnac333.json",
|
||||||
|
"latency": 108.30000000000001,
|
||||||
|
"variance": 16.210000000000004,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal_hk_pro_year",
|
||||||
|
{
|
||||||
|
"name": "coal_hk_pro_year",
|
||||||
|
"latency": 108.5,
|
||||||
|
"variance": 1010.65,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-1.json",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-1.json",
|
||||||
|
"latency": 109.3,
|
||||||
|
"variance": 113.21,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"pnac-800",
|
||||||
|
{
|
||||||
|
"name": "pnac-800",
|
||||||
|
"latency": 110.89999999999999,
|
||||||
|
"variance": 21.289999999999967,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bestvm_hk_pnac.json",
|
||||||
|
{
|
||||||
|
"name": "bestvm_hk_pnac.json",
|
||||||
|
"latency": 111.6,
|
||||||
|
"variance": 48.24000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal_hk_pro_year.json",
|
||||||
|
{
|
||||||
|
"name": "coal_hk_pro_year.json",
|
||||||
|
"latency": 112.8,
|
||||||
|
"variance": 1036.9599999999998,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"pnac800.json",
|
||||||
|
{
|
||||||
|
"name": "pnac800.json",
|
||||||
|
"latency": 113.0,
|
||||||
|
"variance": 23.4,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-iplc-hk1.json",
|
||||||
|
{
|
||||||
|
"name": "coal-iplc-hk1.json",
|
||||||
|
"latency": 119.2,
|
||||||
|
"variance": 12.359999999999989,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-iplc-hk2.json",
|
||||||
|
{
|
||||||
|
"name": "coal-iplc-hk2.json",
|
||||||
|
"latency": 119.3,
|
||||||
|
"variance": 43.41000000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bestvm_hk_pnac",
|
||||||
|
{
|
||||||
|
"name": "bestvm_hk_pnac",
|
||||||
|
"latency": 122.1,
|
||||||
|
"variance": 454.09000000000003,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-iplc-hk2",
|
||||||
|
{
|
||||||
|
"name": "coal-iplc-hk2",
|
||||||
|
"latency": 122.1,
|
||||||
|
"variance": 69.49,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-iplc-hk1",
|
||||||
|
{
|
||||||
|
"name": "coal-iplc-hk1",
|
||||||
|
"latency": 122.39999999999999,
|
||||||
|
"variance": 10.840000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-1_cd",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-1_cd",
|
||||||
|
"latency": 125.4,
|
||||||
|
"variance": 41.64,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-1_cd.json",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-1_cd.json",
|
||||||
|
"latency": 125.5,
|
||||||
|
"variance": 27.050000000000004,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-0_cd.json",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-0_cd.json",
|
||||||
|
"latency": 127.6,
|
||||||
|
"variance": 178.04000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-1",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-1",
|
||||||
|
"latency": 129.4,
|
||||||
|
"variance": 4999.84,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"vmshell_hk_36",
|
||||||
|
{
|
||||||
|
"name": "vmshell_hk_36",
|
||||||
|
"latency": 131.1,
|
||||||
|
"variance": 36.29000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bage-hk.json",
|
||||||
|
{
|
||||||
|
"name": "bage-hk.json",
|
||||||
|
"latency": 134.10000000000002,
|
||||||
|
"variance": 68.89000000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bage-hk",
|
||||||
|
{
|
||||||
|
"name": "bage-hk",
|
||||||
|
"latency": 134.89999999999998,
|
||||||
|
"variance": 58.09000000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"dog-hk-300",
|
||||||
|
{
|
||||||
|
"name": "dog-hk-300",
|
||||||
|
"latency": 136.1,
|
||||||
|
"variance": 5.490000000000009,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"peng_eb_big.json",
|
||||||
|
{
|
||||||
|
"name": "peng_eb_big.json",
|
||||||
|
"latency": 138.8,
|
||||||
|
"variance": 133.35999999999999,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"dv-hk-plus.json",
|
||||||
|
{
|
||||||
|
"name": "dv-hk-plus.json",
|
||||||
|
"latency": 140.39999999999998,
|
||||||
|
"variance": 1616.24,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"hostyun-hk",
|
||||||
|
{
|
||||||
|
"name": "hostyun-hk",
|
||||||
|
"latency": 141.89999999999998,
|
||||||
|
"variance": 38.890000000000015,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"dv_273.json",
|
||||||
|
{
|
||||||
|
"name": "dv_273.json",
|
||||||
|
"latency": 142.4,
|
||||||
|
"variance": 223.84000000000006,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"dv-hk-plus",
|
||||||
|
{
|
||||||
|
"name": "dv-hk-plus",
|
||||||
|
"latency": 143.2,
|
||||||
|
"variance": 1478.7599999999998,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"miao-hk-br",
|
||||||
|
{
|
||||||
|
"name": "miao-hk-br",
|
||||||
|
"latency": 143.7,
|
||||||
|
"variance": 539.01,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"miao_hk.json",
|
||||||
|
{
|
||||||
|
"name": "miao_hk.json",
|
||||||
|
"latency": 145.60000000000002,
|
||||||
|
"variance": 211.8400000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"wawo-hk-one",
|
||||||
|
{
|
||||||
|
"name": "wawo-hk-one",
|
||||||
|
"latency": 145.9,
|
||||||
|
"variance": 234.08999999999992,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"gcp-hk",
|
||||||
|
{
|
||||||
|
"name": "gcp-hk",
|
||||||
|
"latency": 149.8,
|
||||||
|
"variance": 2060.1600000000003,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"happy-eb",
|
||||||
|
{
|
||||||
|
"name": "happy-eb",
|
||||||
|
"latency": 157.9,
|
||||||
|
"variance": 2038.6900000000005,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"28kvm-hk-0_cd",
|
||||||
|
{
|
||||||
|
"name": "28kvm-hk-0_cd",
|
||||||
|
"latency": 158.00000000000003,
|
||||||
|
"variance": 6111.199999999999,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"gcp-hk.json",
|
||||||
|
{
|
||||||
|
"name": "gcp-hk.json",
|
||||||
|
"latency": 162.3,
|
||||||
|
"variance": 2169.4100000000003,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"hostyun-hk.json",
|
||||||
|
{
|
||||||
|
"name": "hostyun-hk.json",
|
||||||
|
"latency": 164.4,
|
||||||
|
"variance": 2728.44,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"vmshell_hk_36.json",
|
||||||
|
{
|
||||||
|
"name": "vmshell_hk_36.json",
|
||||||
|
"latency": 166.2,
|
||||||
|
"variance": 3099.7599999999993,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"dog-hk-300.json",
|
||||||
|
{
|
||||||
|
"name": "dog-hk-300.json",
|
||||||
|
"latency": 170.3,
|
||||||
|
"variance": 3079.0099999999998,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ggy-gg-old-cd",
|
||||||
|
{
|
||||||
|
"name": "ggy-gg-old-cd",
|
||||||
|
"latency": 172.49999999999997,
|
||||||
|
"variance": 770.8500000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bage-jp",
|
||||||
|
{
|
||||||
|
"name": "bage-jp",
|
||||||
|
"latency": 181.3,
|
||||||
|
"variance": 2947.6100000000006,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"wawo-hk-one.json",
|
||||||
|
{
|
||||||
|
"name": "wawo-hk-one.json",
|
||||||
|
"latency": 183.5,
|
||||||
|
"variance": 2686.05,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"sharon-jp-1.json",
|
||||||
|
{
|
||||||
|
"name": "sharon-jp-1.json",
|
||||||
|
"latency": 190.60000000000002,
|
||||||
|
"variance": 34.84,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm_vol.json",
|
||||||
|
{
|
||||||
|
"name": "yxvm_vol.json",
|
||||||
|
"latency": 197.4,
|
||||||
|
"variance": 66.43999999999997,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"lisa-sg-hk-vol-3\u5200",
|
||||||
|
{
|
||||||
|
"name": "lisa-sg-hk-vol-3\u5200",
|
||||||
|
"latency": 198.9,
|
||||||
|
"variance": 3212.8900000000003,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-sg-hybird.json",
|
||||||
|
{
|
||||||
|
"name": "yxvm-sg-hybird.json",
|
||||||
|
"latency": 206.7,
|
||||||
|
"variance": 187.60999999999996,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-sg-hybird",
|
||||||
|
{
|
||||||
|
"name": "yxvm-sg-hybird",
|
||||||
|
"latency": 208.79999999999998,
|
||||||
|
"variance": 25.759999999999952,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"sharon-jp-1",
|
||||||
|
{
|
||||||
|
"name": "sharon-jp-1",
|
||||||
|
"latency": 223.5,
|
||||||
|
"variance": 4306.450000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-sg-vol",
|
||||||
|
{
|
||||||
|
"name": "yxvm-sg-vol",
|
||||||
|
"latency": 227.79999999999995,
|
||||||
|
"variance": 5668.36,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"miao-sg-v6",
|
||||||
|
{
|
||||||
|
"name": "miao-sg-v6",
|
||||||
|
"latency": 228.2,
|
||||||
|
"variance": 21121.96,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bv-kr-12.json",
|
||||||
|
{
|
||||||
|
"name": "bv-kr-12.json",
|
||||||
|
"latency": 234.4,
|
||||||
|
"variance": 5773.840000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bv-sg-opt",
|
||||||
|
{
|
||||||
|
"name": "bv-sg-opt",
|
||||||
|
"latency": 242.5,
|
||||||
|
"variance": 29974.25,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bv-kr-24.json",
|
||||||
|
{
|
||||||
|
"name": "bv-kr-24.json",
|
||||||
|
"latency": 244.39999999999998,
|
||||||
|
"variance": 5697.040000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"yxvm-jp-5d",
|
||||||
|
{
|
||||||
|
"name": "yxvm-jp-5d",
|
||||||
|
"latency": 286.79999999999995,
|
||||||
|
"variance": 9122.56,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bigchick_long.json",
|
||||||
|
{
|
||||||
|
"name": "bigchick_long.json",
|
||||||
|
"latency": 291.9,
|
||||||
|
"variance": 3207.2899999999995,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"wepc-jp.json",
|
||||||
|
{
|
||||||
|
"name": "wepc-jp.json",
|
||||||
|
"latency": 311.9,
|
||||||
|
"variance": 10490.689999999999,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"pqs_hinet_static.json",
|
||||||
|
{
|
||||||
|
"name": "pqs_hinet_static.json",
|
||||||
|
"latency": 327.1,
|
||||||
|
"variance": 23719.489999999998,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"pqs_hinet_55.json",
|
||||||
|
{
|
||||||
|
"name": "pqs_hinet_55.json",
|
||||||
|
"latency": 342.9,
|
||||||
|
"variance": 30642.690000000002,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ak-mo.json",
|
||||||
|
{
|
||||||
|
"name": "ak-mo.json",
|
||||||
|
"latency": 351.2,
|
||||||
|
"variance": 44675.159999999996,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal_gz_nat.json",
|
||||||
|
{
|
||||||
|
"name": "coal_gz_nat.json",
|
||||||
|
"latency": 378.40000000000003,
|
||||||
|
"variance": 11217.84,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal_sz_v6.json",
|
||||||
|
{
|
||||||
|
"name": "coal_sz_v6.json",
|
||||||
|
"latency": 402.7,
|
||||||
|
"variance": 45515.810000000005,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bigchick_228.json",
|
||||||
|
{
|
||||||
|
"name": "bigchick_228.json",
|
||||||
|
"latency": 406.0,
|
||||||
|
"variance": 96063.8,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\u70ad\u4e91-\u5e7f\u5ddenat",
|
||||||
|
{
|
||||||
|
"name": "\u70ad\u4e91-\u5e7f\u5ddenat",
|
||||||
|
"latency": 408.29999999999995,
|
||||||
|
"variance": 33196.21000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal_sz_v6_60.json",
|
||||||
|
{
|
||||||
|
"name": "coal_sz_v6_60.json",
|
||||||
|
"latency": 475.3999999999999,
|
||||||
|
"variance": 18641.23999999999,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\u70ad\u4e91-\u6df1\u5733nat-60",
|
||||||
|
{
|
||||||
|
"name": "\u70ad\u4e91-\u6df1\u5733nat-60",
|
||||||
|
"latency": 477.0,
|
||||||
|
"variance": 95082.6,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bwg-us-36.json",
|
||||||
|
{
|
||||||
|
"name": "bwg-us-36.json",
|
||||||
|
"latency": 486.7,
|
||||||
|
"variance": 21920.209999999992,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\u70ad\u4e91-\u6df1\u5733nat",
|
||||||
|
{
|
||||||
|
"name": "\u70ad\u4e91-\u6df1\u5733nat",
|
||||||
|
"latency": 514.5,
|
||||||
|
"variance": 58734.45,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\u70ad\u4e91-\u5e7f\u5dde\u72ec\u7acb",
|
||||||
|
{
|
||||||
|
"name": "\u70ad\u4e91-\u5e7f\u5dde\u72ec\u7acb",
|
||||||
|
"latency": 516.8,
|
||||||
|
"variance": 102093.16,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal_gz.json",
|
||||||
|
{
|
||||||
|
"name": "coal_gz.json",
|
||||||
|
"latency": 575.7,
|
||||||
|
"variance": 84969.61000000003,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"wawo-tw.json",
|
||||||
|
{
|
||||||
|
"name": "wawo-tw.json",
|
||||||
|
"latency": 603.4000000000001,
|
||||||
|
"variance": 39791.240000000005,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"wawo-us.json",
|
||||||
|
{
|
||||||
|
"name": "wawo-us.json",
|
||||||
|
"latency": 698.3,
|
||||||
|
"variance": 96746.01000000001,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-hk-v2-36.json",
|
||||||
|
{
|
||||||
|
"name": "coal-hk-v2-36.json",
|
||||||
|
"latency": 794.2,
|
||||||
|
"variance": 56481.96,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-hk-v2-72",
|
||||||
|
{
|
||||||
|
"name": "coal-hk-v2-72",
|
||||||
|
"latency": 864.6999999999999,
|
||||||
|
"variance": 293791.81000000006,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"coal-hk-v2-36",
|
||||||
|
{
|
||||||
|
"name": "coal-hk-v2-36",
|
||||||
|
"latency": 994.9,
|
||||||
|
"variance": 181420.69,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ak-hkv2-5.json",
|
||||||
|
{
|
||||||
|
"name": "ak-hkv2-5.json",
|
||||||
|
"latency": 1052.4,
|
||||||
|
"variance": 187489.24,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"bv-sg-opt.json",
|
||||||
|
{
|
||||||
|
"name": "bv-sg-opt.json",
|
||||||
|
"latency": 1107.9,
|
||||||
|
"variance": 1226764.89,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"ak-hk-v2",
|
||||||
|
{
|
||||||
|
"name": "ak-hk-v2",
|
||||||
|
"latency": 1211.1,
|
||||||
|
"variance": 545035.89,
|
||||||
|
"success_count": 10,
|
||||||
|
"failure_count": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
1436
output.json
1436
output.json
File diff suppressed because it is too large
Load Diff
2
run.py
2
run.py
@ -27,7 +27,7 @@ def main(json_file, url, count):
|
|||||||
name = entry['name']
|
name = entry['name']
|
||||||
bind = entry['bind']
|
bind = entry['bind']
|
||||||
result = run_web_test(url, count, bind, name)
|
result = run_web_test(url, count, bind, name)
|
||||||
if result.find("error") == -1:
|
if result.find("error") == -1 and result != "":
|
||||||
data = process_string(result)
|
data = process_string(result)
|
||||||
results[name] = data
|
results[name] = data
|
||||||
results = sort_by_field(results)
|
results = sort_by_field(results)
|
||||||
|
|||||||
119
src/bin/tcp_conn_client/main.rs
Normal file
119
src/bin/tcp_conn_client/main.rs
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
use reqwest::{
|
||||||
|
header::{HeaderValue, CONTENT_LENGTH, HOST, USER_AGENT},
|
||||||
|
Client, Method, Request, Url,
|
||||||
|
};
|
||||||
|
use socks5_impl::client;
|
||||||
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||||
|
use tokio_native_tls::{native_tls, TlsConnector};
|
||||||
|
|
||||||
|
fn create_http_req(client: reqwest::Client, end_point: &str) -> Option<Request> {
|
||||||
|
let url: Url = end_point.parse().ok()?;
|
||||||
|
let host = url.host().unwrap().to_string();
|
||||||
|
let mut req = client
|
||||||
|
.post(url.clone())
|
||||||
|
.timeout(Duration::from_secs(5))
|
||||||
|
.build()
|
||||||
|
.ok()?;
|
||||||
|
req.headers_mut()
|
||||||
|
.insert(HOST, HeaderValue::from_str(&host).ok()?);
|
||||||
|
req.headers_mut()
|
||||||
|
.insert(USER_AGENT, HeaderValue::from_static("curl/8.9.1-DEV"));
|
||||||
|
|
||||||
|
Some(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn request_to_http_text(req: &Request) -> anyhow::Result<String> {
|
||||||
|
use std::fmt::Write;
|
||||||
|
let mut result = String::new();
|
||||||
|
// Write the request line
|
||||||
|
write!(
|
||||||
|
&mut result,
|
||||||
|
"{} {} {:?}\r\n",
|
||||||
|
req.method(),
|
||||||
|
req.url(),
|
||||||
|
req.version()
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Write the headers
|
||||||
|
for (key, value) in req.headers() {
|
||||||
|
write!(&mut result, "{}: {}\r\n", key, value.to_str()?)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
// End of headers
|
||||||
|
write!(&mut result, "\r\n")?;
|
||||||
|
if let Some(body) = req.body() {
|
||||||
|
write!(
|
||||||
|
&mut result,
|
||||||
|
"{}",
|
||||||
|
String::from_utf8(body.as_bytes().unwrap().to_owned())?
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// #[tokio::main]
|
||||||
|
// async fn main() -> anyhow::Result<()> {
|
||||||
|
// let now = std::time::Instant::now();
|
||||||
|
// let mut ac = tokio::net::TcpStream::connect("192.168.4.4:888").await?;
|
||||||
|
// println!("tcp conn established time used: {:?}", now.elapsed());
|
||||||
|
// let r = client::connect(&mut ac, ("cp.cloudflare.com", 443), None).await?;
|
||||||
|
// println!("socks5 conn established time used: {:?}", now.elapsed());
|
||||||
|
// ;
|
||||||
|
// let tls_conn = TlsConnector::from(native_tls::TlsConnector::new().unwrap());
|
||||||
|
// // let url: Url = "https://cp.cloudflare.com/generate_204".parse().unwrap();
|
||||||
|
// let mut tls_s = tls_conn.connect("cp.cloudflare.com", ac).await?;
|
||||||
|
// println!("tls conn established time used: {:?}", now.elapsed());
|
||||||
|
// let req =create_http_req(Client::new(), "https://cp.cloudflare.com/generate_204").unwrap();
|
||||||
|
// let txt = request_to_http_text(&req).unwrap();
|
||||||
|
// tls_s.write_all(&txt.as_bytes()).await?;
|
||||||
|
// tls_s.flush().await?;
|
||||||
|
// println!("req write time used: {:?}", now.elapsed());
|
||||||
|
// let mut buf = vec![0;4096];
|
||||||
|
// let n = tls_s.read(&mut buf).await?;
|
||||||
|
// println!("resp get time used: {:?}, resp len: {}", now.elapsed(), n);
|
||||||
|
// Ok(())
|
||||||
|
// }
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> anyhow::Result<()> {
|
||||||
|
use rustls_pki_types::ServerName;
|
||||||
|
use std::sync::Arc;
|
||||||
|
use tokio_rustls::rustls::{ClientConfig, RootCertStore};
|
||||||
|
use tokio_rustls::TlsConnector;
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
let mut root_cert_store = RootCertStore::empty();
|
||||||
|
root_cert_store.extend(webpki_roots::TLS_SERVER_ROOTS.iter().cloned());
|
||||||
|
let config = ClientConfig::builder()
|
||||||
|
.with_root_certificates(root_cert_store)
|
||||||
|
.with_no_client_auth();
|
||||||
|
let connector = TlsConnector::from(Arc::new(config));
|
||||||
|
let dnsname = ServerName::try_from("cp.cloudflare.com").unwrap();
|
||||||
|
|
||||||
|
// let stream = TcpStream::connect(&addr).await?;
|
||||||
|
// let mut stream = connector.connect(dnsname, stream).await?;
|
||||||
|
|
||||||
|
let now = std::time::Instant::now();
|
||||||
|
let mut ac = tokio::net::TcpStream::connect("192.168.4.4:888").await?;
|
||||||
|
println!("tcp conn established time used: {:?}", now.elapsed());
|
||||||
|
let r = client::connect(&mut ac, ("cp.cloudflare.com", 443), None).await?;
|
||||||
|
println!("socks5 conn established time used: {:?}", now.elapsed());
|
||||||
|
// let tls_conn = TlsConnector::from(native_tls::TlsConnector::new().unwrap());
|
||||||
|
let mut tls_s = connector.connect(dnsname, ac).await?;
|
||||||
|
// let url: Url = "https://cp.cloudflare.com/generate_204".parse().unwrap();
|
||||||
|
// let mut tls_s = tls_conn.connect("cp.cloudflare.com", ac).await?;
|
||||||
|
println!("tls conn established time used: {:?}", now.elapsed());
|
||||||
|
let req = create_http_req(Client::new(), "https://cp.cloudflare.com/generate_204").unwrap();
|
||||||
|
let txt = request_to_http_text(&req).unwrap();
|
||||||
|
tls_s.write_all(&txt.as_bytes()).await?;
|
||||||
|
tls_s.flush().await?;
|
||||||
|
println!("req write time used: {:?}", now.elapsed());
|
||||||
|
let mut buf = vec![0; 4096];
|
||||||
|
let n = tls_s.read(&mut buf).await?;
|
||||||
|
println!("resp get time used: {:?}, resp len: {}", now.elapsed(), n);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
15
src/bin/tcp_conn_server/main.rs
Normal file
15
src/bin/tcp_conn_server/main.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
use tokio::io::AsyncWriteExt;
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> anyhow::Result<()> {
|
||||||
|
let ac = tokio::net::TcpListener::bind("0.0.0.0:99").await?;
|
||||||
|
while let Ok((mut s, _)) = ac.accept().await {
|
||||||
|
tokio::spawn(async move {
|
||||||
|
let _ = s.write_all("Hello world".as_bytes()).await;
|
||||||
|
let _ = s.flush().await;
|
||||||
|
tokio::time::sleep(std::time::Duration::from_secs(10)).await;
|
||||||
|
let _ = s.shutdown().await;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
203
src/main.rs
203
src/main.rs
@ -1,5 +1,12 @@
|
|||||||
use reqwest;
|
use futures::future::Either;
|
||||||
use std::time::Instant;
|
use reqwest::{
|
||||||
|
self,
|
||||||
|
header::{HeaderValue, HOST, USER_AGENT},
|
||||||
|
Client, Request, Url,
|
||||||
|
};
|
||||||
|
use socks5_impl::client;
|
||||||
|
use std::time::Duration;
|
||||||
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||||
|
|
||||||
pub struct IncrementalStats {
|
pub struct IncrementalStats {
|
||||||
count: u64,
|
count: u64,
|
||||||
@ -37,7 +44,133 @@ impl IncrementalStats {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn create_http_req(client: reqwest::Client, end_point: &str) -> Option<Request> {
|
||||||
|
let url: Url = end_point.parse().ok()?;
|
||||||
|
let host = url.host().unwrap().to_string();
|
||||||
|
let mut req = client
|
||||||
|
.post(url.clone())
|
||||||
|
.timeout(Duration::from_secs(5))
|
||||||
|
.build()
|
||||||
|
.ok()?;
|
||||||
|
req.headers_mut()
|
||||||
|
.insert(HOST, HeaderValue::from_str(&host).ok()?);
|
||||||
|
req.headers_mut()
|
||||||
|
.insert(USER_AGENT, HeaderValue::from_static("curl/8.9.1-DEV"));
|
||||||
|
|
||||||
|
Some(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn request_to_http_text(req: &Request) -> anyhow::Result<String> {
|
||||||
|
use std::fmt::Write;
|
||||||
|
let mut result = String::new();
|
||||||
|
// Write the request line
|
||||||
|
write!(
|
||||||
|
&mut result,
|
||||||
|
"{} {} {:?}\r\n",
|
||||||
|
req.method(),
|
||||||
|
req.url(),
|
||||||
|
req.version()
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Write the headers
|
||||||
|
for (key, value) in req.headers() {
|
||||||
|
write!(&mut result, "{}: {}\r\n", key, value.to_str()?)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
// End of headers
|
||||||
|
write!(&mut result, "\r\n")?;
|
||||||
|
if let Some(body) = req.body() {
|
||||||
|
write!(
|
||||||
|
&mut result,
|
||||||
|
"{}",
|
||||||
|
String::from_utf8(body.as_bytes().unwrap().to_owned())?
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn rustls_req(url_str: &str, proxy: &str) -> anyhow::Result<std::time::Duration> {
|
||||||
|
use rustls_pki_types::ServerName;
|
||||||
|
use std::sync::Arc;
|
||||||
|
use tokio_rustls::rustls::{ClientConfig, RootCertStore};
|
||||||
|
use tokio_rustls::TlsConnector;
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
let mut root_cert_store = RootCertStore::empty();
|
||||||
|
root_cert_store.extend(webpki_roots::TLS_SERVER_ROOTS.iter().cloned());
|
||||||
|
let config = ClientConfig::builder()
|
||||||
|
.with_root_certificates(root_cert_store)
|
||||||
|
.with_no_client_auth();
|
||||||
|
let connector = TlsConnector::from(Arc::new(config));
|
||||||
|
let url: Url = url_str.parse()?;
|
||||||
|
let dnsname = ServerName::try_from(url.host().unwrap().to_string())?;
|
||||||
|
|
||||||
|
// let stream = TcpStream::connect(&addr).await?;
|
||||||
|
// let mut stream = connector.connect(dnsname, stream).await?;
|
||||||
|
let proxy_url: Url = proxy.parse()?;
|
||||||
|
let now = std::time::Instant::now();
|
||||||
|
let mut ac = tokio::net::TcpStream::connect((
|
||||||
|
proxy_url.host().unwrap().to_string(),
|
||||||
|
proxy_url.port().unwrap(),
|
||||||
|
))
|
||||||
|
.await?;
|
||||||
|
log::debug!("tcp conn established time used: {:?}", now.elapsed());
|
||||||
|
let r = client::connect(&mut ac, (url.host().unwrap().to_string(), 443), None).await?;
|
||||||
|
log::debug!("socks5 conn established time used: {:?}", now.elapsed());
|
||||||
|
// let tls_conn = TlsConnector::from(native_tls::TlsConnector::new().unwrap());
|
||||||
|
let mut tls_s = connector.connect(dnsname, ac).await?;
|
||||||
|
// let url: Url = "https://cp.cloudflare.com/generate_204".parse().unwrap();
|
||||||
|
// let mut tls_s = tls_conn.connect("cp.cloudflare.com", ac).await?;
|
||||||
|
log::debug!("tls conn established time used: {:?}", now.elapsed());
|
||||||
|
let req = create_http_req(Client::new(), url_str).unwrap();
|
||||||
|
let txt = request_to_http_text(&req).unwrap();
|
||||||
|
tls_s.write_all(&txt.as_bytes()).await?;
|
||||||
|
tls_s.flush().await?;
|
||||||
|
log::debug!("req write time used: {:?}", now.elapsed());
|
||||||
|
let mut buf = vec![0; 4096];
|
||||||
|
let n = tls_s.read(&mut buf).await?;
|
||||||
|
log::debug!("resp get time used: {:?}, resp len: {}", now.elapsed(), n);
|
||||||
|
Ok(now.elapsed())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn http_req(url_str: &str, proxy: &str) -> anyhow::Result<std::time::Duration> {
|
||||||
|
let url: Url = url_str.parse()?;
|
||||||
|
|
||||||
|
// let stream = TcpStream::connect(&addr).await?;
|
||||||
|
// let mut stream = connector.connect(dnsname, stream).await?;
|
||||||
|
let proxy_url: Url = proxy.parse()?;
|
||||||
|
let now = std::time::Instant::now();
|
||||||
|
let mut ac = tokio::net::TcpStream::connect((
|
||||||
|
proxy_url.host().unwrap().to_string(),
|
||||||
|
proxy_url.port().unwrap(),
|
||||||
|
))
|
||||||
|
.await?;
|
||||||
|
log::debug!("tcp conn established time used: {:?}", now.elapsed());
|
||||||
|
let r = client::connect(
|
||||||
|
&mut ac,
|
||||||
|
(url.host().unwrap().to_string(), url.port().unwrap()),
|
||||||
|
None,
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
log::debug!("socks5 conn established time used: {:?}", now.elapsed());
|
||||||
|
// let tls_conn = TlsConnector::from(native_tls::TlsConnector::new().unwrap());
|
||||||
|
// let url: Url = "https://cp.cloudflare.com/generate_204".parse().unwrap();
|
||||||
|
// let mut tls_s = tls_conn.connect("cp.cloudflare.com", ac).await?;
|
||||||
|
log::debug!("tls conn established time used: {:?}", now.elapsed());
|
||||||
|
let req = create_http_req(Client::new(), url_str).unwrap();
|
||||||
|
let txt = request_to_http_text(&req).unwrap();
|
||||||
|
ac.write_all(&txt.as_bytes()).await?;
|
||||||
|
ac.flush().await?;
|
||||||
|
log::debug!("req write time used: {:?}", now.elapsed());
|
||||||
|
let mut buf = vec![0; 4096];
|
||||||
|
let n = ac.read(&mut buf).await?;
|
||||||
|
log::debug!("resp get time used: {:?}, resp len: {}", now.elapsed(), n);
|
||||||
|
Ok(now.elapsed())
|
||||||
|
}
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
let url = std::env::args()
|
let url = std::env::args()
|
||||||
.nth(1)
|
.nth(1)
|
||||||
.unwrap_or("https://www.youtube.com".to_owned()); // 你可以替换为你想要测量的网址
|
.unwrap_or("https://www.youtube.com".to_owned()); // 你可以替换为你想要测量的网址
|
||||||
@ -47,58 +180,54 @@ fn main() {
|
|||||||
.unwrap_or_else(|| "20".to_owned())
|
.unwrap_or_else(|| "20".to_owned())
|
||||||
.parse()
|
.parse()
|
||||||
.expect("second parameter should interger");
|
.expect("second parameter should interger");
|
||||||
let proxy = std::env::args().nth(3);
|
let proxy = std::env::args().nth(3).unwrap();
|
||||||
let fmt = std::env::args().nth(4);
|
let fmt = std::env::args().nth(4);
|
||||||
|
|
||||||
let mut stats = IncrementalStats::new();
|
let mut stats = IncrementalStats::new();
|
||||||
let mut succ = 0;
|
let mut succ = 0;
|
||||||
let mut err = 0;
|
let mut err = 0;
|
||||||
for i in 0..iter_num {
|
for i in 0..iter_num {
|
||||||
let start = Instant::now();
|
let fut = if url.starts_with("https") {
|
||||||
let builder =
|
Either::Left(rustls_req(&url, &proxy))
|
||||||
reqwest::blocking::ClientBuilder::new().timeout(std::time::Duration::from_secs(1));
|
|
||||||
let c = if let Some(p) = proxy.as_ref() {
|
|
||||||
builder
|
|
||||||
.proxy(reqwest::Proxy::all(p.as_str()).unwrap())
|
|
||||||
.build()
|
|
||||||
.unwrap()
|
|
||||||
} else {
|
} else {
|
||||||
builder.build().unwrap()
|
Either::Right(http_req(&url, &proxy))
|
||||||
};
|
};
|
||||||
match c.get(&url).send() {
|
match tokio::time::timeout(std::time::Duration::from_secs(5), fut).await {
|
||||||
Ok(response) => {
|
Ok(Ok(duration)) => {
|
||||||
if response.status().is_success() {
|
// if response.status().is_success() {
|
||||||
let mut duration = start.elapsed();
|
// let mut duration = start.elapsed();
|
||||||
let _r = response.bytes().unwrap();
|
// let _r = response.bytes().unwrap();
|
||||||
if let Some(_name) = fmt.as_ref() {
|
if let Some(_name) = fmt.as_ref() {
|
||||||
// println!("{name}, {i},{}", duration.as_millis())
|
// println!("{name}, {i},{}", duration.as_millis())
|
||||||
// duration /= 2;
|
// duration /= 2;
|
||||||
} else {
|
|
||||||
println!(
|
|
||||||
"第{i}次测试, 访问 {} 花费了 {:?} 毫秒",
|
|
||||||
url,
|
|
||||||
duration.as_millis()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
succ += 1;
|
|
||||||
// time_rec.push(duration);
|
|
||||||
stats.add(duration.as_millis() as f64);
|
|
||||||
} else {
|
} else {
|
||||||
let mut duration = start.elapsed();
|
|
||||||
println!(
|
println!(
|
||||||
"第{i}次测试, 访问 {} 失败,状态码:{}",
|
"第{i}次测试, 访问 {} 花费了 {:?} 毫秒",
|
||||||
url,
|
url,
|
||||||
response.status()
|
duration.as_millis()
|
||||||
);
|
);
|
||||||
stats.add(duration.as_millis() as f64);
|
}
|
||||||
err += 1;
|
succ += 1;
|
||||||
|
// time_rec.push(duration);
|
||||||
|
stats.add(duration.as_millis() as f64);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
Ok(Err(error)) => {
|
||||||
|
err += 1;
|
||||||
|
|
||||||
|
if let Some(_name) = fmt.as_ref() {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
println!("第{i}次测试, 请求错误:{}", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(error) => {
|
Err(error) => {
|
||||||
err += 1;
|
err += 1;
|
||||||
println!("第{i}次测试, 请求错误:{}", error);
|
|
||||||
if let Some(_name) = fmt.as_ref() {
|
if let Some(_name) = fmt.as_ref() {
|
||||||
return;
|
return;
|
||||||
|
} else {
|
||||||
|
println!("第{i}次测试, 请求错误:{}", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user