pub trait ConfigProvider:
RateLimitingProvider
+ ProxyProvider
+ FilteringProvider
+ ConnectionProvider
+ AuthenticationProvider { }Expand description
Trait for complete configuration injection.
This trait combines all specialized configuration traits into one. Implement this trait to provide configuration from any source: environment variables, files, remote services, etc.
For more granular control, implement the individual traits:
RateLimitingProviderfor rate limiting settingsProxyProviderfor proxy behaviorFilteringProviderfor request filteringConnectionProviderfor connection limitsAuthenticationProviderfor HTTP Basic Authentication
§Example
use wisegate_core::{
RateLimitingProvider, ProxyProvider, FilteringProvider, ConnectionProvider,
AuthenticationProvider, Credentials,
RateLimitConfig, RateLimitCleanupConfig, ProxyConfig,
};
use std::time::Duration;
struct MyConfig {
credentials: Credentials,
}
impl RateLimitingProvider for MyConfig {
fn rate_limit_config(&self) -> &RateLimitConfig {
static CONFIG: RateLimitConfig = RateLimitConfig {
max_requests: 100,
window_duration: Duration::from_secs(60),
};
&CONFIG
}
fn rate_limit_cleanup_config(&self) -> &RateLimitCleanupConfig {
static CONFIG: RateLimitCleanupConfig = RateLimitCleanupConfig {
threshold: 10_000,
interval: Duration::from_secs(60),
};
&CONFIG
}
}
impl ProxyProvider for MyConfig {
fn proxy_config(&self) -> &ProxyConfig {
static CONFIG: ProxyConfig = ProxyConfig {
timeout: Duration::from_secs(30),
max_body_size: 100 * 1024 * 1024,
};
&CONFIG
}
fn allowed_proxy_ips(&self) -> Option<&[String]> { None }
}
impl FilteringProvider for MyConfig {
fn blocked_ips(&self) -> &[String] { &[] }
fn blocked_methods(&self) -> &[String] { &[] }
fn blocked_patterns(&self) -> &[String] { &[] }
}
impl ConnectionProvider for MyConfig {
fn max_connections(&self) -> usize { 10_000 }
}
impl AuthenticationProvider for MyConfig {
fn auth_credentials(&self) -> &Credentials { &self.credentials }
fn auth_realm(&self) -> &str { "WiseGate" }
}