Files
STM32F4-Base/Drivers/BSP/NETCFG/ftp_cfg.h
T
wandering1 d1e6bb4ba7 W5波+N-19收口:FTP鉴权落地、Trap25三连定案修复(N-30)、N-20/N-23/N-26
N-19 FTP 鉴权:
- lftpd_auth(USER/PASS 状态机 + 连续5次失败锁60s)+ SHA-256
  (user||pwd) 口令哈希;config.ini [ftp] 段 user/pwd_hash/write,
  出厂 admin/admin 在用有启动告警;lftpd_log.c 删除并入 lftpd_auth
- ftp_cfg 配置读写;台架 ftp_auth_bench.py 13/13

N-30 / Trap 25(CH395F_Trap_Records.md 四次定案全记录):
- 修复1 closed-with-data accept:客户端发完正常 FIN 后芯片按
  FUN_PARA(0x09) §5.52② 保留 Socket+RX 缓冲,旧代码把 CLOSED 一律
  relisten 自毁缓冲 → STOR 必挂 425;改为接受"已关但可读"连接排空
- 修复2 丢 CONNECT 中断探针 net_lost_connect_probe + last_peer_port
  幽灵甄别(拆链窗口握手完成但中断丢失,双信源去抖补 accept)
- 修复3 send_list/send_nlst 批量单发:背靠背 ~60B 小段毒化芯片 TX
  (芯片报 SEND_OK 但对端全丢),整份目录一次性写入
- 证伪存档:固定沉降/Socket 轮换冷却/listen 门控(台架 v7 矩阵)
- 台架工具 test/board/ch395f_reuse_bench.{c,h} + host 脚本存档
  (不注册编译;实验分支 n30-chip-bench 保留)

N-20:Error_Handler 死循环降级(记录+复位路径)
N-23:scripts/check_registration.py 双端注册反向校验(pre-commit)
N-26:GD5F NAND 直 DMA 调用方缓冲窗口断言

验证:BUILD_OK 0/0;ftp_regression 连跑 4 轮 11/11(修复前
LIST#4/#7 100% 挂、STOR#2 曾 100% 425);ftp_auth_bench 13/13;
@test 启动标记 PASS;ci_local L0+L0.5 全过;doc-links 通过。
登记簿 N-30 已销项。
2026-10-11 18:50:24 +08:00

69 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 模块名称:FTP 配置([ftp] 段)
* 模块功能:FTP 服务鉴权配置——RAM 副本 + 工厂默认 + cfg_file 引擎注册
* ([ftp] 段:user / pwd_hash / write);消费者(lftpd/lftpd_auth)
* 经 ftp_cfg_get() 只读,配置引擎属主仍为 defaultTask
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
* 作者:王建锋
* 创建日期:2026-10-11
* 修改记录:
* v1.0 2026-10-11 王建锋 创建初始版本(N-19 FTP 鉴权)
*/
#ifndef FTP_CFG_H
#define FTP_CFG_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#define FTP_CFG_USER_MAX 16u /* 用户名缓冲长度(含 NUL) */
#define FTP_CFG_HASH_MAX 65u /* SHA-256 hex 摘要 64 字符 + NUL */
/* 工厂默认:user=admin、口令=admin(pwd_hash = SHA256("adminadmin"))、write=1。
* write=1 保持既有维护工作流(FTP 推 config.ini);生产配置应改口令并按需 write=0。
* 出厂默认口令在用期间,lftpd_start 每次启动打 INFO 告警锚点(N-19) */
#define FTP_CFG_DEF_USER "admin"
#define FTP_CFG_DEF_HASH "d82494f05d6917ba02f7aaa29689ccb444bb73f20380876cb05d1f37537b7892"
#define FTP_CFG_DEF_WRITE 1u
typedef struct {
char user[FTP_CFG_USER_MAX]; /* 期望用户名(大小写不敏感) */
char pwd_hash[FTP_CFG_HASH_MAX]; /* SHA-256(user‖password) hex(大小写不敏感) */
uint8_t write_en; /* 1 = 允许 STOR/DELE;0 = 只读 */
} ftp_cfg_t;
/*
* 函数功能:向 cfg_file 引擎注册 [ftp] 段(幂等)
* 入口参数:无
* 返回值:无
* 限定条件:cfg_file_load 之前调用(net_cfg_load 内统一编排)
*/
void ftp_cfg_register(void);
/*
* 函数功能:取 [ftp] 段 RAM 副本(只读)
* 入口参数:无
* 返回值:恒非 NULL(静态常驻,load 前初值 = 工厂默认) const ftp_cfg_t *
* 限定条件:无
* 函数说明:defaultTask poll 重载瞬间可能读到撕裂值 → 该次登录失败
* (fail-closed,重试即恢复;配置变更本就罕见)
*/
const ftp_cfg_t *ftp_cfg_get(void);
/*
* 函数功能:判断当前 pwd_hash 是否仍为出厂默认口令哈希
* 入口参数:无
* 返回值:1 - 默认口令在用;0 - 已改 int
* 限定条件:无
*/
int ftp_cfg_is_default_pwd(void);
#ifdef __cplusplus
}
#endif
#endif /* FTP_CFG_H */