Commit Graph
15 Commits
Author SHA1 Message Date
kevin 44b51b3b04 feat: 实现第三层 TUN VPN 服务,支持后台 IP 分配
- 新增 TUN 设备层(water 库),分 linux/darwin 平台配置 IP/路由/MTU
- 实现 IP 分配管理:动态池自动分配 + 按用户静态预留,支持热更新
- 实现 PacketSwitch 共享 TUN 包转发:源 IP 防伪、按目的 IP 查表转发、allow-c2c
- 重写隧道:自研简化 WS 协议(文本帧 JSON 控制 init/ready,二进制帧=原始 IP 包)
- VpnService 单例管理 TUN 生命周期,子网变更踢线重建,预留增删热更新
- 新增 vpn_settings/vpn_reservations 表,AutoMigrate + 默认设置 seed
- 新增 Admin API:settings 读写、status、clients、reservations CRUD
- 前端新增 VpnView(/admin/vpn):状态面板/设置表单/在线客户端/静态预留
- main.go 启动时按 DB 设置初始化 VPN 服务
2026-07-03 14:49:56 +08:00
kevin 61189a53ec fix: 修复权限边界与安全问题
- JWT 密钥改为环境变量/配置文件/随机生成注入,移除硬编码
- AuthMiddleware 用数据库 role 覆盖 claims,降级/禁用即时生效
- 改 role/status 时主动失效目标用户会话
- /ws 支持 JWT 认证(?token=),兼容密码认证,CheckOrigin 改同源校验
- 默认管理员改用随机密码,stdout 与文件双交付
- 登录与 WS 密码认证加限流(5次/分钟)
- role 字段白名单校验(仅 admin/user)
- socket/目录权限可配置(sock_mode/sock_group/sock_dir_mode),默认兼容现状
- 配置文件权限收紧 0644→0600,目录 0755→0700
- 静态文件改用 http.Dir.Open + NoRoute,移除手动路径拼接
- 隧道加 SetReadLimit(1MB) 与单用户连接数上限(3)
- README 补充安全配置与生产部署说明
2026-07-03 14:12:03 +08:00
kevin c1d560fd4a feat: 会话管理 - 支持按设备粒度踢下线
- 新增 sessions 表,每次登录创建会话记录(记录 IP/UA)
- AuthMiddleware 改为基于 session 校验,可精确踢掉单个设备
- 自己改密码后踢掉其他设备,管理员改密码后踢掉该用户全部设备
- 新增 GET /api/me/sessions 查看活跃会话列表
- 新增 DELETE /api/me/sessions/:sessionId 踢掉指定会话
- 新增 DELETE /api/admin/users/:id/sessions 管理员强制下线某用户
- 兼容无 session_id 的旧 token,回退到 TokenInvalidBefore 校验
2026-07-03 10:52:39 +08:00
kevin f830406be7 up 2026-07-03 10:38:22 +08:00
kevin 03470475aa up install 2026-07-03 10:30:02 +08:00
kevin fe91a8ffb2 管理后台新增用户总数卡片,点击进入用户管理,移除header用户管理按钮 2026-07-03 10:24:52 +08:00
kevin e65b31abb0 新增用户管理和个人信息功能,支持CRUD操作和密码修改 2026-07-03 10:18:08 +08:00
kevin ca9b1e751c 写了个安装脚本 2026-07-02 22:51:26 +08:00
kevin 9bb35740fc 修改sock权限 2026-07-02 22:36:04 +08:00
kevin 6ca1c07cfa 封装路由 2026-07-02 22:34:15 +08:00
kevin 621625ad1e 重写前端 2026-07-02 21:03:51 +08:00
kevin 0634cadced 更新管理登录功能 2026-07-02 20:45:53 +08:00
kevin 91c9e12c3c 添加 WebSocket VPN 接口及用户认证
- 移动 config 包到 internal/config,新增 DatabaseConfig
- 使用 GORM + SQLite 管理用户数据,预留 MySQL 支持
- 新增 internal/model/user.go GORM 用户模型
- 新增 internal/db/db.go 数据库初始化及默认管理员
- 新增 internal/vpn/ WebSocket 鉴权与隧道骨架
- /ws 路径支持用户名+密码鉴权 (bcrypt)
- 心跳保活 + echo 隧道模式
2026-07-02 20:30:11 +08:00
kevin 5dddc93233 增加配置功能 2026-07-02 20:13:12 +08:00
kevin 083b6e5dbe init 2026-07-02 19:56:13 +08:00