mirror of
https://github.com/house-of-vanity/v2-uri-parser.git
synced 2025-12-16 15:07:53 +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;
|
use std::process::exit;
|
||||||
mod uri_identifier;
|
mod uri_identifier;
|
||||||
mod vless;
|
mod vless;
|
||||||
|
pub mod config_models;
|
||||||
pub fn parse(uri: &str) {
|
pub fn parse(uri: &str) {
|
||||||
let protocol = uri_identifier::get_uri_protocol(uri);
|
let protocol = uri_identifier::get_uri_protocol(uri);
|
||||||
match protocol {
|
match protocol {
|
||||||
|
|||||||
@@ -2,66 +2,7 @@ use querystring;
|
|||||||
mod models;
|
mod models;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
use crate::parser::config_models::*;
|
||||||
// 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,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create_outbound_object(data: models::VlessData) -> Outbound {
|
fn create_outbound_object(data: models::VlessData) -> Outbound {
|
||||||
return Outbound {
|
return Outbound {
|
||||||
|
|||||||
Reference in New Issue
Block a user