Skip to content

Releases: cherish-ltt/U2Secure

v0.2.0-release

09 Jun 23:25
342f476

Choose a tag to compare

v0.2.0 — TUI 模式 & 单项执行

发布时间:2026-06-10

本版本是 U2Secure 的重大功能更新,新增 ratatui 终端图形界面(TUI),保留原有 CLI 交互方式,同时引入多项体验改进。


🆕 新功能

TUI 终端图形界面

基于 ratatui + crossterm 实现的终端图形界面,布局清晰、交互流畅。

界面布局:

┌─ Title ────────────────────────────────────────────┐
├─ 审计摘要(紧凑单行,自动换行)───────────────────┤
├──────────────────────┬─────────────────────────────┤
│  步骤列表(左面板)   │  操作提示 / 执行状态       │
│  ▸ [✓] 系统更新      │  ▶ 正在执行: 用户创建      │
│    [✓] 用户创建      │  ✅ 已完成: 系统更新        │
│    [ ] SSH root      │  📊 ████████░░ 6/10        │
├──────────────────────┴─────────────────────────────┤
│  ↑↓/jk  Space  Enter  e  r  q                     │
└────────────────────────────────────────────────────┘

支持功能:

  • 自动审计 → 展示报告 → 步骤选择 → 批量执行 → 实时日志 → 结果摘要
  • Space 勾选/取消步骤(按审计状态预选)
  • Enter 批量执行(流式顺序,右面板实时日志 + 进度条)
  • e 单项执行 — 不依赖勾选,直接执行光标所在步骤

三级启动路由

命令 模式 说明
u2secure 交互选择 弹窗选择 CLI 或 TUI
u2secure -t / --tui TUI 直入 ratatui 界面
u2secure -c / --cli CLI 直入传统 dialoguer 向导

✨ 改进

TUI 弹窗交互(ED25519 密钥设置)

执行 SSH 密钥设置时,全程在 TUI 内通过弹窗完成:

  1. 输入用户名 — 弹出输入框手动键入
  2. 选择操作 — 生成新密钥 / 粘贴已有公钥 / 跳过
  3. 粘贴公钥(如选择)— 粘贴 ssh-ed25519 / ssh-rsa 公钥

不再回退到 CLI 终端,体验更流畅。

自动换行

  • 审计摘要区域高度从 3 行增至 5 行,配合 Wrap 自动换行显示全部审计项
  • 执行日志区域添加 Wrap,长消息不截断
  • 摘要面板错误原因自动折行

失败/跳过原因展示

摘要面板中,失败/跳过的步骤会附带 : 原因 显示(灰暗色),例如:

❌ 禁止 root SSH 登录: 前置条件不满足: 禁止 root 登录前请先创建 sudo 用户
⏭ 安全扫描: lynis 无法自动安装,请手动安装后重新运行

SshKeySetup 独立执行

当系统中无 sudo 用户时,ED25519 密钥设置步骤现在允许手动输入目标用户名,不再依赖已有用户。

版本号编译时注入

标题栏和 CLI 欢迎语的版本号改为 env!("CARGO_PKG_VERSION") 编译时读取,只需维护 Cargo.toml 一处。


📦 依赖变更

依赖 操作 版本
ratatui 新增 0.28
crossterm 新增 0.28

🔧 文件变更

文件 操作 说明
Cargo.toml 修改 添加 ratatui、crossterm 依赖
src/main.rs 重写 三级路由(交互选择 / CLI / TUI)
src/presentation/mod.rs 修改 注册 tui 模块
src/presentation/cli.rs 修改 collect_step_params 改为 pub;SshKeySetup 支持手动输入用户名
src/presentation/tui.rs 新增 ~600 行 ratatui TUI 完整实现
README.md 更新 添加 TUI 模式、启动方式、操作键说明
doc/versions/v0.2.0.md 新增 本文件

涉及 i18n 改动的模块: domain/ · application/ · infrastructure/ · presentation/cli.rs · tests/


✅ 验证

  • cargo check — 零错误零警告
  • cargo test — 45/45 通过
  • cargo clippy --all-targets — 仅预存测试警告
  • cargo fmt — 格式规范

🌐 国际化(i18n)

v0.2.0 新增完整国际化支持,覆盖三种语言:

语言 缩写 说明
English en 英文
简体中文 zh_cn 默认语言
繁體中文 zh_tw 繁體中文

启动流程:

$ sudo u2secure
? 选择语言 / Select Language
  ▸ 简体中文
    English
    繁體中文
? 请选择启动模式 / Select Launch Mode
  ▸ TUI 模式(终端图形界面)
    CLI 模式(传统交互式)

已翻译内容覆盖:

模块 覆盖范围
步骤标签(12 项) domain/steps.rsStepKind::label()
审计项名称 & 详情 infrastructure/system.rsrun_full_audit()
领域错误消息 domain/errors.rsDisplay impl
步骤执行结果 application/steps.rs → 12 个步骤结果消息
包装错误说明 所有 PreconditionFailed、SystemCommandFailed 包装消息
CLI 界面 欢迎语、提示、确认、总结等全部用户可见字符串
TUI 界面 标题栏、面板标题、操作提示、快捷键、弹窗标题/提示/选项、执行日志、结果摘要
回退描述 infrastructure/rollback.rs
日志前缀 infrastructure/logger.rs

未翻译(保持原文):

  • 原始系统命令输出(如 {e}{stderr} 中的错误详情)
  • 英文命令名(如 updateufwsshd 等)

技术实现:

  • 零外部依赖,纯 Rust OnceLock + match 实现
  • 全局语言状态在 main.rs 启动时通过 dialoguer::Select 设定
  • 通过 crate::i18n::tr("key") / .replace("{var}", val) 注入动态参数
  • 未翻译的 key 返回 key 本身,不会崩溃

What's Changed

New Contributors

Full Changelog: v0.1.1-release...v0.2.0-release

v0.1.1-release

14 May 14:40
a793f9b

Choose a tag to compare

U2Secure — Linux 服务器安全加固 CLI 工具

v0.1.1-release ,第一个正式版本

Full Changelog: https://github.com/cherish-ltt/U2Secure/commits/v0.1.1