shell_tunnel/security/mod.rs
1//! Security module for shell-tunnel.
2//!
3//! This module provides authentication, rate limiting, and input validation
4//! for the API layer.
5//!
6//! ## Features
7//!
8//! - **API Key Authentication**: Simple Bearer token authentication
9//! - **Rate Limiting**: IP-based sliding window rate limiter
10//! - **Input Validation**: Command sanitization and dangerous pattern detection
11//!
12//! ## Example
13//!
14//! ```rust
15//! use shell_tunnel::security::{ApiKeyStore, RateLimiter, CommandValidator};
16//!
17//! // Create authentication store
18//! let auth = ApiKeyStore::default();
19//! auth.add_key("my-secret-key");
20//!
21//! // Create rate limiter (100 req/min)
22//! let limiter = RateLimiter::default();
23//!
24//! // Create command validator
25//! let validator = CommandValidator::default();
26//! assert!(validator.validate_command("echo hello").is_ok());
27//! ```
28
29pub mod auth;
30pub mod capability;
31pub mod rate_limit;
32pub mod validation;
33
34// Re-export commonly used types
35pub use auth::{auth_middleware, generate_api_key, ApiKeyStore, AuthConfig, TokenRecord};
36pub use capability::{preset, CapabilitySet, WILDCARD};
37pub use rate_limit::{rate_limit_middleware, RateLimitConfig, RateLimitStats, RateLimiter};
38pub use validation::{
39 looks_like_injection, sanitize_for_display, CommandValidator, ValidationConfig, ValidationError,
40};