Skip to main content

trojan_core/
defaults.rs

1//! Default configuration values.
2//!
3//! Centralized default constants for use across all crates.
4
5// ============================================================================
6// Timeout Defaults
7// ============================================================================
8
9/// Default TCP idle timeout in seconds.
10pub const DEFAULT_TCP_TIMEOUT_SECS: u64 = 600;
11/// Default UDP timeout in seconds.
12pub const DEFAULT_UDP_TIMEOUT_SECS: u64 = 60;
13/// Default graceful shutdown timeout in seconds.
14pub const DEFAULT_SHUTDOWN_TIMEOUT_SECS: u64 = 30;
15
16// ============================================================================
17// Buffer/Size Defaults
18// ============================================================================
19
20/// Default maximum UDP payload size (8 KiB).
21pub const DEFAULT_MAX_UDP_PAYLOAD: usize = 8192;
22/// Default maximum UDP buffer bytes for TCP->UDP framing.
23pub const DEFAULT_MAX_UDP_BUFFER_BYTES: usize = 65536;
24/// Default maximum header bytes.
25pub const DEFAULT_MAX_HEADER_BYTES: usize = 8192;
26/// Default relay buffer size (32 KiB — tuned for high-throughput relay chains).
27pub const DEFAULT_RELAY_BUFFER_SIZE: usize = 32768;
28/// Default TCP socket send buffer size (0 = OS default).
29pub const DEFAULT_TCP_SEND_BUFFER: usize = 0;
30/// Default TCP socket receive buffer size (0 = OS default).
31pub const DEFAULT_TCP_RECV_BUFFER: usize = 0;
32
33// ============================================================================
34// TCP Socket Defaults
35// ============================================================================
36
37/// Default TCP_NODELAY (disable Nagle's algorithm for lower latency).
38pub const DEFAULT_TCP_NO_DELAY: bool = true;
39/// Default TCP Keep-Alive interval in seconds (0 = disabled).
40pub const DEFAULT_TCP_KEEPALIVE_SECS: u64 = 300;
41/// Default SO_REUSEPORT for multi-process load balancing.
42pub const DEFAULT_TCP_REUSE_PORT: bool = false;
43/// Default TCP Fast Open (TFO) enabled.
44pub const DEFAULT_TCP_FAST_OPEN: bool = false;
45/// Default TCP Fast Open queue length.
46pub const DEFAULT_TCP_FAST_OPEN_QLEN: u32 = 5;
47/// Prefer IPv4 addresses when resolving DNS (server-side outbound).
48pub const DEFAULT_TCP_PREFER_IPV4: bool = false;
49
50// ============================================================================
51// Connection Defaults
52// ============================================================================
53
54/// Default TCP listener backlog.
55pub const DEFAULT_CONNECTION_BACKLOG: u32 = 1024;
56
57// ============================================================================
58// Rate Limit Defaults
59// ============================================================================
60
61/// Default max connections per IP for rate limiting.
62pub const DEFAULT_RATE_LIMIT_MAX_CONNECTIONS: u32 = 10;
63/// Default rate limit window in seconds.
64pub const DEFAULT_RATE_LIMIT_WINDOW_SECS: u64 = 60;
65/// Default rate limit cleanup interval in seconds.
66pub const DEFAULT_RATE_LIMIT_CLEANUP_SECS: u64 = 300;
67
68// ============================================================================
69// Connection Pool Defaults
70// ============================================================================
71
72/// Default max idle connections in pool.
73pub const DEFAULT_POOL_MAX_IDLE: usize = 10;
74/// Default max age of pooled connections in seconds.
75pub const DEFAULT_POOL_MAX_AGE_SECS: u64 = 300;
76/// Default warm-fill batch size per cycle.
77pub const DEFAULT_POOL_FILL_BATCH: usize = 2;
78/// Default delay (ms) between warm-fill connection attempts.
79pub const DEFAULT_POOL_FILL_DELAY_MS: u64 = 50;
80
81// ============================================================================
82// TLS Defaults
83// ============================================================================
84
85/// Default minimum TLS version.
86pub const DEFAULT_TLS_MIN_VERSION: &str = "tls12";
87/// Default maximum TLS version.
88pub const DEFAULT_TLS_MAX_VERSION: &str = "tls13";
89/// Default TLS handshake timeout in seconds.
90pub const DEFAULT_TLS_HANDSHAKE_TIMEOUT_SECS: u64 = 10;
91
92// ============================================================================
93// WebSocket Defaults
94// ============================================================================
95
96/// Default WebSocket enabled.
97pub const DEFAULT_WS_ENABLED: bool = true;
98/// Default WebSocket mode: "mixed" or "split".
99pub const DEFAULT_WS_MODE: &str = "mixed";
100/// Default WebSocket path.
101pub const DEFAULT_WS_PATH: &str = "/";
102/// Default max WebSocket frame size.
103pub const DEFAULT_WS_MAX_FRAME_BYTES: usize = 1 << 20;
104
105// ============================================================================
106// Protocol Constants
107// ============================================================================
108
109/// Trojan protocol hash length (SHA-224 hex = 56 chars).
110pub const HASH_LEN: usize = 56;
111/// Minimum header bytes (hash + CRLF + cmd + atyp + ipv4 + port + CRLF).
112pub const MIN_HEADER_BYTES: usize = HASH_LEN + 2 + 1 + 1 + 4 + 2 + 2;