pub mod types;
pub mod rules;
pub mod inbounds;
pub mod dns;
pub mod routes;
pub mod outbounds;
use serde::{Serialize, Deserialize};
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Config {
pub inbounds: Vec<inbounds::Inbound>,
pub outbounds: Vec<outbounds::Outbound>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dns: Option<dns::Dns>,
#[serde(skip_serializing_if = "Option::is_none")]
pub route: Option<routes::Route>,
#[serde(skip_serializing_if = "Option::is_none")]
pub log: Option<Log>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ntp: Option<Ntp>,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Log {
pub disabled: bool,
pub level: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub output: Option<String>,
pub timestamp: bool,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Ntp {
pub enabled: bool,
pub server: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub server_port: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(flatten)]
#[serde(skip_serializing_if = "Option::is_none")]
pub dial: Option<types::Dial>,
}