优化: 清理无意义注释(走查编号前缀/过时历史标注/死代码注释)
This commit is contained in:
@@ -13,7 +13,7 @@ use df_relay::{DefaultRelayServer, RelayError, RelayServer};
|
||||
#[tokio::main]
|
||||
async fn main() -> df_relay::Result<()> {
|
||||
tracing_subscriber::fmt::init();
|
||||
// RLY-5:token 未设置 → 启动即返回错误(exit code 1 + 明确消息),而非运行期 panic。
|
||||
// token 未设置 → 启动即返回错误(exit code 1 + 明确消息),而非运行期 panic。
|
||||
// relay.rs expected_token() 已改为返回 Option 兜底,但 fail-fast 比慢速拒连更早暴露配置错误。
|
||||
if std::env::var("DF_RELAY_TOKEN").is_err() {
|
||||
return Err(RelayError::Start(
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//! `device_id` 并冒充该设备收发指令**。生产级 per-device token(配对时按 device 颁发独立 token
|
||||
//! 并存储)涉及配对流程改造(需 df-miniapp/df-tunnel 配合),当前批次不实施,仅做最小加固:
|
||||
//! - 连接建立时校验 `device_id` 格式(非空 + 长度上限,见 `validate_device_id`)。
|
||||
//! - token 比较用常量时间比较(RLY-4),防时序侧信道。
|
||||
//! - token 比较用常量时间比较,防时序侧信道。
|
||||
//! 完整 per-device 鉴权留设计文档 Phase3。
|
||||
//!
|
||||
//! AiChatEvent JSON 透传:relay 不解析 payload,只按 device_id + 方向转发。
|
||||
@@ -41,13 +41,13 @@ use crate::conn::{next_conn_id, ConnHandle, ConnId, RelayState};
|
||||
use crate::error::{RelayError, Result};
|
||||
|
||||
/// 读取期望 token(必需:env `DF_RELAY_TOKEN` 必须设置)。
|
||||
/// RLY-5:不再 panic,改为返回 Option——缺失时由连接层显式拒绝握手(main 启动时也已校验)。
|
||||
/// 不再 panic,改为返回 Option——缺失时由连接层显式拒绝握手(main 启动时也已校验)。
|
||||
/// 生产级鉴权(每 device 独立 token + 过期刷新)留 Phase3。
|
||||
fn expected_token() -> Option<String> {
|
||||
std::env::var("DF_RELAY_TOKEN").ok()
|
||||
}
|
||||
|
||||
/// RLY-3:入站文本帧大小上限(1 MiB)。
|
||||
/// 入站文本帧大小上限(1 MiB)。
|
||||
/// 防恶意/异常客户端发超大帧耗尽内存与转发带宽;超限直接断开连接。
|
||||
const MAX_FRAME_BYTES: usize = 1 * 1024 * 1024;
|
||||
|
||||
@@ -272,7 +272,7 @@ async fn handle_connection(socket: WebSocket, state: RelayState, expected: Clien
|
||||
let _ = socket_tx.close().await;
|
||||
return;
|
||||
}
|
||||
// RLY-5:token 未配置(服务启动时应已由 main 校验)→ 拒绝握手而非 panic
|
||||
// token 未配置(服务启动时应已由 main 校验)→ 拒绝握手而非 panic
|
||||
let Some(expected) = expected_token() else {
|
||||
tracing::error!("DF_RELAY_TOKEN 未设置,拒绝握手");
|
||||
let _ = send_text(
|
||||
@@ -283,7 +283,7 @@ async fn handle_connection(socket: WebSocket, state: RelayState, expected: Clien
|
||||
let _ = socket_tx.close().await;
|
||||
return;
|
||||
};
|
||||
// RLY-4:常量时间比较防时序侧信道
|
||||
// 常量时间比较防时序侧信道
|
||||
if !constant_time_eq(&hello.token, &expected) {
|
||||
tracing::warn!(
|
||||
device_id = %hello.device_id,
|
||||
@@ -332,7 +332,7 @@ async fn handle_connection(socket: WebSocket, state: RelayState, expected: Clien
|
||||
maybe_msg = socket_rx.next() => {
|
||||
match maybe_msg {
|
||||
Some(Ok(Message::Text(text))) => {
|
||||
// RLY-3:入站帧超限(>1MiB)直接断开,防大帧耗尽内存/带宽
|
||||
// 入站帧超限(>1MiB)直接断开,防大帧耗尽内存/带宽
|
||||
if text.len() > MAX_FRAME_BYTES {
|
||||
tracing::warn!(
|
||||
conn_id = conn_id.0,
|
||||
@@ -402,7 +402,7 @@ async fn recv_hello(rx: &mut futures_util::stream::SplitStream<WebSocket>) -> Re
|
||||
}
|
||||
_ => return Err(RelayError::Client("握手首帧类型非法".into())),
|
||||
};
|
||||
// RLY-3:Hello 帧同样限长(Hello 结构很小,超限视为异常/恶意)
|
||||
// Hello 帧同样限长(Hello 结构很小,超限视为异常/恶意)
|
||||
if text.len() > MAX_FRAME_BYTES {
|
||||
return Err(RelayError::Client(format!(
|
||||
"Hello 帧超限({} B > {MAX_FRAME_BYTES} B)",
|
||||
|
||||
Reference in New Issue
Block a user