No description
- Rust 87.7%
- Shell 10.1%
- Go 2%
- Dockerfile 0.2%
|
All checks were successful
build-agent / build (push) Successful in 53s
- install.sh 写出 /usr/local/bin/ipgate-update:记住本次的 --server / --repo,运行即拉最新 install.sh 原地升级;参数透传(--force / --version / -y),非 root 自动 sudo。 - 先完整下载到空临时目录再执行,不走 curl | bash:断流不会执行半截脚本,也不会误用同目录杂项当本地二进制。 - 「已是最新、跳过」路径同样生成,老部署重跑一次安装命令即可拿到。 - SERVER 统一去掉结尾斜杠(--server 与 IPGATE_SERVER 都适用)。 - uninstall.sh 一并删除 ipgate-update;agent README 记用法。 |
||
|---|---|---|
| .forgejo | ||
| .github/workflows | ||
| agent | ||
| docs/adr | ||
| ipecho | ||
| proto | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CONTEXT.md | ||
| README.md | ||
ipgate
跨平台的 Linux 服务器 IP 放行名单管理工具。
客户端(移动端 / PC / Mac)连接运行在远程 Linux 主机上的 agent,可视化地查看、增删、批量管理基于 nftables 的 IP 放行名单(allowlist)。
组成
| 目录 | 角色 | 技术栈 | 说明 |
|---|---|---|---|
client/ |
客户端 | Tauri 2 + Rust + WebView | 一套代码出 iOS / Android / Windows / macOS / Linux 包。GUI 管理界面。 |
agent/ |
服务端 | Rust 守护进程 | 跑在远程 Linux 主机上,落地 nftables 规则,对客户端暴露 API。 |
proto/ |
协议 | Rust crate(serde) | 客户端与 agent 共享的请求/响应类型,单一可信源。 |
┌─────────────────────────┐ TLS / 鉴权 ┌──────────────────────────┐
│ client (Tauri 2) │ ───────── API ──────────▶ │ agent (远程 Linux 主机) │
│ 移动端 / PC / Mac │ ◀──── 规则 / 状态 ─────── │ 落地 nftables 规则 │
└─────────────────────────┘ └──────────────────────────┘
共享 proto/(serde 类型) 内核 nft set: ipgate_allow
核心概念
- 放行名单 (Allowlist):被允许访问的 IP / CIDR 集合,落地为 nftables 的一个 named set。
- 条目 (Entry):名单中的一条,含 IP/CIDR、备注、过期时间(可选)。
- agent:远程主机上的服务端进程,唯一有权改动 nftables 的组件。
- 客户端 (Client):跨端 GUI,所有操作通过 agent 完成,自身不直接碰内核。
术语以 CONTEXT.md 为准。架构决策见 docs/adr/。
状态
🚧 脚手架阶段。各组件目录下的 README.md 记录了选型与待办,尚未开始编码。
开发起步(规划)
proto/先定协议类型(条目、名单、操作、错误)。agent/实现 nftables 落地 + API,可在一台测试 VPS 上单独跑通。client/用 Tauri 2 起 GUI,先打通桌面端,再补移动端。