singbox_config 0.17.0

A library for serializing and deserliazing sing-box config files
Documentation
use serde::{Serialize, Deserialize};

use super::types::OneOrMany;


#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Rule {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub clash_mode: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub invert: Option<bool>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub network: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub inbound: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub ip_version: Option<u8>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub auth_user: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub protocol: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub domain: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub domain_suffix: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub domain_keyword: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub domain_regex: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub geosite: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub source_geoip: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub geoip: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub source_ip_cidr: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub ip_cidr: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub source_port: Option<OneOrMany<u16>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub source_port_range: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub port: Option<OneOrMany<u16>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub port_range: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub process_name: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub process_path: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub package_name: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub user: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub user_id: Option<OneOrMany<u32>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub wifi_ssid: Option<OneOrMany<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub wifi_bssid: Option<OneOrMany<String>>,
}