- Add ListenerConfig struct with transport_kind, listen_addr, per-transport config - Add Dns and WebTransport variants to TransportKind (tags only, no behavior) - Add .listeners() builder method to ServeOptions for multi-listener config - Keep .transport_mode() backwards compatible (creates single-element listeners vec) - Update Server::run() to use listeners from Server struct (first listener) - Add Server::listeners() accessor for multi-transport listener configs - Update StaticConfig to support listeners field, converted from ServeOptions - All listeners share Arc<ArcSwap<DynamicConfig>>, ConnectionRateLimiter, and IdentityProvider - Graceful shutdown terminates accept loop via existing shutdown signal - TOML [[listeners]] array-of-tables syntax supported via ListenerConfig in StaticConfig - Add comprehensive tests for ListenerConfig, multi-listener ServeOptions, Server creation
28 lines
1.1 KiB
Rust
28 lines
1.1 KiB
Rust
//! Server-side SSH connection handling.
|
|
//!
|
|
//! Provides `Server` for accepting SSH connections over any transport and proxying
|
|
//! `direct-tcpip` channel requests to targets. Supports Ed25519 and certificate-authority
|
|
//! auth, connection rate limiting, auth attempt limiting, stealth mode (fake nginx 404),
|
|
//! and outbound proxy routing (direct/SOCKS5/HTTP CONNECT).
|
|
//!
|
|
//! Destination hosts starting with `alknet-` are reserved for internal use (control channel, ADR-018).
|
|
|
|
pub mod channel_proxy;
|
|
pub mod control_channel;
|
|
pub mod handler;
|
|
pub mod rate_limit;
|
|
pub mod serve;
|
|
pub mod stealth;
|
|
|
|
pub use channel_proxy::{connect_outbound, proxy_channel};
|
|
pub use control_channel::{
|
|
is_reserved_destination, ControlChannelHandler, ControlChannelRouter, DuplexStream,
|
|
ALKNET_CONTROL_DESTINATION, ALKNET_PREFIX,
|
|
};
|
|
pub use handler::{ProxyConfig, ProxyMode, ServerHandler, TransportKind};
|
|
pub use rate_limit::{AuthAttemptLimiter, ConnectionRateLimiter};
|
|
pub use serve::{ListenerConfig, ServeError, ServeOptions, ServeTransportMode, Server};
|
|
pub use stealth::{
|
|
detect_protocol, send_fake_nginx_404, validate_stealth_config, ProtocolDetection,
|
|
};
|