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.
Quick start
[DefaultConfig] pre-implements every configuration trait, so a minimal
setup needs no boilerplate. Mutate its public fields to customize behaviour:
use Duration;
use ;
let mut config = default;
config.rate_limit.max_requests = 200;
config.rate_limit.window_duration = from_secs;
config.blocked_methods = vec!;
let _limiter = new;
When you need finer control, implement the composable traits directly
([RateLimitingProvider], [ProxyProvider], [FilteringProvider],
[ConnectionProvider], [AuthenticationProvider]). See [types] for
a worked example of bespoke implementations.
Wiring it into hyper
[request_handler::handle_request] is async and expects a Tokio runtime —
call it from inside #[tokio::main] or any other Tokio executor. It takes
an Arc<C: ConfigProvider> so the same configuration can be cloned cheaply
across spawned tasks.
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