1#![allow(dead_code)]
3#![allow(unused_variables)]
4#![allow(unused_imports)]
5#![allow(clippy::too_many_arguments)]
6#![allow(clippy::match_like_matches_macro)]
7#![allow(clippy::manual_strip)]
8#![allow(clippy::only_used_in_recursion)]
9#![allow(clippy::type_complexity)]
10#![allow(clippy::manual_try_fold)]
11#![allow(private_interfaces)]
12
13pub mod agents;
46pub mod app;
47pub mod builtin_handlers;
48pub mod cache;
49pub mod decompression;
50pub mod discovery;
51pub mod distributed_rate_limit;
52pub mod memcached_rate_limit;
53pub mod errors;
54
55#[cfg(feature = "kubernetes")]
57pub mod kubeconfig;
58pub mod geo_filter;
59pub mod grpc_health;
60pub mod health;
61pub mod http_helpers;
62pub mod inference;
63pub mod logging;
64pub mod memory_cache;
65pub mod metrics;
66pub mod otel;
67pub mod proxy;
68pub mod rate_limit;
69pub mod reload;
70pub mod scoped_circuit_breaker;
71pub mod scoped_rate_limit;
72pub mod routing;
73pub mod scoped_routing;
74pub mod shadow;
75pub mod static_files;
76pub mod tls;
77pub mod trace_id;
78pub mod upstream;
79pub mod validation;
80pub mod websocket;
81
82pub use errors::ErrorHandler;
88
89pub use static_files::{CacheStats, CachedFile, FileCache, StaticFileServer};
91
92pub use validation::SchemaValidator;
94
95pub use routing::{RequestInfo, RouteMatch, RouteMatcher};
97pub use scoped_routing::{ScopedRouteMatch, ScopedRouteMatcher};
98
99pub use upstream::{
101 LoadBalancer, PoolConfigSnapshot, PoolStats, RequestContext, ShadowTarget, TargetSelection,
102 UpstreamPool, UpstreamTarget,
103};
104
105pub use health::{ActiveHealthChecker, PassiveHealthChecker, TargetHealthInfo};
107
108pub use agents::{AgentAction, AgentCallContext, AgentDecision, AgentManager};
110
111pub use reload::{ConfigManager, ReloadEvent, ReloadTrigger, SignalManager, SignalType};
113
114pub use app::AppState;
116
117pub use proxy::SentinelProxy;
119
120pub use builtin_handlers::{
122 execute_handler, BuiltinHandlerState, CachePurgeRequest, TargetHealthStatus, TargetStatus,
123 UpstreamHealthSnapshot, UpstreamStatus,
124};
125
126pub use http_helpers::{
128 extract_request_info, get_or_create_trace_id, write_error, write_json_error, write_response,
129 write_text_error, OwnedRequestInfo,
130};
131
132pub use trace_id::{
134 generate_for_format, generate_tinyflake, generate_uuid, TraceIdFormat, TINYFLAKE_LENGTH,
135};
136
137pub use otel::{
139 create_traceparent, generate_span_id, generate_trace_id, get_tracer, init_tracer,
140 shutdown_tracer, OtelError, OtelTracer, RequestSpan, TraceContext, TRACEPARENT_HEADER,
141 TRACESTATE_HEADER,
142};
143
144pub use tls::{
146 build_server_config, build_upstream_tls_config, load_client_ca, validate_tls_config,
147 validate_upstream_tls_config, CertificateReloader, HotReloadableSniResolver, OcspCacheEntry,
148 OcspStapler, SniResolver, TlsError,
149};
150
151pub use logging::{
153 AccessLogEntry, AccessLogFormat, AuditEventType, AuditLogEntry, ErrorLogEntry, LogManager,
154 SharedLogManager,
155};
156
157pub use rate_limit::{
159 RateLimitConfig, RateLimitManager, RateLimitOutcome, RateLimitResult, RateLimiterPool,
160};
161
162pub use scoped_rate_limit::{ScopedRateLimitManager, ScopedRateLimitResult};
164
165pub use scoped_circuit_breaker::{ScopedBreakerStatus, ScopedCircuitBreakerManager};
167
168pub use shadow::{buffer_request_body, clone_body_for_shadow, should_buffer_method, ShadowManager};
170
171pub use geo_filter::{
173 GeoDatabaseWatcher, GeoFilterManager, GeoFilterPool, GeoFilterResult, GeoLookupError,
174};
175
176pub use decompression::{
178 decompress_body, decompress_body_with_stats, is_supported_encoding, parse_content_encoding,
179 DecompressionConfig, DecompressionError, DecompressionResult, DecompressionStats,
180};
181
182#[cfg(feature = "distributed-rate-limit")]
184pub use distributed_rate_limit::{
185 create_redis_rate_limiter, DistributedRateLimitStats, RedisRateLimiter,
186};
187
188#[cfg(feature = "distributed-rate-limit-memcached")]
190pub use memcached_rate_limit::{
191 create_memcached_rate_limiter, MemcachedRateLimitStats, MemcachedRateLimiter,
192};
193
194pub use cache::{
196 configure_cache, get_cache_eviction, get_cache_lock, get_cache_storage, is_cache_enabled,
197 CacheConfig, CacheManager, HttpCacheStats,
198};
199
200pub use memory_cache::{
202 MemoryCacheConfig, MemoryCacheManager, MemoryCacheStats, RouteMatchEntry, TypedCache,
203};
204
205pub use metrics::{MetricsManager, MetricsResponse};
207
208pub use discovery::{
210 ConsulDiscovery, DiscoveryConfig, DiscoveryManager, DnsDiscovery, KubernetesDiscovery,
211};
212
213#[cfg(feature = "kubernetes")]
215pub use kubeconfig::{KubeAuth, Kubeconfig, KubeconfigError, ResolvedKubeConfig};
216
217pub use sentinel_common::errors::{LimitType, SentinelError, SentinelResult};