singbox_config 0.17.0

A library for serializing and deserliazing sing-box config files
Documentation
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>,
}