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"
|
||||
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]]
|
||||
name = "anyhow"
|
||||
version = "1.0.86"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "autocfg"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "backtrace"
|
||||
version = "0.3.69"
|
||||
@ -50,6 +103,29 @@ version = "0.21.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
@ -68,6 +144,12 @@ version = "3.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
|
||||
|
||||
[[package]]
|
||||
name = "byteorder"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||
|
||||
[[package]]
|
||||
name = "bytes"
|
||||
version = "1.4.0"
|
||||
@ -80,15 +162,45 @@ version = "1.0.83"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cexpr"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
|
||||
dependencies = [
|
||||
"nom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.3"
|
||||
@ -105,6 +217,12 @@ version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
|
||||
|
||||
[[package]]
|
||||
name = "dunce"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.9.0"
|
||||
@ -128,7 +246,7 @@ checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd"
|
||||
dependencies = [
|
||||
"errno-dragonfly",
|
||||
"libc",
|
||||
"windows-sys",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -178,46 +296,93 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.28"
|
||||
name = "fs_extra"
|
||||
version = "1.3.0"
|
||||
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 = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.28"
|
||||
version = "0.3.30"
|
||||
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]]
|
||||
name = "futures-io"
|
||||
version = "0.3.28"
|
||||
version = "0.3.30"
|
||||
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]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.28"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
|
||||
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.28"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
|
||||
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.28"
|
||||
version = "0.3.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
|
||||
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-macro",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"memchr",
|
||||
"pin-project-lite",
|
||||
@ -225,12 +390,29 @@ dependencies = [
|
||||
"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]]
|
||||
name = "gimli"
|
||||
version = "0.28.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
|
||||
|
||||
[[package]]
|
||||
name = "glob"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.3.21"
|
||||
@ -262,6 +444,15 @@ version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "http"
|
||||
version = "0.2.9"
|
||||
@ -359,12 +550,30 @@ version = "2.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
|
||||
dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
||||
|
||||
[[package]]
|
||||
name = "jobserver"
|
||||
version = "0.1.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.64"
|
||||
@ -381,10 +590,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.147"
|
||||
name = "lazycell"
|
||||
version = "1.3.0"
|
||||
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]]
|
||||
name = "linux-raw-sys"
|
||||
@ -404,9 +629,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.20"
|
||||
version = "0.4.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
@ -420,6 +645,12 @@ version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.7.1"
|
||||
@ -437,9 +668,15 @@ checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"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]]
|
||||
name = "native-tls"
|
||||
version = "0.2.11"
|
||||
@ -458,6 +695,16 @@ dependencies = [
|
||||
"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]]
|
||||
name = "num_cpus"
|
||||
version = "1.16.0"
|
||||
@ -550,6 +797,12 @@ dependencies = [
|
||||
"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]]
|
||||
name = "percent-encoding"
|
||||
version = "2.3.0"
|
||||
@ -574,6 +827,16 @@ version = "0.3.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.86"
|
||||
@ -610,6 +873,35 @@ dependencies = [
|
||||
"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]]
|
||||
name = "reqwest"
|
||||
version = "0.11.20"
|
||||
@ -648,12 +940,33 @@ dependencies = [
|
||||
"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]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-hash"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.38.11"
|
||||
@ -664,7 +977,40 @@ dependencies = [
|
||||
"errno",
|
||||
"libc",
|
||||
"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]]
|
||||
@ -679,7 +1025,7 @@ version = "0.1.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
|
||||
dependencies = [
|
||||
"windows-sys",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -755,6 +1101,12 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "shlex"
|
||||
version = "1.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||
|
||||
[[package]]
|
||||
name = "signal-hook-registry"
|
||||
version = "1.4.2"
|
||||
@ -796,9 +1148,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877"
|
||||
dependencies = [
|
||||
"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]]
|
||||
name = "syn"
|
||||
version = "2.0.72"
|
||||
@ -820,7 +1200,7 @@ dependencies = [
|
||||
"fastrand",
|
||||
"redox_syscall 0.3.5",
|
||||
"rustix",
|
||||
"windows-sys",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -874,7 +1254,7 @@ dependencies = [
|
||||
"signal-hook-registry",
|
||||
"socket2 0.5.3",
|
||||
"tokio-macros",
|
||||
"windows-sys",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -898,6 +1278,17 @@ dependencies = [
|
||||
"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]]
|
||||
name = "tokio-socks"
|
||||
version = "0.5.1"
|
||||
@ -977,6 +1368,12 @@ dependencies = [
|
||||
"tinyvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "untrusted"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
||||
|
||||
[[package]]
|
||||
name = "url"
|
||||
version = "2.4.1"
|
||||
@ -1090,10 +1487,37 @@ name = "web_test"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"futures",
|
||||
"log",
|
||||
"reqwest",
|
||||
"rustls-pki-types",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"socks5-impl",
|
||||
"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]]
|
||||
@ -1127,6 +1551,15 @@ dependencies = [
|
||||
"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]]
|
||||
name = "windows-targets"
|
||||
version = "0.48.5"
|
||||
@ -1255,5 +1688,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
|
||||
dependencies = [
|
||||
"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"
|
||||
serde = {version = "1.0.204", features = ["derive"]}
|
||||
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",
|
||||
"bind": "127.0.0.1:9503",
|
||||
"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']
|
||||
bind = entry['bind']
|
||||
result = run_web_test(url, count, bind, name)
|
||||
if result.find("error") == -1:
|
||||
if result.find("error") == -1 and result != "":
|
||||
data = process_string(result)
|
||||
results[name] = data
|
||||
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 std::time::Instant;
|
||||
use futures::future::Either;
|
||||
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 {
|
||||
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()
|
||||
.nth(1)
|
||||
.unwrap_or("https://www.youtube.com".to_owned()); // 你可以替换为你想要测量的网址
|
||||
@ -47,58 +180,54 @@ fn main() {
|
||||
.unwrap_or_else(|| "20".to_owned())
|
||||
.parse()
|
||||
.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 mut stats = IncrementalStats::new();
|
||||
let mut succ = 0;
|
||||
let mut err = 0;
|
||||
for i in 0..iter_num {
|
||||
let start = Instant::now();
|
||||
let builder =
|
||||
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()
|
||||
let fut = if url.starts_with("https") {
|
||||
Either::Left(rustls_req(&url, &proxy))
|
||||
} else {
|
||||
builder.build().unwrap()
|
||||
Either::Right(http_req(&url, &proxy))
|
||||
};
|
||||
match c.get(&url).send() {
|
||||
Ok(response) => {
|
||||
if response.status().is_success() {
|
||||
let mut duration = start.elapsed();
|
||||
let _r = response.bytes().unwrap();
|
||||
if let Some(_name) = fmt.as_ref() {
|
||||
// println!("{name}, {i},{}", duration.as_millis())
|
||||
// duration /= 2;
|
||||
} else {
|
||||
println!(
|
||||
"第{i}次测试, 访问 {} 花费了 {:?} 毫秒",
|
||||
url,
|
||||
duration.as_millis()
|
||||
);
|
||||
}
|
||||
succ += 1;
|
||||
// time_rec.push(duration);
|
||||
stats.add(duration.as_millis() as f64);
|
||||
match tokio::time::timeout(std::time::Duration::from_secs(5), fut).await {
|
||||
Ok(Ok(duration)) => {
|
||||
// if response.status().is_success() {
|
||||
// let mut duration = start.elapsed();
|
||||
// let _r = response.bytes().unwrap();
|
||||
if let Some(_name) = fmt.as_ref() {
|
||||
// println!("{name}, {i},{}", duration.as_millis())
|
||||
// duration /= 2;
|
||||
} else {
|
||||
let mut duration = start.elapsed();
|
||||
println!(
|
||||
"第{i}次测试, 访问 {} 失败,状态码:{}",
|
||||
"第{i}次测试, 访问 {} 花费了 {:?} 毫秒",
|
||||
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 += 1;
|
||||
println!("第{i}次测试, 请求错误:{}", error);
|
||||
|
||||
if let Some(_name) = fmt.as_ref() {
|
||||
return;
|
||||
} else {
|
||||
println!("第{i}次测试, 请求错误:{}", error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user