Uttam-Mahata/RootAccess
GitHub: Uttam-Mahata/RootAccess
基于Go和Angular构建的全栈CTF竞赛平台,支持团队协作和动态积分机制。
Stars: 2 | Forks: 0
# RootAccess CTF 平台
一个高性能、全栈的 Capture The Flag (CTF) 平台,后端使用 Go (Gin) 构建,前端使用 Angular (v21) 构建。通过 Redis 缓存和 Turso DB (LibSQL) 实现高性能数据存储,专为可扩展性而设计。
## 🚀 功能特性
- **动态积分**:挑战的分数随着更多团队解出而减少(CTFd 公式)。
- **团队赛制**:创建或加入团队,共同解决挑战并攀登排行榜。
- **实时记分板**:缓存的全球和团队排名。
- **后台管理**:用于创建挑战、广播通知和用户管理的专用控制面板。
- **强大的安全性**:
- 带有 HTTP-only Cookie 的 JWT 身份验证。
- Flag 提交的速率限制。
- 邮箱验证和安全密码重置。
- 基于角色的访问控制 (RBAC)。
- **性能优化**:
- **Redis 缓存**:频繁访问的数据(如记分板)在内存中缓存。
- **Turso DB (LibSQL)**:边缘数据库集成,确保全球快速读取和高并发。
## 🏗️ 架构图
[](https://raw.githubusercontent.com/Uttam-Mahata/RootAccess/main/rootaccess-aws.png)
### 后端
- **语言**:Go 1.24
- **框架**:Gin (HTTP web framework)
- **主数据库**:Turso DB (LibSQL)
- **缓存**:Redis 7.x
- **邮件**:用于验证和重置的 SMTP 集成。
### 前端
- **框架**:Angular 21
- **样式**:Tailwind CSS v4 & SCSS
- **UX/UI**:Material Design 原则,支持自定义深色/浅色主题。
## 📋 前置条件
- **Docker & Docker Compose**(推荐用于生产环境)
- **Go**:版本 1.24+(用于本地开发)
- **Node.js**:版本 22+(用于本地开发)
- **Turso CLI**:可选(用于 DB 管理)
- **Redis**:版本 6.0+
## 🛠️ 设置说明
### 生产部署 (Docker)
1. **克隆仓库:**
git clone https://github.com/Uttam-Mahata/RootAccess.git
cd RootAccess
2. **配置环境:**
复制示例 compose 文件并更新您的凭据:
cp docker-compose.prod.example.yml docker-compose.prod.yml
# 使用您的 SMTP, DB 和 JWT 密钥编辑 docker-compose.prod.yml
### 本地开发
#### 后端
1. `cd backend`
2. `cp .env.example .env`(配置您的 Turso DB/Redis/SMTP)
3. `go mod download`
4. `go run cmd/api/main.go`
#### 前端
1. `cd frontend`
2. `npm install`
3. `npm start`
## 🔑 管理员设置
注册用户默认为普通用户。要创建初始管理员:
## 🌐 API 端点
### 公开
- `POST /auth/register` - 用户注册
- `POST /auth/login` - 用户登录(设置 HTTP-only Cookie)
- `GET /scoreboard` - 获取缓存的排行榜
- `GET /notifications` - 查看活动的管理员广播
### 受保护 (用户)
- `POST /challenges/:id/submit` - 提交 Flag(有速率限制)
- `POST /teams` - 创建团队
- `POST /teams/join/:code` - 通过邀请码加入团队
### 管理员
- `POST /admin/challenges` - 创建新挑战
- `POST /admin/notifications` - 广播公告
- `POST /admin/notifications/:id/toggle` - 激活/停用广播
## 📁 项目结构
```
RootAccess/
├── backend/
│ ├── cmd/api/main.go # API Entry point
│ ├── cmd/admin/main.go # Admin CLI tool
│ ├── internal/
│ │ ├── database/ # Turso DB & Redis logic
│ │ ├── services/ # Business logic (Caching, Auth, etc.)
│ │ └── handlers/ # HTTP Controllers
├── frontend/
│ ├── src/app/components/ # Angular UI Components
│ └── src/app/services/ # Frontend API services
├── docker-compose.prod.yml # Production orchestration
└── README.md
```
## 🛡️ 安全注意事项
- **密钥**:永远不要将 `.env` 或 `docker-compose.prod.yml` 提交到版本控制。
- **JWT**:在生产环境中,确保 `JWT_SECRET` 是一个随机的 32 位以上字符串。
- **SMTP**:端口 25 通常被 ISP 屏蔽;请使用端口 587 (STARTTLS) 或 465 (SSL)。
为 CTF 社区用 ❤️ 制作
标签:Angular, CISA项目, CTF平台, Gin框架, Go语言, Grype, HTTPX, JWT认证, LibSQL, Material Design, RBAC, Redis缓存, Tailwind CSS, Turso数据库, Web安全, 动态积分, 后端开发, 团队竞赛, 实时记分板, 性能优化, 搜索引擎查询, 教育平台, 日志审计, 检测绕过, 用户管理, 程序破解, 竞赛系统, 管理后台, 网络安全, 蓝队分析, 角色访问控制, 请求拦截, 边缘数据库, 限流, 隐私保护, 高并发