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 acme;
46pub mod agents;
47pub mod app;
48pub mod builtin_handlers;
49pub mod cache;
50pub mod decompression;
51pub mod discovery;
52pub mod distributed_rate_limit;
53pub mod memcached_rate_limit;
54pub mod errors;
55
56#[cfg(feature = "kubernetes")]
58pub mod kubeconfig;
59pub mod geo_filter;
60pub mod grpc_health;
61pub mod health;
62pub mod http_helpers;
63pub mod inference;
64pub mod logging;
65pub mod memory_cache;
66pub mod metrics;
67pub mod otel;
68pub mod proxy;
69pub mod rate_limit;
70pub mod reload;
71pub mod scoped_circuit_breaker;
72pub mod scoped_rate_limit;
73pub mod routing;
74pub mod scoped_routing;
75pub mod shadow;
76pub mod static_files;
77pub mod tls;
78pub mod trace_id;
79pub mod upstream;
80pub mod validation;
81pub mod websocket;
82
83pub mod bundle;
85
86pub use errors::ErrorHandler;
92
93pub use static_files::{CacheStats, CachedFile, FileCache, StaticFileServer};
95
96pub use validation::SchemaValidator;
98
99pub use routing::{RequestInfo, RouteMatch, RouteMatcher};
101pub use scoped_routing::{ScopedRouteMatch, ScopedRouteMatcher};
102
103pub use upstream::{
105 LoadBalancer, PoolConfigSnapshot, PoolStats, RequestContext, ShadowTarget, TargetSelection,
106 UpstreamPool, UpstreamTarget,
107};
108
109pub use health::{ActiveHealthChecker, PassiveHealthChecker, TargetHealthInfo};
111
112pub use agents::{AgentAction, AgentCallContext, AgentDecision, AgentManager};
114
115pub use reload::{ConfigManager, ReloadEvent, ReloadTrigger, SignalManager, SignalType};
117
118pub use app::AppState;
120
121pub use proxy::SentinelProxy;
123
124pub use builtin_handlers::{
126 execute_handler, BuiltinHandlerState, CachePurgeRequest, TargetHealthStatus, TargetStatus,
127 UpstreamHealthSnapshot, UpstreamStatus,
128};
129
130pub use http_helpers::{
132 extract_request_info, get_or_create_trace_id, write_error, write_json_error, write_response,
133 write_text_error, OwnedRequestInfo,
134};
135
136pub use trace_id::{
138 generate_for_format, generate_tinyflake, generate_uuid, TraceIdFormat, TINYFLAKE_LENGTH,
139};
140
141pub use otel::{
143 create_traceparent, generate_span_id, generate_trace_id, get_tracer, init_tracer,
144 shutdown_tracer, OtelError, OtelTracer, RequestSpan, TraceContext, TRACEPARENT_HEADER,
145 TRACESTATE_HEADER,
146};
147
148pub use tls::{
150 build_server_config, build_upstream_tls_config, load_client_ca, validate_tls_config,
151 validate_upstream_tls_config, CertificateReloader, HotReloadableSniResolver, OcspCacheEntry,
152 OcspStapler, SniResolver, TlsError,
153};
154
155pub use logging::{
157 AccessLogEntry, AccessLogFormat, AuditEventType, AuditLogEntry, ErrorLogEntry, LogManager,
158 SharedLogManager,
159};
160
161pub use rate_limit::{
163 RateLimitConfig, RateLimitManager, RateLimitOutcome, RateLimitResult, RateLimiterPool,
164};
165
166pub use scoped_rate_limit::{ScopedRateLimitManager, ScopedRateLimitResult};
168
169pub use scoped_circuit_breaker::{ScopedBreakerStatus, ScopedCircuitBreakerManager};
171
172pub use shadow::{buffer_request_body, clone_body_for_shadow, should_buffer_method, ShadowManager};
174
175pub use geo_filter::{
177 GeoDatabaseWatcher, GeoFilterManager, GeoFilterPool, GeoFilterResult, GeoLookupError,
178};
179
180pub use decompression::{
182 decompress_body, decompress_body_with_stats, is_supported_encoding, parse_content_encoding,
183 DecompressionConfig, DecompressionError, DecompressionResult, DecompressionStats,
184};
185
186#[cfg(feature = "distributed-rate-limit")]
188pub use distributed_rate_limit::{
189 create_redis_rate_limiter, DistributedRateLimitStats, RedisRateLimiter,
190};
191
192#[cfg(feature = "distributed-rate-limit-memcached")]
194pub use memcached_rate_limit::{
195 create_memcached_rate_limiter, MemcachedRateLimitStats, MemcachedRateLimiter,
196};
197
198pub use cache::{
200 configure_cache, get_cache_eviction, get_cache_lock, get_cache_storage, is_cache_enabled,
201 CacheConfig, CacheManager, HttpCacheStats,
202};
203
204pub use memory_cache::{
206 MemoryCacheConfig, MemoryCacheManager, MemoryCacheStats, RouteMatchEntry, TypedCache,
207};
208
209pub use metrics::{MetricsManager, MetricsResponse};
211
212pub use discovery::{
214 ConsulDiscovery, DiscoveryConfig, DiscoveryManager, DnsDiscovery, KubernetesDiscovery,
215};
216
217#[cfg(feature = "kubernetes")]
219pub use kubeconfig::{KubeAuth, Kubeconfig, KubeconfigError, ResolvedKubeConfig};
220
221pub use sentinel_common::errors::{LimitType, SentinelError, SentinelResult};