mirror of
https://github.com/house-of-vanity/v2-uri-parser.git
synced 2025-12-16 15:07:53 +00:00
Test json conversion
This commit is contained in:
80
Cargo.lock
generated
80
Cargo.lock
generated
@@ -11,18 +11,42 @@ dependencies = [
|
|||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "1.0.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.6.4"
|
version = "2.6.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.69"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "querystring"
|
name = "querystring"
|
||||||
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 = "9318ead08c799aad12a55a3e78b82e0b6167271ffd1f627b758891282f739187"
|
checksum = "9318ead08c799aad12a55a3e78b82e0b6167271ffd1f627b758891282f739187"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.33"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex"
|
name = "regex"
|
||||||
version = "1.9.6"
|
version = "1.9.6"
|
||||||
@@ -52,10 +76,66 @@ version = "0.7.5"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
|
checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ryu"
|
||||||
|
version = "1.0.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.189"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.189"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_json"
|
||||||
|
version = "1.0.107"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
|
||||||
|
dependencies = [
|
||||||
|
"itoa",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.38"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "v2parser"
|
name = "v2parser"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"querystring",
|
"querystring",
|
||||||
"regex",
|
"regex",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,3 +8,5 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
querystring = "1.1.0"
|
querystring = "1.1.0"
|
||||||
regex = "1.9.6"
|
regex = "1.9.6"
|
||||||
|
serde = { version = "1.0.189", features = ["derive"] }
|
||||||
|
serde_json = "1.0.107"
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
|
use querystring;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
|
||||||
use querystring;
|
#[derive(Serialize, Deserialize)]
|
||||||
|
struct Person {
|
||||||
|
name: String,
|
||||||
|
age: u8,
|
||||||
|
phones: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
struct VlessQuery {
|
struct VlessQuery {
|
||||||
security: String,
|
security: String,
|
||||||
@@ -36,6 +43,7 @@ pub struct VlessData {
|
|||||||
|
|
||||||
// Outbound structs
|
// Outbound structs
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
struct VlessUser {
|
struct VlessUser {
|
||||||
id: String,
|
id: String,
|
||||||
encryption: String,
|
encryption: String,
|
||||||
@@ -43,16 +51,19 @@ struct VlessUser {
|
|||||||
level: u8,
|
level: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
struct VlessServerObject {
|
struct VlessServerObject {
|
||||||
address: String,
|
address: String,
|
||||||
port: u16,
|
port: u16,
|
||||||
users: Vec<VlessUser>,
|
users: Vec<VlessUser>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
struct VlessOutboundSettings {
|
struct VlessOutboundSettings {
|
||||||
vnext: Vec<VlessServerObject>,
|
vnext: Vec<VlessServerObject>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
enum OutboundSettings {
|
enum OutboundSettings {
|
||||||
Vless(VlessOutboundSettings),
|
Vless(VlessOutboundSettings),
|
||||||
}
|
}
|
||||||
@@ -61,6 +72,7 @@ struct TlsSettings {
|
|||||||
allowInsecure: bool,
|
allowInsecure: bool,
|
||||||
certificates: u8,
|
certificates: u8,
|
||||||
serverName: String,
|
serverName: String,
|
||||||
|
// u8 is a dummy type here
|
||||||
alpn: u8,
|
alpn: u8,
|
||||||
enableSessionResumption: bool,
|
enableSessionResumption: bool,
|
||||||
disableSystemRoot: bool,
|
disableSystemRoot: bool,
|
||||||
@@ -80,6 +92,7 @@ struct StreamSettings {
|
|||||||
tlsSettings: TlsSettings,
|
tlsSettings: TlsSettings,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
pub struct Outbound {
|
pub struct Outbound {
|
||||||
settings: OutboundSettings,
|
settings: OutboundSettings,
|
||||||
protocol: String,
|
protocol: String,
|
||||||
@@ -257,4 +270,13 @@ mod tests {
|
|||||||
assert_eq!(parsed.port, 3012);
|
assert_eq!(parsed.port, 3012);
|
||||||
assert_eq!(parsed.uuid, "uu0id");
|
assert_eq!(parsed.uuid, "uu0id");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn log_vless_outbound() {
|
||||||
|
let v = "vless://4d2c3e35-749d-52e3-bdb6-3f3f4950c183@tre.test.one:2053?security=reality&type=tcp&flow=xtls-rprx-vision#test-name";
|
||||||
|
let data = get_vless_data(v);
|
||||||
|
let outbound_object = create_outbound_object(data);
|
||||||
|
let serialized = serde_json::to_string(&outbound_object).unwrap();
|
||||||
|
println!("serialized = {}", serialized);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user