use serde_derive::*;
#[derive(Default, Serialize, Deserialize)]
pub struct EmailConfig {
pub source: String,
pub region: String,
}
#[derive(Default, Clone, Serialize, Deserialize)]
pub struct PostgresConfig {
pub host: String,
pub port: Option<u16>,
pub readonly_port: Option<u16>,
pub local_port: Option<u16>,
pub user: String,
pub password: String,
pub db: String,
pub log: Option<String>,
pub ca_file: Option<String>,
#[serde(default = "bool_true")]
pub use_tls: bool,
}
fn bool_true() -> bool {
true
}
#[derive(Default, Serialize, Deserialize)]
pub struct ConfigFile {
pub repository_cache_size: usize,
pub change_cache_size: usize,
pub lock_file: String,
pub max_body_length: u64,
pub hard_max_body_length: u64,
pub host: String,
pub hostname: String,
pub origin: String,
pub pbkdf2_iterations: usize,
pub max_password_attempts: i64,
pub http: HttpConfigFile,
pub email: EmailConfig,
pub postgres: Option<String>,
pub ssh: SshConfigFile,
pub workers: Option<usize>,
pub user: Option<String>,
pub group: Option<String>,
pub repositories_path: String,
pub geoip_database: String,
pub time: TimeConfigFile,
pub failed_auth_timeout_millis: u64,
pub ci: CiConfigFile,
pub partial_change_size: u64,
pub prometheus: Prometheus,
pub etcd_server: String,
pub editor: Editor,
pub webauthn: Webauthn,
pub pro_prix_euros: u32,
#[serde(default)]
pub svelte_socket: Option<String>,
pub basic_size_limit: i64,
pub pro_size_limit: i64,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct HttpConfigFile {
pub http_port: u16,
pub https_port: u16,
pub ws_port: u16,
pub ws_timeout_secs: u64,
pub time_file: String,
pub log_file: String,
pub timeout_secs: u64,
pub perf_log: Option<String>,
pub connections_log: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct SshConfigFile {
pub port: u16,
pub timeout_secs: u64,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct CiConfigFile {
pub port: u16,
pub key_path: String,
pub public_key_path: Option<String>,
pub timeout_secs: u64,
pub public_keys: Vec<String>,
pub log_path: String,
pub tarball_path: String,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct TimeConfigFile {
pub max_relative_days: usize,
pub yesterday_threshold_hours: usize,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct Prometheus {
pub buckets_start: f64,
pub n_buckets: usize,
pub buckets_width: Option<f64>,
pub buckets_factor: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Editor {
pub port: u16,
}
#[derive(Default, Deserialize, Debug, Clone, Serialize)]
pub struct Webauthn {
pub rp_origin: String,
pub rp_id: String,
}