Implement config validation with all 18 rules
Add comprehensive validation for StaticConfig and DynamicConfig: - ValidationError enum with thiserror for descriptive error messages - validate() function that collects ALL errors (doesn't stop at first) - All 18 validation rules from config.md implemented - OR logic for allow_wildcard_bind (config OR CLI flag) - Hostname normalization to lowercase during validation - File existence check for manual mode cert_path and key_path - Unit tests covering each validation rule with valid/invalid inputs - Updated ConfigReloadHandle to use new validate() function - Added PartialEq derives to config structs for diff_static_config
This commit is contained in:
@@ -8,12 +8,12 @@ pub fn test_static_config() -> StaticConfig {
|
||||
http_port: 80,
|
||||
https_port: 443,
|
||||
tls: TlsConfig {
|
||||
mode: "manual".to_string(),
|
||||
acme_domains: vec![],
|
||||
acme_cache_dir: String::new(),
|
||||
acme_directory: "production".to_string(),
|
||||
cert_path: "/tmp/test-cert.pem".to_string(),
|
||||
key_path: "/tmp/test-key.pem".to_string(),
|
||||
mode: "acme".to_string(),
|
||||
acme_domains: vec!["test.local".to_string()],
|
||||
acme_cache_dir: "/tmp/acme-cache".to_string(),
|
||||
acme_directory: "staging".to_string(),
|
||||
cert_path: String::new(),
|
||||
key_path: String::new(),
|
||||
},
|
||||
sites: vec![],
|
||||
}],
|
||||
|
||||
Reference in New Issue
Block a user