Skip to content

Repository files navigation

KitDock

KitDock 应用图标

一个原生、隐私优先、面向开发者的 macOS 工具箱。

CI macOS 14+ Swift 6 MIT License

KitDock 将日常开发中常用的数据处理、编码、时间转换、内容生成、密码学、端口与进程查询和 SSH 端口代理集中在一个应用中。转换、密码学计算和系统查询均在本机完成,不需要账号,也不会把编辑内容发送到网络服务;只有用户主动启动 SSH 隧道时,应用才会连接其明确配置的跳板机和目标服务。

特点

  • 使用 Swift、SwiftUI 和少量 AppKit 构建,保持原生 macOS 体验。
  • 数据转换、生成和密码学工具完全离线运行,不依赖在线 API。
  • 可查询 TCP/UDP 端口占用和本机进程,并在确认后发送普通或强制终止信号。
  • SSH 端口代理基于 macOS 自带 OpenSSH,不引入常驻代理服务。
  • 简体中文、English 和跟随系统三种语言模式。
  • 支持浅色、深色和跟随系统外观。
  • 核心逻辑与界面分离,KitDockCore 可独立测试和复用。
  • 没有第三方运行时依赖。

功能

分类 工具 能力
数据 JSON 格式化、压缩、校验、字符串转义与反转义
文本 文本处理 查找替换、排序、去重、清理、命名格式和换行符转换
文本 正则表达式 匹配、捕获组和替换预览
文本 Diff 行级对比和 Unified Diff
编码 Base64 标准 Base64、Base64URL 编码与解码
编码 URL 查询参数值编解码、URL 解析、参数编辑和重新组装
时间 时间与时区 Unix 时间戳、ISO 8601、本地日期时间和 IANA 多时区转换
生成 UUID / 密码 UUID v4 批量生成和安全随机密码生成
安全 哈希 / HMAC SHA-256、SHA-384、SHA-512 和 HMAC 计算与验证
安全 认证加密 AES-GCM、ChaCha20-Poly1305 和版本化 JSON envelope
安全 JWT Header/Payload 解析、数字日期状态和 HS256/384/512 验签
网络 端口与进程 TCP/UDP 端口占用、进程筛选、资源排序和确认后终止
网络 SSH 端口代理 多个命名配置、增删改、密码或私钥认证,以及本地端口启停

不包含账号、云同步、在线 API、插件系统、输入历史或 AI 功能。

端口与进程

  • 使用 macOS 系统的 lsofps 查询本机 TCP 监听、UDP 绑定和进程信息,不经 shell 拼接参数。
  • 支持按端口、PID、进程名、用户、地址或命令搜索,以及按协议、用户范围和资源占用筛选排序。
  • 普通终止发送 SIGTERM,强制结束发送 SIGKILL,两者均需要二次确认。
  • 终止前会再次核对进程启动时间,避免 PID 被复用后误终止另一个进程。
  • 不请求管理员权限或安装特权 helper;能查看和终止的范围完全由当前 macOS 用户权限决定。

SSH 端口代理

端口代理用于通过 SSH 跳板机访问不能直接从公网连接的 MySQL、Redis 等 TCP 服务:

  • 可保存多个自定义命名的隧道配置,并独立新增、编辑、删除、启动和停止。
  • 跳板机支持用户名 + 密码,或私钥 + 可选口令两种认证方式。
  • 本地监听固定绑定到 127.0.0.1,不会把数据库端口暴露给局域网。
  • 使用系统 /usr/bin/ssh 建立本地端口转发,不经过 shell 拼接命令。
  • 密码与私钥口令通过匿名本地 socket 和系统 SSH_ASKPASS 交给 OpenSSH,不进入命令参数、环境变量或连接日志。
  • 内嵌的最小 watchdog helper 监督 SSH 生命周期;即使 KitDock 崩溃或被强制结束,也会终止并回收对应 SSH 进程组。
  • SSH 密码、私钥和私钥口令保存在 macOS Keychain;私钥仅在连接时写入权限为 0600 的临时文件,并在认证完成或停止后删除。
  • 主机密钥写入 KitDock 专属 known_hosts,首次连接需由用户核对并确认指纹。
  • 应用不会探测或连接配置之外的主机;目标服务流量仅在隧道运行期间经用户指定的跳板机转发。

