用于清理 Gogs 中异常用户、组织、仓库,以及处理 org_user/team_user 脏成员关系的管理控制台。
推荐双击,不显示 CMD 窗口:
GogsAdminConsole.vbs
也可以双击:
GogsAdminConsole.bat
或在 PowerShell 中运行:
cd D:\GogsAdminConsole
.\GogsAdminConsole.bat在 连接 标签页填写:
Gogs 地址 http://你的-gogs地址:3000
Access Token 管理员 Access Token
Web 用户 管理员网页登录账号
Web 密码 管理员网页登录密码
说明:
Access Token用于 Gogs API 查询和删除。Web 用户/密码只在 API 无法解除组织成员关系时兜底使用。保存配置会使用配置密码加密保存连接参数到GogsAdminConsole.config.json。- Web 密码不会保存。
- Access Token 会保存到加密配置文件,保存前工具会确认。
- 启动时如果存在本地配置,需要输入配置密码;密码错误或文件无法解密时会停留在密码输入流程,取消输入后旧配置会按时间戳备份并生成新的加密配置。
GogsAdminConsole.config.json及其备份文件已加入.gitignore,不要提交到仓库。- 日志和错误信息会对 token、password、secret、api key 等字段做脱敏。
重置配置从配置文件恢复。清空输入恢复默认值。
- 在
连接标签页点击查询全部。 - 在
用户、组织、仓库标签页勾选要删除的项目。 - 确认受保护项目无法勾选。
- 点击
删除勾选项。 - 二次确认时输入
DELETE。
点击 查询全部 会先自动加密保存当前连接配置,再按搜索词、用户组织、用户仓库、组织仓库逐段请求;状态栏会显示当前分段进度,列表会随着分段结果自动刷新。查询期间可以点击 取消查询,工具会在当前分段请求结束后停止后续请求并保留已查询到的结果。
默认保护:
- 当前 token 用户
- 当前用户加入的组织
admin、root、git、gogs额外保护中填写的名称
如果搜索不到攻击者创建的异常仓库或组织,进入对应标签页点击 手动添加。
示例:
repo data/gogs/data/tmp/local-r/251/c275s1ak
org suspicious-org
user suspicious-user
http://example.com/data/gogs/data/tmp/local-r/251/c275s1ak
未加前缀且包含多段 / 的路径,会按仓库 owner/repo 处理。
如果删除用户时出现:
user still has membership of organizations
工具会自动尝试:
- 通过 API 移除用户的 team membership。
- 通过 Web 登录移除组织成员关系。
- 重试删除用户。
如果仍失败,通常是数据库中存在脏 org_user/team_user 记录。
在 用户 标签页勾选失败用户,然后进入 成员关系修复:
为勾选用户生成检查 SQL:只生成 SELECT,不删除。为勾选用户生成删除 SQL:生成 DELETE,需要先备份数据库。- SQL 会写入
gogs_repair_memberships.sql并复制到剪贴板。
Docker 容器内 SQLite 示例:
cp /app/gogs/data/gogs.db /app/gogs/data/gogs.db.bak.$(date +%Y%m%d%H%M%S)
sqlite3 /app/gogs/data/gogs.db "DELETE FROM team_user WHERE uid IN (72,74); DELETE FROM org_user WHERE uid IN (72,74);"执行数据库修复前必须先备份数据库,并确认 UID 只属于攻击者用户。
GogsAdminConsole.bat 双击启动入口
GogsAdminConsole.py GUI 主程序
config_store.py 加密配置读写和备份逻辑
query_service.py 分段查询、增量刷新事件和取消逻辑
gogs_cleanup.py Gogs API/Web 后端逻辑,不能删
gogs_db_repair_sql.py 成员关系修复 SQL 生成逻辑,不能删