use serde_derive::*;
use std::path::PathBuf;
#[derive(Default, Serialize, Deserialize)]
pub struct EmailConfig {
pub server: String,
pub user: String,
pub source: String,
}
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
pub struct CiConfig {
pub filesystem: Option<PathBuf>,
}
#[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,
#[serde(default)]
pub email: Option<EmailConfig>,
#[serde(default)]
pub postgres: Option<String>,
pub ssh: SshConfigFile,
#[serde(default)]
pub workers: Option<usize>,
#[serde(default)]
pub user: Option<String>,
#[serde(default)]
pub group: Option<String>,
pub repositories_path: String,
#[serde(default)]
pub geoip_database: Option<String>,
pub time: TimeConfigFile,
pub failed_auth_timeout_millis: u64,
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,
pub ci: CiConfig,
}
#[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 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,
}