From fe9e749a1e1bc070c8b6f3d34a4fcf22ad020989 Mon Sep 17 00:00:00 2001 From: yiTuoRou <1561074588@qq.com> Date: Fri, 5 Jun 2026 14:18:58 +0800 Subject: [PATCH 001/243] =?UTF-8?q?feat:=E4=BC=98=E5=8C=96=E7=A7=81?= =?UTF-8?q?=E9=92=A5=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.rs | 24 +++++++++++++++- src/sftp.rs | 12 ++++++-- src/ssh.rs | 15 ++++++++-- ui/app.slint | 2 ++ ui/session_dialog.slint | 64 ++++++++++++++++++++++++++++++++++++++--- 5 files changed, 106 insertions(+), 11 deletions(-) diff --git a/src/app.rs b/src/app.rs index b6d29837..7113a6ee 100644 --- a/src/app.rs +++ b/src/app.rs @@ -612,7 +612,8 @@ fn wire_session_callbacks( user: draft.user.to_string(), auth: AuthMethod::from_str(&draft.auth.to_string()), password: draft.password.to_string(), - private_key_path: draft.private_key_path.to_string(), + // Store the key path with forward slashes uniformly. + private_key_path: draft.private_key_path.to_string().replace('\\', "/"), last_used: None, }; { @@ -639,6 +640,27 @@ fn wire_session_callbacks( }); } + // Private-key file picker: pick the private key and store its path with + // forward-slash separators (uniform across Windows/Linux; russh accepts them). + { + let weak = window.as_weak(); + window.on_session_dialog_pick_key(move || { + let mut dialog = rfd::FileDialog::new().set_title("选择私钥文件"); + // Start in ~/.ssh if it exists. + if let Some(home) = directories::UserDirs::new().map(|u| u.home_dir().join(".ssh")) { + if home.is_dir() { + dialog = dialog.set_directory(home); + } + } + if let Some(file) = dialog.pick_file() { + let path = file.to_string_lossy().replace('\\', "/"); + if let Some(w) = weak.upgrade() { + w.set_dialog_key_path(path.into()); + } + } + }); + } + // Connect session -> open a new terminal tab. { let weak = window.as_weak(); diff --git a/src/sftp.rs b/src/sftp.rs index f2de67eb..41b5840e 100644 --- a/src/sftp.rs +++ b/src/sftp.rs @@ -187,11 +187,17 @@ async fn run_sftp( .await .context("sftp password auth failed")?, AuthMethod::Key => { - if session.private_key_path.trim().is_empty() { + let raw = session.private_key_path.trim(); + if raw.is_empty() { return Err(anyhow!("私钥路径为空")); } - let keypair = load_secret_key(Path::new(&session.private_key_path), None) - .with_context(|| format!("failed to load key {}", session.private_key_path))?; + let normalised = raw.replace('\\', "/"); + let key_path = normalised + .strip_suffix(".pub") + .map(str::to_string) + .unwrap_or(normalised); + let keypair = load_secret_key(Path::new(&key_path), None) + .with_context(|| format!("failed to load key {key_path}"))?; let hash = if keypair.algorithm().is_rsa() { Some(HashAlg::Sha256) } else { diff --git a/src/ssh.rs b/src/ssh.rs index f47fd679..e96c0208 100644 --- a/src/ssh.rs +++ b/src/ssh.rs @@ -302,11 +302,20 @@ async fn run_session( .await .context("password auth failed")?, AuthMethod::Key => { - if session.private_key_path.trim().is_empty() { + let raw = session.private_key_path.trim(); + if raw.is_empty() { return Err(anyhow!("私钥路径为空")); } - let keypair = load_secret_key(Path::new(&session.private_key_path), None) - .with_context(|| format!("failed to load key {}", session.private_key_path))?; + // Normalise separators (we store `/` everywhere) and be forgiving if + // the user pointed at the `.pub` *public* key — the private key is the + // same path without that suffix. + let normalised = raw.replace('\\', "/"); + let key_path = normalised + .strip_suffix(".pub") + .map(str::to_string) + .unwrap_or(normalised); + let keypair = load_secret_key(Path::new(&key_path), None) + .with_context(|| format!("failed to load key {key_path}"))?; let hash = if keypair.algorithm().is_rsa() { Some(HashAlg::Sha256) } else { diff --git a/ui/app.slint b/ui/app.slint index 88f4b62e..5786ffdb 100644 --- a/ui/app.slint +++ b/ui/app.slint @@ -123,6 +123,7 @@ export component AppWindow inherits Window { callback remove-session(string /* session-id */); callback session-dialog-submit(SessionDraft); callback session-dialog-cancel(); + callback session-dialog-pick-key(); callback tab-selected(string); callback tab-closed(string); @@ -653,5 +654,6 @@ export component AppWindow inherits Window { draft-key-path <=> root.dialog-key-path; submit(draft) => { root.session-dialog-submit(draft); } cancel => { root.session-dialog-cancel(); } + pick-key-file => { root.session-dialog-pick-key(); } } } diff --git a/ui/session_dialog.slint b/ui/session_dialog.slint index c4cf6b14..8f189213 100644 --- a/ui/session_dialog.slint +++ b/ui/session_dialog.slint @@ -29,6 +29,7 @@ export component SessionDialog inherits Rectangle { callback submit(SessionDraft); callback cancel(); + callback pick-key-file(); // open a native file picker for the private key visible: is-open; background: #000000aa; @@ -153,10 +154,65 @@ export component SessionDialog inherits Rectangle { value <=> root.draft-password; } - if root.draft-auth == "key" : LabeledInput { - label: "私钥路径"; - placeholder: "C:\\Users\\you\\.ssh\\id_ed25519"; - value <=> root.draft-key-path; + if root.draft-auth == "key" : VerticalLayout { + spacing: 4px; + Text { + text: "私钥文件"; + color: Theme.text-secondary; + font-size: Theme.fs-sm; + } + HorizontalLayout { + spacing: 8px; + Rectangle { + height: 32px; + horizontal-stretch: 1; + border-radius: Theme.radius-sm; + border-width: 1px; + border-color: keyin.has-focus ? Theme.accent : Theme.border-subtle; + background: Theme.bg-root; + keyin := TextInput { + x: 10px; y: 0px; + width: parent.width - 20px; + height: parent.height; + text <=> root.draft-key-path; + color: Theme.text-primary; + font-size: Theme.fs-md; + vertical-alignment: center; + single-line: true; + } + if root.draft-key-path == "" : Text { + x: 10px; y: 0px; + height: parent.height; + text: "/home/you/.ssh/id_ed25519"; + color: Theme.text-muted; + font-size: Theme.fs-md; + vertical-alignment: center; + } + } + Rectangle { + width: 64px; height: 32px; + border-radius: Theme.radius-sm; + border-width: 1px; + border-color: Theme.border-subtle; + background: browse-ta.has-hover ? Theme.bg-hover : Theme.bg-elevated; + Text { + text: "浏览…"; + color: Theme.text-primary; + font-size: Theme.fs-sm; + horizontal-alignment: center; + vertical-alignment: center; + } + browse-ta := TouchArea { + mouse-cursor: pointer; + clicked => { root.pick-key-file(); } + } + } + } + Text { + text: "选择私钥本身(不是 .pub 公钥文件)"; + color: Theme.text-muted; + font-size: Theme.fs-xs; + } } Rectangle { vertical-stretch: 1; } From d6e75c3bb29e2565d3642b63931bbad44c652cd4 Mon Sep 17 00:00:00 2001 From: yiTuoRou <1561074588@qq.com> Date: Fri, 5 Jun 2026 14:22:10 +0800 Subject: [PATCH 002/243] =?UTF-8?q?feat:=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/sidebar.slint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/sidebar.slint b/ui/sidebar.slint index 86c5cd82..cc8aabe9 100644 --- a/ui/sidebar.slint +++ b/ui/sidebar.slint @@ -379,7 +379,7 @@ export component Sidebar inherits Rectangle { } Text { - text: "meatshell v0.2"; + text: "meatshell v0.2.1"; color: Theme.text-muted; font-size: Theme.fs-xs; horizontal-alignment: center; From 38a7786d03ee7668082dbaf6cc57f8590a827a8a Mon Sep 17 00:00:00 2001 From: yiTuoRou <1561074588@qq.com> Date: Fri, 5 Jun 2026 18:45:05 +0800 Subject: [PATCH 003/243] =?UTF-8?q?feat:=20=E5=AE=89=E5=85=A8=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D(#12/#10/#8)=20+=20=E5=AE=8C=E6=95=B4=20i18n(#9)=20+?= =?UTF-8?q?=20Linux=20=E6=A1=8C=E9=9D=A2=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Security fixes / 安全修复: - #12 Windows 命令注入: open_with_os 改用 ShellExecuteW + sanitize_filename - #10 编辑会话密码回显: 不再回填真实密码, 留空保留原密码 - #8 密码内存清零: 新增 Secret 类型(zeroize), Drop 清零 + Debug 脱敏 Features / 新增: - #9 完整 i18n: 中/英双语, 运行时实时切换(Slint @tr + bundled .po + Rust t()) - 私钥文件选择器 + .pub 容错 + 路径统一 / - Linux: meatshell.desktop + install-linux.sh + xdg_app_id(Wayland 图标) - README 截图(docs/screenshots, 敏感信息已打码) 详见 CHANGELOG.md / see CHANGELOG.md for details. Co-Authored-By: Claude Opus 4.8 --- .gitignore | 1 + CHANGELOG.md | 54 ++++++++ Cargo.lock | 3 +- Cargo.toml | 5 +- README.en.md | 12 ++ README.md | 12 ++ assets/install-linux.sh | 64 +++++++++ assets/meatshell.desktop | 13 ++ build.rs | 10 +- docs/screenshots/01-welcome-en.png | Bin 0 -> 74606 bytes docs/screenshots/01-welcome.png | Bin 0 -> 67114 bytes docs/screenshots/02-terminal-btop.png | Bin 0 -> 216510 bytes lang/en/LC_MESSAGES/meatshell.po | 184 ++++++++++++++++++++++++++ lang/zh/LC_MESSAGES/meatshell.po | 184 ++++++++++++++++++++++++++ src/app.rs | 127 ++++++++++++------ src/config.rs | 66 ++++++++- src/i18n.rs | 64 +++++++++ src/main.rs | 1 + src/sftp.rs | 124 ++++++++++++----- src/ssh.rs | 19 +-- ui/app.slint | 59 ++++++--- ui/session_dialog.slint | 32 ++--- ui/sftp_panel.slint | 24 ++-- ui/sidebar.slint | 23 ++-- ui/terminal_view.slint | 10 +- ui/welcome.slint | 14 +- 26 files changed, 955 insertions(+), 150 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 assets/install-linux.sh create mode 100644 assets/meatshell.desktop create mode 100644 docs/screenshots/01-welcome-en.png create mode 100644 docs/screenshots/01-welcome.png create mode 100644 docs/screenshots/02-terminal-btop.png create mode 100644 lang/en/LC_MESSAGES/meatshell.po create mode 100644 lang/zh/LC_MESSAGES/meatshell.po create mode 100644 src/i18n.rs diff --git a/.gitignore b/.gitignore index 9008d583..519f5aa9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ Cargo.lock .DS_Store /.vscode /.idea +/.claude diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..93f6971a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,54 @@ +# Changelog / 更新日志 + +All notable changes are documented here. 本文件记录所有重要变更。 +中英对照(English first, 中文在后). + +## [0.2.2] - 2026-06-05 + +### Security / 安全 + +- **Fix Windows command injection (#12)** — `open_with_os` no longer shells out + via `cmd /C start`; it calls `ShellExecuteW` directly so a malicious remote + file name (e.g. `foo&calc.exe`) can't inject commands. Added `sanitize_filename` + as defence-in-depth. + **修复 Windows 命令注入 (#12)** —— 打开文件不再经 `cmd /C start`,改用 + `ShellExecuteW` 直接打开,恶意远程文件名(如 `foo&calc.exe`)无法注入命令; + 并新增 `sanitize_filename` 清洗作为纵深防御。 + +- **Stop echoing the saved password when editing a session (#10)** — the field + is left blank with a "leave blank to keep" hint; an empty field on save keeps + the existing password. + **编辑会话时不再回显已保存密码 (#10)** —— 密码框留空并提示「留空则不修改」, + 保存时为空则保留原密码。 + +- **Zero passwords in memory on drop (#8)** — passwords now use a `Secret` type + (`zeroize`) that wipes its heap buffer on drop and redacts itself in logs; the + on-disk JSON format is unchanged. + **密码内存清零 (#8)** —— 密码改用 `Secret` 类型(`zeroize`),Drop 时清零堆 + 内存、日志中脱敏;磁盘 JSON 格式不变。 + +### Added / 新增 + +- **Internationalization — Chinese / English with runtime switching (#9).** + Static UI uses Slint `@tr` + bundled `.po`; dynamic Rust strings use a `t()` + helper. Switch via the gear menu; the choice is persisted and the default + follows the system locale. + **国际化 —— 中 / 英双语,运行时实时切换 (#9)。** 静态界面用 Slint `@tr` + + bundled `.po`;Rust 动态文本用 `t()`。设置菜单里切换,选择会持久化,首次启动 + 跟随系统语言。 + +- **Private-key file picker** in the session dialog, plus `.pub` fallback (auto + strips the suffix to load the matching private key) and uniform `/` path + separators across platforms. + **会话弹窗的私钥文件选择器**,并支持 `.pub` 容错(自动去后缀加载对应私钥)、 + 路径分隔符统一为 `/`。 + +- **Linux desktop integration** — `assets/meatshell.desktop` + `install-linux.sh` + and an `xdg_app_id` so the GNOME/Ubuntu dock shows the app icon on Wayland. + **Linux 桌面集成** —— `assets/meatshell.desktop` + `install-linux.sh`,并设置 + `xdg_app_id`,使 Wayland 下 GNOME/Ubuntu 任务栏显示应用图标。 + +- **Screenshots in the README** (`docs/screenshots/`, sensitive info redacted). + **README 增加截图**(`docs/screenshots/`,敏感信息已打码)。 + +[0.2.2]: https://github.com/jeff141/meatshell/releases/tag/v0.2.2 diff --git a/Cargo.lock b/Cargo.lock index a06fd530..4f74c62d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3233,7 +3233,7 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "meatshell" -version = "0.1.0" +version = "0.2.2" dependencies = [ "anyhow", "arboard", @@ -3260,6 +3260,7 @@ dependencies = [ "uuid", "vt100", "winresource", + "zeroize", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 49457f73..21ebb0b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "meatshell" -version = "0.1.0" +version = "0.2.2" edition = "2021" authors = ["meatshell contributors"] description = "A lightweight FinalShell-style SSH/terminal client written in Rust + Slint" @@ -34,6 +34,9 @@ vt100 = "0.15" russh-sftp = "2" rfd = "0.15" arboard = "3" +# Zeroes password buffers on drop so plaintext credentials don't linger in +# freed heap memory (core dumps / debuggers / /proc/pid/mem). +zeroize = "1" [build-dependencies] slint-build = "1.8" diff --git a/README.en.md b/README.en.md index 4a26445f..f41b1ad4 100644 --- a/README.en.md +++ b/README.en.md @@ -8,6 +8,18 @@ FinalShell's core experience (resource-monitor sidebar, session management, tabbed terminals) while cutting memory use from the 400 MB+ of a JVM app down to the tens-of-MB range of a native binary. +## Screenshots + +

+ Welcome / session management
+ Welcome page: session management + local resource monitor sidebar +

+ +

+ Terminal + SFTP
+ Tabbed terminal (full-screen btop) + SFTP file browser + remote resource monitoring +

+ ## Roadmap ### v0.1 (current) diff --git a/README.md b/README.md index b61c38c4..a2d17760 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,18 @@ (资源监控侧栏、会话管理、多标签页终端)的同时,把内存占用从 400 MB+ 的 JVM 压到几十 MB 原生级别。 +## 截图 + +

+ 欢迎页 / 会话管理
+ 欢迎页:会话管理 + 左侧本机资源监控 +

+ +

+ 终端 + SFTP
+ 多标签页终端(btop 全屏渲染)+ 底部 SFTP 文件浏览 + 远端资源监控 +

+ ## 路线图 ### v0.1(当前) diff --git a/assets/install-linux.sh b/assets/install-linux.sh new file mode 100644 index 00000000..ae08c7a4 --- /dev/null +++ b/assets/install-linux.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +# +# Install meatshell's icon + desktop entry on Linux so the GNOME/Ubuntu dock and +# the app launcher show the app icon. +# +# Why this is needed: the Windows build embeds the icon in the .exe, but on Linux +# the icon comes from a freedesktop ".desktop" entry plus an icon installed into +# the hicolor icon theme. On Wayland (Ubuntu's default) the shell matches a +# running window to its .desktop file via the window's app_id — meatshell sets +# that to "meatshell" (slint::set_xdg_app_id), and this script's StartupWMClass +# matches it. +# +# Usage: +# ./install-linux.sh [/path/to/meatshell-binary] +# If no path is given it defaults to ../target/release/meatshell relative to +# this script. + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BIN="${1:-$SCRIPT_DIR/../target/release/meatshell}" +BIN="$(readlink -f "$BIN" 2>/dev/null || echo "$BIN")" + +if [ ! -x "$BIN" ]; then + echo "error: meatshell binary not found or not executable: $BIN" >&2 + echo "build it first (cargo build --release) or pass the path as an argument." >&2 + exit 1 +fi + +ICON_SRC="$SCRIPT_DIR/icon@512.png" +ICON_DIR="$HOME/.local/share/icons/hicolor/512x512/apps" +APP_DIR="$HOME/.local/share/applications" + +mkdir -p "$ICON_DIR" "$APP_DIR" +install -m644 "$ICON_SRC" "$ICON_DIR/meatshell.png" + +cat > "$APP_DIR/meatshell.desktop" </dev/null || true +gtk-update-icon-cache -f -t "$HOME/.local/share/icons/hicolor" 2>/dev/null || true + +echo "Installed:" +echo " icon -> $ICON_DIR/meatshell.png" +echo " desktop -> $APP_DIR/meatshell.desktop" +echo " exec -> $BIN" +echo +echo "If the dock still shows the generic icon, log out/in (Wayland) or run" +echo "'killall -3 gnome-shell' (X11) to refresh the shell." diff --git a/assets/meatshell.desktop b/assets/meatshell.desktop new file mode 100644 index 00000000..fbb21ae5 --- /dev/null +++ b/assets/meatshell.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Type=Application +Name=meatshell +GenericName=SSH Client +Comment=Lightweight Rust + Slint SSH/SFTP client +Comment[zh_CN]=轻量级 Rust + Slint SSH/SFTP 客户端 +Exec=meatshell +Icon=meatshell +Terminal=false +Categories=Network;System;TerminalEmulator;Utility; +Keywords=ssh;sftp;terminal;shell; +StartupNotify=true +StartupWMClass=meatshell diff --git a/build.rs b/build.rs index 0615df24..c278f341 100644 --- a/build.rs +++ b/build.rs @@ -1,8 +1,16 @@ fn main() { + // Bundle the gettext `.po` translations under `lang/` so the UI's `@tr(...)` + // strings can switch language at runtime via slint::select_bundled_translation. + // Source language is Chinese (the msgids); `lang//LC_MESSAGES/meatshell.po` + // provides other locales. No per-component context, so msgids are the raw + // Chinese strings. + println!("cargo:rerun-if-changed=lang"); slint_build::compile_with_config( "ui/app.slint", slint_build::CompilerConfiguration::new() - .with_style("fluent".into()), + .with_style("fluent".into()) + .with_bundled_translations("lang") + .with_default_translation_context(slint_build::DefaultTranslationContext::None), ) .expect("Slint build failed"); diff --git a/docs/screenshots/01-welcome-en.png b/docs/screenshots/01-welcome-en.png new file mode 100644 index 0000000000000000000000000000000000000000..b03022c2b24fee5d8b5d5091544395fc0c7198cd GIT binary patch literal 74606 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