use dashmap::DashMap; use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::sync::atomic::AtomicUsize; pub type InnerMap = (String, u16, bool, bool, bool); pub type UpstreamsDashMap = DashMap, AtomicUsize)>>; pub type UpstreamsIdMap = DashMap; pub type Headers = DashMap>>; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ServiceMapping { pub proxy: String, pub real: String, } #[derive(Clone, Debug)] pub struct Extraparams { pub sticky_sessions: bool, pub to_https: Option, pub authentication: DashMap>, pub rate_limit: Option, } #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Consul { pub servers: Option>, pub services: Option>, pub token: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct Config { pub provider: String, pub sticky_sessions: bool, pub to_https: Option, pub upstreams: Option>, pub globals: Option>>, pub headers: Option>, pub authorization: Option>, pub consul: Option, pub rate_limit: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct HostConfig { pub paths: HashMap, pub rate_limit: Option, } #[derive(Debug, Serialize, Deserialize)] pub struct PathConfig { pub servers: Vec, pub to_https: Option, pub headers: Option>, pub rate_limit: Option, } #[derive(Debug)] pub struct Configuration { pub upstreams: UpstreamsDashMap, pub headers: Headers, pub consul: Option, pub typecfg: String, pub extraparams: Extraparams, } #[derive(Debug, Deserialize)] pub struct AppConfig { pub hc_interval: u16, pub hc_method: String, pub upstreams_conf: String, pub log_level: String, pub master_key: String, pub config_address: String, pub proxy_address_http: String, pub config_api_enabled: bool, pub config_tls_address: Option, pub config_tls_certificate: Option, pub config_tls_key_file: Option, pub proxy_address_tls: Option, pub proxy_port_tls: Option, pub local_server: Option<(String, u16)>, pub proxy_certificates: Option, pub file_server_address: Option, pub file_server_folder: Option, }