mirror of
https://gitee.com/xiarenalofs/squad-rain-ops-mini.git
synced 2026-08-08 06:15:34 +08:00
267 lines
6.6 KiB
Markdown
267 lines
6.6 KiB
Markdown
# Squad Rain Ops Mini
|
||
|
||
`Squad Rain Ops Mini` 是一个面向《Squad》服务器服主管理场景的轻量化运维面板项目。
|
||
|
||
项目基于 `.NET 6` 开发,集成了 `RCON`、Web 管理后台、日志解析、权限系统、插件系统、VIP/CDK/积分管理、封禁同步和 FRP 内网穿透辅助能力,适合用于中小型服务器的日常运营和管理。
|
||
|
||
## 项目简介
|
||
|
||
本项目的目标是把服主常用的管理动作集中到一个统一后台中,减少频繁切换 RCON、配置文件、日志文件和脚本工具的成本。
|
||
|
||
系统支持:
|
||
|
||
- 首次安装向导
|
||
- 后台登录鉴权
|
||
- 用户、角色与权限管理
|
||
- 实时服务器状态查看
|
||
- 玩家管理
|
||
- 聊天记录与日志查询
|
||
- VIP、CDK、积分与封禁管理
|
||
- 插件扩展
|
||
- 部分配置文件在线编辑
|
||
|
||
## 技术栈
|
||
|
||
- 后端:ASP.NET Core Web App (`.NET 6`)
|
||
- 数据存储:SQLite + SqlSugar
|
||
- 实时通信:SignalR
|
||
- 前端:HTML + Bootstrap + Vue
|
||
- 服务器接入:Squad RCON
|
||
- 日志处理:本地 `SquadGame.log` 实时解析
|
||
|
||
## 核心功能
|
||
|
||
### 安装初始化与基础配置
|
||
|
||
- 自动检测 `SquadGame/ServerConfig/Rcon.cfg` 中的 RCON 配置
|
||
- 首次配置 Web 管理账号、密码、RCON 地址、端口和密码
|
||
- 自动检测 Web 端口占用
|
||
- 支持控制台命令查看与修改 RCON、Web 端口、登录信息
|
||
|
||
### Web 管理后台
|
||
|
||
- 登录页、验证码接口、会话鉴权
|
||
- 未登录访问后台时自动重定向到登录页
|
||
- 已初始化后自动屏蔽重复进入安装页
|
||
- 支持按角色和权限点控制页面与接口访问能力
|
||
|
||
### 用户、角色与权限系统
|
||
|
||
- 后台子账号创建、启用、禁用、删除
|
||
- 支持重置后台用户密码
|
||
- 角色管理与权限点分配
|
||
- 支持超级管理员与细粒度权限共存
|
||
|
||
### 实时服务器状态监控
|
||
|
||
- 实时获取服务器基础信息
|
||
- 获取在线玩家、队伍、分队等信息
|
||
- 支持设置 RCON 刷新频率
|
||
- 支持通过 SignalR 向前端推送实时数据
|
||
|
||
### RCON 控制台与远程执行
|
||
|
||
- Web 端执行 RCON 命令
|
||
- 本地控制台直接透传 RCON 指令到游戏服务器
|
||
- 支持管理员踢人、警告、强制击杀、改图等高频动作
|
||
|
||
### 玩家管理
|
||
|
||
- 玩家列表分页查询
|
||
- 按昵称、SteamID、EOSID 搜索玩家
|
||
- 查看玩家详情
|
||
- 查询玩家近 30 天会话记录
|
||
- 查询玩家本局击杀/死亡明细
|
||
- 查询玩家 TeamKill 历史
|
||
- 查询同 IP 在线玩家
|
||
|
||
### 聊天记录与日志分析
|
||
|
||
- 实时接收 RCON 主动推送消息
|
||
- 保存聊天记录到 SQLite
|
||
- 查询最近聊天消息
|
||
- 支持聊天历史分页和关键字搜索
|
||
|
||
### 封禁管理与封禁同步
|
||
|
||
- 查看封禁列表
|
||
- 搜索封禁记录
|
||
- 新增封禁并支持同步踢出在线玩家
|
||
- 解除封禁
|
||
- 手动触发封禁配置同步
|
||
|
||
### VIP、积分与 CDK
|
||
|
||
- 管理 VIP / SVIP 成员并同步到 `Admins.cfg`
|
||
- 查看与修改玩家积分
|
||
- 批量生成 VIP / SVIP CDK
|
||
- 提供 CDK 兑换能力
|
||
|
||
### 配置文件与地图管理
|
||
|
||
- 在线读取与保存 `SquadGame/ServerConfig` 下的配置文件
|
||
- 支持改图、切图类管理动作
|
||
- 支持快速编辑常用 `.cfg/.txt/.ini` 文件
|
||
|
||
### 插件系统
|
||
|
||
- 自动扫描并加载实现 `IPlugin` 的插件
|
||
- 支持插件列表查看
|
||
- 支持插件配置更新与重置
|
||
- 插件配置位于 `PluginConfig/`
|
||
|
||
### 内置插件
|
||
|
||
- `WelcomePlugin`
|
||
- `TKAutoKickPlugin`
|
||
- `TicketQueryPlugin`
|
||
- `TeamSwitchPlugin`
|
||
- `TeamBalancePlugin`
|
||
- `SquadCreationAnnouncePlugin`
|
||
- `ScratchCardPlugin`
|
||
- `RedPacketPlugin`
|
||
- `RedemptionPlugin`
|
||
- `PersonalBuffPlugin`
|
||
- `ManualSignInPlugin`
|
||
- `LotteryPlugin`
|
||
- `GameTimeQueryPlugin`
|
||
- `CdkRedeemPlugin`
|
||
- `CallOpPlugin`
|
||
- `BroadcastPlugin`
|
||
- `AutoSignInPlugin`
|
||
- `AfkKickPlugin`
|
||
|
||
### FRP 内网穿透辅助
|
||
|
||
- 控制台支持 `frp start`、`frp stop`、`frp restart`
|
||
- Web 端提供 FRP 相关 API
|
||
- 项目附带 FRP 配置与 systemd 示例文件
|
||
|
||
## 项目目录
|
||
|
||
```text
|
||
Apis/ 模块化接口定义
|
||
Helpers/ RCON、日志、数据库、通用工具
|
||
Hubs/ SignalR Hub
|
||
Models/ 数据模型
|
||
Plugins/ 内置插件实现
|
||
PluginConfig/ 插件配置文件
|
||
Services/ 后台服务与业务服务
|
||
SquadGame/ServerConfig/ Squad 服务器配置目录
|
||
wwwroot/ 前端静态页面与资源
|
||
FRP/ FRP 相关文件
|
||
SteamTimeQuery/ 辅助查询子项目
|
||
```
|
||
|
||
## 运行说明
|
||
|
||
### 环境要求
|
||
|
||
- Windows 环境优先
|
||
- `.NET 6 SDK`
|
||
- 可访问的 Squad 服务器 RCON
|
||
- 本地或映射到项目目录下的 `SquadGame` 日志与配置目录
|
||
|
||
### 启动步骤
|
||
|
||
1. 安装 `.NET 6 SDK`
|
||
2. 进入项目目录
|
||
3. 执行 `dotnet restore`
|
||
4. 执行 `dotnet run`
|
||
5. 浏览器访问控制台输出的 Web 地址
|
||
6. 首次运行按向导完成初始化
|
||
|
||
### 常用控制台命令
|
||
|
||
- `help`
|
||
- `status`
|
||
- `connect`
|
||
- `Config`
|
||
- `setrcon`
|
||
- `setwebport`
|
||
- `showlogin`
|
||
- `resetlogin`
|
||
- `frp start` / `frp stop` / `frp restart`
|
||
|
||
## 数据与配置说明
|
||
|
||
项目运行时会产生或使用以下数据文件:
|
||
|
||
- `rcon_config.json`
|
||
- `users.json`
|
||
- `roles.json`
|
||
- `vip_members.json`
|
||
- `RainOps.db`
|
||
- `SquadGame/Saved/Logs/SquadGame.log`
|
||
|
||
这些文件通常属于部署环境数据,不建议直接公开到代码仓库。
|
||
|
||
## 许可说明
|
||
|
||
本项目采用自定义许可证:`RainOps Mini Non-Commercial License v1.0`。
|
||
|
||
你可以:
|
||
|
||
- 下载
|
||
- 学习
|
||
- 复制
|
||
- 修改
|
||
- 在非商业场景下重新分发
|
||
|
||
你必须:
|
||
|
||
- 明确标注原始面板开发者为 `虾仁`
|
||
- 在 README、说明文档或明显界面位置保留开发者署名
|
||
- 修改后说明你做过变更
|
||
|
||
你不能:
|
||
|
||
- 将本项目或修改版用于商业用途
|
||
- 删除、隐藏或伪造原始开发者署名
|
||
|
||
如需商业授权,请联系原开发者 `虾仁`。
|
||
|
||
## 功能截图
|
||
|
||
### 登录页
|
||
|
||

|
||
|
||
### 仪表盘
|
||
|
||

|
||
|
||
### 玩家管理
|
||
|
||

|
||
|
||
### 功能界面 1
|
||
|
||

|
||
|
||
### 功能界面 2
|
||
|
||

|
||
|
||
### 功能界面 3
|
||
|
||

|
||
|
||
### 功能界面 4
|
||
|
||

|
||
|
||
### 功能界面 5
|
||
|
||

|
||
|
||
### 功能界面 6
|
||
|
||

|
||
|
||
## 说明
|
||
|
||
本 README 基于当前项目代码结构、接口、页面文件和插件命名整理而成。
|
||
|
||
若某些插件行为经过配置调整,请以实际部署配置和源码实现为准。
|