Premod1/SiphonDB
GitHub: Premod1/SiphonDB
一款基于 Rust 和 Tauri v2 的轻量级跨平台桌面数据库客户端,支持多引擎连接、数据浏览编辑和内置 SSH 隧道功能。
Stars: 8 | Forks: 3
# SiphonDB 🌀
**SiphonDB** 是一个轻量级、现代化且响应速度极快的桌面数据库客户端和浏览器。它基于 **Tauri v2**、**React 19**、**TypeScript** 和 **Rust** 构建,可直接在您的桌面上提供时尚的毛玻璃质感数据库管理界面,并内置安全的 SSH 隧道功能。
## 🖥️ 截图
## ✨ 功能
- **🔋 多引擎支持**:无缝连接并查询 **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]`。
|
Data Preview & Explorer
|
Database Driver Selection
|
|
Connection Settings & SSH Tunneling
|
SQL Editor & Query Results
|
标签:React, Rust, SQL编辑器, SSH隧道, Syscalls, Tauri, 可视化界面, 数据库管理, 桌面客户端, 网络流量审计, 自动化攻击