Thorgathis/CTFd-Modules
GitHub: Thorgathis/CTFd-Modules
CTFd 3.x 插件,为比赛题目提供模块化分组管理、私有模块邀请码访问控制以及排行榜过滤功能。
Stars: 3 | Forks: 1
# CTFd 模块
适用于 CTFd 3.x 的插件,通过私有访问、invite 码和排行榜显示控制,增加模块(题目集合)系统。
## 功能特性
1. 按模块和类别对题目进行分组。
2. 模块状态:`public`、`private`、`locked`。
3. 访问私有模块:
- 通过管理后台手动操作,
- 通过 invite 码。
4. 面向参赛者的独立页面:
- 模块列表,
- 模块页面,
- join 页面,
- locked 页面。
5. 控制主排行榜 `/challenges`:
- 显示所有题目,
- 仅显示模块内的题目,
- 仅显示模块外的题目。
6. 兼容多种主题(`auto`、`pixo`、`core-beta`),并在模态框中稳定运行 `Solves` 标签页。
## 主要 URL
### 面向参赛者
- `/modules` — 模块列表。
- `/modules/` — 模块题目。
- `/modules/join?code=MOD-XXXXXXXX` — 通过代码进入私有模块。
### 面向管理员
- `/plugins/ctfd_modules/admin/modules` — 模块列表及管理。
- `/plugins/ctfd_modules/admin/categories` — 模块分类。
- `/plugins/ctfd_modules/admin/settings` — 插件设置。
## 安装说明
**需求:CTFd 3.x**
1. 将 `ctfd_modules/` 文件夹复制到 `CTFd/plugins/ctfd_modules/`。
2. 重启 CTFd。
3. 打开 `Admin -> Plugins -> CTFd Modules`。
## 配置
### 插件设置

| 选项 | 内容 |
| :--- | :--- |
| **Enable Modules plugin** | 启用/禁用插件 |
| **Main challenge board** | `GET /api/v1/challenges` 的过滤模式:`all`、`only_modules`、`only_unassigned` |
| **Redirect /challenges to /modules** | 将参赛者重定向到模块页面 |
| **Invite code length** | 私有模块的 invite 码长度 |
| **Locked module message** | locked 模块页面的提示文本 |
| **UI theme compatibility** | 界面兼容模式:`auto`、`pixo`、`core-beta` |
### 模块列表(管理后台)

支持的操作:
- 按状态和类别筛选;
- 创建新模块;
- 进入模块编辑;
- 删除模块。
### 模块卡片(编辑)

| 字段 | 描述 |
| :--- | :--- |
| **Name** | 模块名称 |
| **Category** | 模块类别 |
| **Status** | `public` / `private` / `locked` |
| **Banner URL** | 模块卡片中的横幅 |
| **Order** | 列表中的排序 |
| **Invite Code** | private 模块的访问代码 |
### 将题目关联到模块

支持两种流程:
1. 创建题目时选择模块,保存后它会出现在编辑页面。
2. 编辑题目时可以更改或移除模块。
## 用户页面
### 模块列表

### 私有模块 Join 页面

### Locked 页面

### 模块题目页

标签:CTFd, Flask, Python, Streamlit, Syscall, Web开发, 后台管理, 安全教育, 开源, 插件, 数据可视化, 无后门, 模块管理, 私有访问, 竞赛平台, 系统扩展, 网络安全, 访问控制, 调试辅助, 逆向工具, 邀请码, 隐私保护, 题目分组