❮
❯
NPS多服务端管理系统
# NPS 多服务端域名绑定面板 v2.0
一套对接 [ehang-io/nps](https://github.com/ehang-io/nps) 内网穿透服务端的 PHP 管理面板。
## v2.0 更新
- 全新现代化 UI 设计(渐变主题、卡片式布局、响应式侧边栏)
- 后端概览页增加 7 天绑定趋势图表、服务端状态面板
- 所有删除操作支持 AJAX 无刷新 + Toast 提示 + 确认弹窗
- 新增**系统设置**页面(站点名称、前端开关、频率限制、公告、DNS指引)
- 新增**客户端删除**功能
- 前端页面实时表单校验、绑定成功 DNS 指引卡片
- 登录安全加固(5次失败锁定15分钟)
- 操作日志支持 CSV 导出、按时间清理
- 黑名单支持批量添加(逗号分隔)
- 浏览器安装向导自动创建 settings 表
## 功能
### 前端(免登录)
- 仅提供**域名绑定提交**功能
- 选择 NPS 服务端 → 填写客户端ID/域名/协议/内网目标 → 一键绑定
- 实时域名/目标格式校验
- 自动黑名单拦截、频率限制、重复绑定检测
- 绑定成功后显示 DNS 解析指引
### 后端(需登录)
- **概览**:统计卡片 + 7天绑定趋势图 + 服务端状态 + 最近记录
- **NPS 服务端管理**:增删改查、测试连接、AJAX 启用/禁用切换
- **客户端管理**:按服务端查看/新增/删除客户端
- **域名绑定列表**:搜索/筛选/分页,删除并同步 NPS,AJAX 无刷新
- **黑名单**:域名+客户端ID黑名单,子域名通配,批量添加
- **操作日志**:完整记录,CSV 导出,按时间清理
- **系统设置**:站点名称、前端开关、频率限制、公告、DNS指引
## 目录结构
```
nps-multi-panel/
├── config.php # 配置文件(数据库 + 面板账号)
├── install.sql # 数据库初始化脚本
├── index.php # 根入口(跳转前端)
├── .htaccess
├── lib/
│ ├── db.php # PDO 数据库连接
│ ├── NpsApi.php # NPS WebAPI 封装(多服务端)
│ ├── bootstrap.php # 后端会话引导
│ └── functions.php # 公共函数
├── backend/ # 后端管理(需登录)
│ ├── login.php
│ ├── logout.php
│ ├── index.php # 概览
│ ├── server_list.php # NPS服务端管理
│ ├── client_list.php # 客户端管理
│ ├── bind_list.php # 域名绑定列表
│ ├── black_list.php # 黑名单管理
│ ├── bind_log.php # 操作日志
│ ├── api/
│ │ └── server.php # 前端获取服务端列表API
│ └── layout/
│ ├── header.php
│ └── footer.php
├── frontend/ # 前端(免登录)
│ ├── index.html # 域名绑定表单
│ └── submit_bind.php # 绑定提交接口
└── data/ # NPS会话cookie存放(需可写)
```
## 部署步骤
### 方式一:浏览器安装向导(推荐)
1. **上传文件**:将整个 `nps-multi-panel` 目录上传到网站根目录,确保 `data/` 目录可写(755)。
2. **运行安装向导**:浏览器访问 `http://你的域名/install.php`
3. **按向导操作**:
- 第 1 步:环境检测(PHP版本、PDO MySQL、cURL、目录权限)
- 第 2 步:填写数据库信息 + 设置管理员账号密码,点击"开始安装"
- 第 3 步:安装完成,自动创建数据库、导入数据表、生成 config.php
4. **删除 install.php**:安装完成后务必删除 `install.php` 文件。
5. **配置 NPS 服务端**:登录后端 → NPS服务端 → 添加服务端,填写 NPS 的 Web 管理地址(如 `http://1.2.3.4:8080`)、账号、密码,点击"测试连接"确认可用。
### 方式二:手动安装
1. **环境要求**:PHP 7.4+ / 8.x(需开启 pdo_mysql、curl 扩展),MySQL 5.7+ / MariaDB 10.3+
2. **创建数据库**:
```sql
CREATE DATABASE nps_panel DEFAULT CHARSET utf8mb4;
```
3. **导入数据表**:
```bash
mysql -u root -p nps_panel < install.sql
```
4. **修改配置**:编辑 `config.php`,填写数据库密码和面板登录账号密码
5. **上传文件**,确保 `data/` 目录可写
### 访问地址
- 前端域名绑定:`http://你的域名/frontend/index.html`
- 后端管理面板:`http://你的域名/backend/login.php`
## 使用流程
1. 后端添加 NPS 服务端并测试连接
2. 后端"客户端"页面查看/添加客户端,获取客户端 ID
3. 用户访问前端页面,选择服务端、填写客户端ID和域名,提交绑定
4. 后端"域名绑定"页面查看所有绑定记录,可删除
5. 后端"黑名单"页面添加禁止绑定的域名或客户端
6. 后端"操作日志"查看所有操作记录
## 安全建议
- 部署后立即修改 `config.php` 中的面板密码
- 后端目录建议加 IP 白名单或 Basic Auth 二次保护
- `data/` 目录已通过 .htaccess 禁止 Web 访问,Nginx 用户需手动配置
- 前端提交有频率限制(默认 3 秒/IP),可在 config.php 调整
- 生产环境建议使用 HTTPS
## NPS 接口说明
本面板对接 NPS 官方 WebAPI(beego 自动路由):
- `POST /login/verify` — 登录获取会话
- `POST /client/list` — 客户端列表
- `POST /client/add` — 新增客户端
- `POST /index/hostlist` — 域名绑定列表
- `POST /index/addhost` — 新增域名绑定
- `POST /index/delhost` — 删除域名绑定
会话过期自动重新登录。