Premod1/SiphonDB

GitHub: Premod1/SiphonDB

一款基于 Rust 和 Tauri v2 的轻量级跨平台桌面数据库客户端,支持多引擎连接、数据浏览编辑和内置 SSH 隧道功能。

Stars: 8 | Forks: 3

# SiphonDB 🌀 **SiphonDB** 是一个轻量级、现代化且响应速度极快的桌面数据库客户端和浏览器。它基于 **Tauri v2**、**React 19**、**TypeScript** 和 **Rust** 构建,可直接在您的桌面上提供时尚的毛玻璃质感数据库管理界面,并内置安全的 SSH 隧道功能。 ## 🖥️ 截图

Data Preview & Explorer

Data Preview & Explorer

Database Driver Selection

Database Driver Selection

Connection Settings & SSH Tunneling

Connection Settings

SQL Editor & Query Results

SQL Editor
## ✨ 功能 - **🔋 多引擎支持**:无缝连接并查询 **PostgreSQL**、**MySQL / MariaDB** 以及本地 **SQLite** 数据库文件。 - **🔒 内置 SSH 隧道**:直接在应用程序内建立加密的 SSH 隧道。支持**密码**和**私钥**(.key, .pem)身份验证,完全由多线程 Rust 执行。 - **📊 交互式数据网格**:通过分页表格视图浏览 schema 表,利用基于 CSS 的动态数据转换(自动处理 decimal、binary 和 geometry 类型)。 - **🛠 行级操作**:利用自动主键发现功能,直接**插入 (Insert)**、**编辑 (Edit)**、**复制 (Duplicate)** 和**删除 (Delete)** 数据库行。 - **⚡ SQL 编辑器**:运行自定义的任意 SQL 查询,支持表格输出渲染、语法错误警报以及直接执行数据库操作。 - **♻️ 自我修复连接池**:自动重连钩子,在服务器会话或 SSH 隧道失效时静默重试失败的查询。 - **🎨 现代毛玻璃质感设计**:清晰的深色模式界面,带有可折叠的侧边栏、流畅的微动画以及使用 TailwindCSS v4 构建的响应式布局。 ## 🛠 技术栈 - **前端**:React 19, TypeScript, TailwindCSS v4, Lucide React, Vite - **桌面运行时 (Desktop Runtime)**:Tauri v2(Rust 后端,系统集成系统对话框) - **数据库核心 (Database Core)**:`@tauri-apps/plugin-sql`(用于 SQLite、MySQL 和 PostgreSQL 的本地数据库驱动程序) - **SSH 协议**:Rust `ssh2` crate,结合 `vendored-openssl` 实现自包含的安全通信桥接 ## 📂 项目结构 ``` SiphonDB/ ├── src/ # React Frontend │ ├── components/ │ │ ├── DbExplorer/ # Core Explorer View │ │ │ ├── DataGrid # Grid table component │ │ │ ├── TableSidebar # Schema and tables selector │ │ │ ├── SqlEditorTab # Query editor and runner │ │ │ └── RowEditorModal# Row insert/edit modal dialog │ │ ├── ConnectionModal # Database profile creation wizard │ │ └── Sidebar # Global saved profiles panel │ ├── hooks/ │ │ └── useConnectionManager.ts # Sqlite-backed profile storage hook │ └── utils/ │ └── db.ts # Connection URI builders & SQL query helpers └── src-tauri/ # Tauri Desktop Shell (Rust) ├── src/ │ ├── main.rs # Tauri entry point │ ├── lib.rs # Command registering & state initialization │ └── ssh_tunnel.rs # Rust background SSH TCP-bridge & tunnel worker └── Cargo.toml # Rust dependencies (ssh2, tauri-plugin-sql) ``` ## 🚀 快速开始 ### 前置条件 要在本地运行 SiphonDB,请确保您的机器上已安装以下内容: 1. **Node.js**(v18.x 或更高版本) 2. **Rust** 工具链(通过 [rustup](https://rustup.rs/) 安装) 3. 适用于您操作系统的开发包(请参阅 [Tauri 的前置条件指南](https://tauri.app/start/prerequisites/)) ### 安装 1. 克隆或导航到项目目录: cd SiphonDB 2. 安装 JavaScript/TypeScript 依赖项: npm install ### 在开发模式下运行 启动 Vite 开发服务器并运行 Tauri 窗口: ``` npm run tauri dev ``` ### 构建生产版本 将 SiphonDB 打包成独立的特定平台安装程序(可执行文件): ``` npm run tauri build ``` ### 🤖 CI/CD 与自动化发布 本项目配置了 GitHub Actions 来自动化跨平台发布。当您推送到 `main` 分支或推送以 `v` 开头的 tag(例如 `v0.1.0`)时: - **Windows**:构建独立的可执行文件和 MSI 安装程序。 - **macOS**:编译通用二进制文件(Intel + Apple Silicon 目标)。 - **Linux (Ubuntu)**:打包为 AppImage 和 `.deb` 包。 所有编译好的资产都会自动上传到 GitHub 上的新 **Draft Release** 中。 ## 🔒 安全说明 ## ⚙️ 架构与 SSH 隧道 当您勾选 **Enable SSH Tunneling** 时,Tauri 会启动以下序列: 1. React 前端调用 `start_ssh_tunnel` Rust 命令。 2. Rust 将本地监听器绑定到 `127.0.0.1:0` 上的一个随机空闲端口。 3. 初始化 SSH 会话并进行身份验证,然后向远程数据库端口请求 direct-tcpip 通道。 4. 后台线程监听本地端口上的传入连接,并在本地 TCP 流与 SSH 通道流之间进行双向桥接。 5. 本地端口被返回给 React,后者会更新连接 URI,将所有查询重定向至 `127.0.0.1:[random_port]`。
标签:React, Rust, SQL编辑器, SSH隧道, Syscalls, Tauri, 可视化界面, 数据库管理, 桌面客户端, 网络流量审计, 自动化攻击