/* * 模块名称: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 #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 */