use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] pub struct VlessUser { pub id: String, pub encryption: String, pub flow: String, pub level: u8, } #[derive(Serialize, Deserialize)] pub struct VlessServerObject { pub address: String, pub port: u16, pub users: Vec, } #[derive(Serialize, Deserialize)] pub struct VlessOutboundSettings { pub vnext: Vec, } #[derive(Serialize, Deserialize)] pub enum OutboundSettings { Vless(VlessOutboundSettings), } #[derive(Serialize, Deserialize)] pub struct NonHeaderObject { pub r#type: String, } #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct TCPSettings { pub header: Option, pub acceptProxyProtocol: Option, } #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct WsSettings { pub path: Option, // Headers map[string]string headers pub acceptProxyProtocol: Option, } #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct TlsSettings { pub allowInsecure: Option, pub serverName: Option, pub enableSessionResumption: Option, pub disableSystemRoot: Option, pub minVersion: Option, pub maxVersion: Option, pub cipherSuites: Option, pub preferServerCipherSuites: Option, pub fingerprint: Option, pub rejectUnknownSni: Option, } #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct StreamSettings { pub network: String, pub security: String, pub tlsSettings: Option, pub wsSettings: Option, pub tcpSettings: Option, } #[allow(non_snake_case)] #[derive(Serialize, Deserialize)] pub struct Outbound { pub settings: OutboundSettings, pub streamSettings: StreamSettings, pub protocol: String, pub tag: String, }