use crate::blacklist::*; use crate::cache::*; use crate::crypto::*; use crate::dnscrypt_certs::*; #[cfg(feature = "metrics")] use crate::varz::*; use parking_lot::{Mutex, RwLock}; use siphasher::sip128::SipHasher13; use std::collections::vec_deque::VecDeque; use std::net::{IpAddr, SocketAddr}; use std::path::PathBuf; use std::sync::atomic::AtomicU32; use std::sync::Arc; use std::time::Duration; use tokio::runtime::Handle; use tokio::sync::oneshot; #[derive(Clone, Derivative)] #[derivative(Debug)] pub struct Globals { pub runtime_handle: Handle, pub state_file: PathBuf, pub dnscrypt_encryption_params_set: Arc>>>>, pub provider_name: String, pub provider_kp: SignKeyPair, pub listen_addrs: Vec, pub external_addr: Option, pub upstream_addr: SocketAddr, pub tls_upstream_addr: Option, pub udp_timeout: Duration, pub tcp_timeout: Duration, pub udp_concurrent_connections: Arc, pub tcp_concurrent_connections: Arc, pub udp_max_active_connections: u32, pub tcp_max_active_connections: u32, pub udp_active_connections: Arc>>>, pub tcp_active_connections: Arc>>>, pub key_cache_capacity: usize, pub hasher: SipHasher13, pub cache: Cache, pub cert_cache: Cache, pub blacklist: Option, pub undelegated_list: Option, pub ignore_unqualified_hostnames: bool, pub dnscrypt_enabled: bool, pub anonymized_dns_enabled: bool, pub anonymized_dns_allowed_ports: Vec, pub anonymized_dns_allow_non_reserved_ports: bool, pub anonymized_dns_blacklisted_ips: Vec, pub access_control_tokens: Option>, pub client_ttl_holdon: u32, pub my_ip: Option>, #[cfg(feature = "metrics")] #[derivative(Debug = "ignore")] pub varz: Varz, }