From 4fbcb4a22068cac3f00e0dd4a231080517e06913 Mon Sep 17 00:00:00 2001 From: Keivan-sf Date: Thu, 12 Oct 2023 18:34:01 +0330 Subject: [PATCH] feat: create outbound proxy object from vless data --- src/parser/structs.rs | 5 +++++ src/parser/vless.rs | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/parser/structs.rs diff --git a/src/parser/structs.rs b/src/parser/structs.rs new file mode 100644 index 0000000..d6abfc5 --- /dev/null +++ b/src/parser/structs.rs @@ -0,0 +1,5 @@ + + +pub struct Outboud { + vnext: Option>, +} diff --git a/src/parser/vless.rs b/src/parser/vless.rs index 8636c40..7d68730 100644 --- a/src/parser/vless.rs +++ b/src/parser/vless.rs @@ -34,6 +34,38 @@ pub struct VlessData { address_data: VlessAddress, } +struct VlessUser { + id: String, + encryption: String, + flow: String, + level: u8, +} + +struct VlessServerObject { + address: String, + port: u16, + users: Vec, +} + +pub struct VlessOutbound { + vnext: VlessServerObject, +} + +pub fn create_outbound_object(data: VlessData) -> VlessOutbound { + return VlessOutbound { + vnext: VlessServerObject { + port: data.address_data.port, + address: data.address_data.address, + users: vec![VlessUser { + id: data.address_data.uuid, + flow: data.query.flow, + encryption: data.query.encryption, + level: 0, + }], + }, + }; +} + pub fn get_vless_data(uri: &str) -> VlessData { let data = uri.split_once("vless://").unwrap().1; let query_and_name = uri.split_once("?").unwrap().1;