环境要求

  • macOS 14 或更高版本
  • Xcode 26.3(当前开发与 CI 验证版本)
  • Swift 6

快速开始

使用 SSH:

git clone git@github.com:kar1hsu/kitDock.git
cd kitDock
open KitDock.xcodeproj

也可以使用 HTTPS:

git clone https://github.com/kar1hsu/kitDock.git

在 Xcode 中选择 KitDock scheme,按 Command + R 运行。

本机开发和运行使用本地 ad-hoc 签名的 Debug App 不需要 Apple Developer Program 账号。通过 Mac App Store 发布,或使用 Developer ID 签名、公证后公开分发时,才需要加入相应的 Apple 开发者计划。

开发命令

命令 用途
make test 运行 KitDockCore 单元测试
make build 构建当前 Mac 架构的 Debug App
make run 构建并直接运行 App
make check 依次运行测试和 Debug 构建
make package 生成 Apple Silicon 与 Intel 通用 DMG
make clean 清理本机构建产物

项目包含覆盖核心转换、密码学、系统查询解析和 SSH 隧道配置的单元测试。CI 会在推送到 main 和 Pull Request 时运行测试并构建 macOS App。

生成本地安装包

make package

完成后可在 dist/ 中找到:

KitDock-<version>-macOS-universal.dmg
KitDock-<version>-macOS-universal.dmg.sha256

打开 DMG,将 KitDock 拖入“应用程序”即可。本地安装包使用 ad-hoc 签名,适合开发和自用;它没有经过 Developer ID 签名或 Apple 公证,从网络传输到其他 Mac 后可能被 Gatekeeper 阻止。

项目结构

KitDock/
├── KitDock/                       # SwiftUI / AppKit 应用界面
├── KitDockTunnelWatchdog/         # SSH 异常退出清理 helper
├── Packages/KitDockCore/          # 可独立测试的核心逻辑
│   ├── Sources/KitDockCore/
│   └── Tests/KitDockCoreTests/
├── KitDock.xcodeproj/             # macOS App 工程
├── scripts/
│   ├── package-dmg.sh              # 通用 DMG 打包脚本
│   └── sign-app.sh                 # App 与 watchdog 内到外签名脚本
└── .github/                       # CI、Issue 和 PR 模板

隐私与安全

  • 通用工具的输入、输出、临时密码和临时密钥不会写入历史记录或持久化保存。
  • 用户保存的 SSH 隧道连接信息会保存在本机;配置元数据存入应用设置,密码、私钥和私钥口令存入 macOS Keychain。
  • 离开敏感工具页面时会清理其输入状态。
  • 收藏、常用时区、界面语言、外观和部分工具偏好会保存在本机 UserDefaults 中。
  • 编码、哈希、消息认证和加密在界面中明确区分,密码学能力使用系统框架实现。
  • 端口与进程工具只调用本机系统命令。为允许查询本机进程并发送终止信号,直接分发版本不启用 App Sandbox;应用不会提权,操作仍受当前 macOS 用户权限限制。
  • 转换类工具不访问网络;SSH 隧道只连接用户明确配置的跳板机和目标地址。
  • 请勿在公开 Issue、日志或截图中提交真实密码、密钥、令牌或其他敏感数据。

安全问题请遵循 安全策略,不要通过公开 Issue 披露可利用细节。

参与贡献

欢迎提交 Bug 报告、功能建议和 Pull Request:

提交代码前请运行:

make check

License

KitDock 采用 MIT License 开源。

About

KitDock is a fast, open-source macOS toolbox built for developers.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages