mirror of
https://github.com/house-of-vanity/v2-uri-parser.git
synced 2025-12-16 06:57:52 +00:00
Put config structs into config_models
This commit is contained in:
59
src/parser/config_models/mod.rs
Normal file
59
src/parser/config_models/mod.rs
Normal file
@@ -0,0 +1,59 @@
|
||||
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<VlessUser>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct VlessOutboundSettings {
|
||||
pub vnext: Vec<VlessServerObject>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub enum OutboundSettings {
|
||||
Vless(VlessOutboundSettings),
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
pub struct TlsSettings {
|
||||
pub allowInsecure: bool,
|
||||
pub certificates: u8,
|
||||
pub serverName: String,
|
||||
// u8 is a dummy type here
|
||||
pub alpn: u8,
|
||||
pub enableSessionResumption: bool,
|
||||
pub disableSystemRoot: bool,
|
||||
pub minVersion: String,
|
||||
pub maxVersion: String,
|
||||
pub cipherSuites: String,
|
||||
pub preferServerCipherSuites: bool,
|
||||
pub fingerprint: String,
|
||||
pub rejectUnknownSni: bool,
|
||||
pub pinnedPeerCertificateChainSha256: u8,
|
||||
pub pinnedPeerCertificatePublicKeySha256: u8,
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
pub struct StreamSettings {
|
||||
pub network: String,
|
||||
pub security: String,
|
||||
pub tlsSettings: TlsSettings,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Outbound {
|
||||
pub settings: OutboundSettings,
|
||||
pub protocol: String,
|
||||
pub tag: String,
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::process::exit;
|
||||
mod uri_identifier;
|
||||
mod vless;
|
||||
|
||||
pub mod config_models;
|
||||
pub fn parse(uri: &str) {
|
||||
let protocol = uri_identifier::get_uri_protocol(uri);
|
||||
match protocol {
|
||||
|
||||
@@ -2,66 +2,7 @@ use querystring;
|
||||
mod models;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::process::exit;
|
||||
|
||||
// Outbound structs
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct VlessUser {
|
||||
id: String,
|
||||
encryption: String,
|
||||
flow: String,
|
||||
level: u8,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct VlessServerObject {
|
||||
address: String,
|
||||
port: u16,
|
||||
users: Vec<VlessUser>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct VlessOutboundSettings {
|
||||
vnext: Vec<VlessServerObject>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
enum OutboundSettings {
|
||||
Vless(VlessOutboundSettings),
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
struct TlsSettings {
|
||||
allowInsecure: bool,
|
||||
certificates: u8,
|
||||
serverName: String,
|
||||
// u8 is a dummy type here
|
||||
alpn: u8,
|
||||
enableSessionResumption: bool,
|
||||
disableSystemRoot: bool,
|
||||
minVersion: String,
|
||||
maxVersion: String,
|
||||
cipherSuites: String,
|
||||
preferServerCipherSuites: bool,
|
||||
fingerprint: String,
|
||||
rejectUnknownSni: bool,
|
||||
pinnedPeerCertificateChainSha256: u8,
|
||||
pinnedPeerCertificatePublicKeySha256: u8,
|
||||
}
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
struct StreamSettings {
|
||||
network: String,
|
||||
security: String,
|
||||
tlsSettings: TlsSettings,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct Outbound {
|
||||
settings: OutboundSettings,
|
||||
protocol: String,
|
||||
tag: String,
|
||||
}
|
||||
use crate::parser::config_models::*;
|
||||
|
||||
fn create_outbound_object(data: models::VlessData) -> Outbound {
|
||||
return Outbound {
|
||||
|
||||
Reference in New Issue
Block a user