WiseGate Core - Reusable reverse proxy components
This crate provides the core functionality for building reverse proxies with:
- Rate limiting with sliding window algorithm
- IP filtering and blocking
- HTTP method and URL pattern filtering
- Trusted proxy validation (RFC 7239 compliant)
Overview
wisegate-core is designed to be framework-agnostic and can be integrated
into any Rust application. Configuration is provided via the [ConfigProvider]
trait, allowing flexible configuration from any source.
Example
use wisegate_core::{
RateLimitingProvider, ProxyProvider, FilteringProvider, ConnectionProvider,
RateLimiter, RateLimitConfig, RateLimitCleanupConfig, ProxyConfig,
};
use std::time::Duration;
struct MyConfig;
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 }
}
let limiter = RateLimiter::new();
Modules
- [
types] - Core types and the [ConfigProvider] trait
- [
error] - Error types and result aliases
- [
headers] - HTTP header constants
- [
ip_filter] - IP validation, extraction, and filtering
- [
rate_limiter] - Rate limiting implementation
- [
request_handler] - HTTP request processing and forwarding