# Web API

> 查询客户端、隧道、HTTP(S) 隧道和全局设置的 API 参数

---

LLMS 索引： [llms.txt](/llms.txt)

---

> 除 `AuthController` 和 `LoginController` 外，所有接口均需通过鉴权，详见 [API 鉴权说明](/extend/api.html)。

## 通用响应格式

| 响应类型      | 格式                                         |
| ------------- | -------------------------------------------- |
| 成功          | `{"status": 1, "msg": "success"}`            |
| 成功（含 ID） | `{"status": 1, "msg": "success", "id": 123}` |
| 失败          | `{"status": 0, "msg": "error message"}`      |
| 列表          | `{"rows": [...], "total": 100}`              |

> 单个查询接口（`GetClient`、`GetOneTunnel`、`GetHost`）返回 `{"code": 1, "data": {...}}` 或 `{"code": 0}`。

---

## 客户端管理

### 客户端列表

```
POST /client/list/
```

| 参数   | 含义                 |
| ------ | -------------------- |
| search | 搜索关键词           |
| sort   | 排序字段             |
| order  | asc 正序 / desc 倒序 |
| offset | 分页起始             |
| limit  | 每页条数             |

返回 `AjaxTable` 格式，额外含 `ip`、`bridgeType`、`bridgePort` 字段。

---

### 获取单个客户端

```
POST /client/getclient/
```

| 参数 | 含义      |
| ---- | --------- |
| id   | 客户端 ID |

---

### 新增客户端

```
POST /client/add/
```

| 参数              | 含义                                                                                                                                     |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| remark            | 备注                                                                                                                                     |
| vkey              | 客户端验证密钥                                                                                                                           |
| u                 | 代理认证用户名                                                                                                                           |
| p                 | 代理认证密码                                                                                                                             |
| compress          | 是否压缩传输，`true` / `false`                                                                                                           |
| crypt             | 是否加密传输，`true` / `false`                                                                                                           |
| config_conn_allow | 是否允许客户端以配置文件模式连接，`true` / `false`                                                                                       |
| rate_limit        | 带宽限制，单位 KiB/s，留空不限制                                                                                                         |
| flow_limit        | 流量限制，单位 MiB，留空不限制                                                                                                           |
| max_conn          | 最大连接数，留空不限制                                                                                                                   |
| max_tunnel        | 最大隧道数，留空不限制                                                                                                                   |
| web_username      | Web 登录用户名                                                                                                                           |
| web_password      | Web 登录密码                                                                                                                             |
| blackiplist       | IP 黑名单，`\r\n` 分隔                                                                                                                   |
| ipwhite           | 是否启用 IP 白名单，`true` / `false`                                                                                                     |
| ipwhitepass       | IP 白名单授权密码                                                                                                                        |
| ipwhitelist       | IP 白名单，`\r\n` 分隔                                                                                                                   |
| expire_time       | 到期时间，留空表示永不过期。支持格式：`2006-01-02 15:04:05`、`2006-01-02 15:04`、`2006-01-02T15:04:05`、`2006-01-02T15:04`、`2006-01-02` |

---

### 编辑客户端

```
POST /client/edit/
```

| 参数              | 含义                                               |
| ----------------- | -------------------------------------------------- |
| id                | 要修改的客户端 ID                                  |
| remark            | 备注                                               |
| vkey              | 客户端验证密钥（仅管理员可修改）                   |
| u                 | 代理认证用户名                                     |
| p                 | 代理认证密码                                       |
| compress          | 是否压缩传输，`true` / `false`                     |
| crypt             | 是否加密传输，`true` / `false`                     |
| config_conn_allow | 是否允许客户端以配置文件模式连接，`true` / `false` |
| rate_limit        | 带宽限制，单位 KiB/s（仅管理员可修改）             |
| flow_limit        | 流量限制，单位 MiB（仅管理员可修改）               |
| max_conn          | 最大连接数（仅管理员可修改）                       |
| max_tunnel        | 最大隧道数（仅管理员可修改）                       |
| web_username      | Web 登录用户名                                     |
| web_password      | Web 登录密码                                       |
| blackiplist       | IP 黑名单，`\r\n` 分隔                             |
| ipwhite           | 是否启用 IP 白名单，`true` / `false`               |
| ipwhitepass       | IP 白名单授权密码                                  |
| ipwhitelist       | IP 白名单，`\r\n` 分隔                             |
| expire_time       | 到期时间，格式同新增接口                           |
| flow_inlet        | 入站流量，单位字节，传入则覆盖原值（留空不修改）   |
| flow_export       | 出站流量，单位字节，传入则覆盖原值（留空不修改）   |

---

### 更改客户端状态

```
POST /client/changestatus/
```

| 参数   | 含义                       |
| ------ | -------------------------- |
| id     | 客户端 ID                  |
| status | `true` 启用 / `false` 停用 |

---

### 删除客户端

```
POST /client/del/
```

| 参数 | 含义              |
| ---- | ----------------- |
| id   | 要删除的客户端 ID |

---

## 隧道管理

### 隧道列表

```
POST /index/gettunnel/
```

| 参数      | 含义                                                                   |
| --------- | ---------------------------------------------------------------------- |
| client_id | 客户端 ID                                                              |
| type      | 隧道类型：`tcp`、`udp`、`httpProxy`、`socks5`、`secret`、`p2p`、`file` |
| search    | 搜索关键词                                                             |
| sort      | 排序字段                                                               |
| order     | asc 正序 / desc 倒序                                                   |
| offset    | 分页起始                                                               |
| limit     | 每页条数                                                               |

---

### 获取单条隧道

```
POST /index/getonetunnel/
```

| 参数 | 含义    |
| ---- | ------- |
| id   | 隧道 ID |

---

### 新增隧道

```
POST /index/add/
```

| 参数          | 含义                                                                   |
| ------------- | ---------------------------------------------------------------------- |
| client_id     | 客户端 ID                                                              |
| type          | 隧道类型：`tcp`、`udp`、`httpProxy`、`socks5`、`secret`、`p2p`、`file` |
| remark        | 备注                                                                   |
| port          | 服务端监听端口（端口为 0 或留空时自动分配）                            |
| server_ip     | 绑定的服务端 IP（多 IP 场景）                                          |
| target        | 目标地址，格式 `IP:端口`                                               |
| local_proxy   | 是否由 NPS 服务端连接目标，`true` / `false`                            |
| password      | 隧道访问密钥（`secret`、`p2p` 模式）                                   |
| local_path    | 本地路径（`file` 模式）                                                |
| strip_pre     | 移除的 URL 路径前缀（`httpProxy` 模式）                                |
| proto_version | PROXY 协议版本                                                         |

---

### 复制隧道

```
POST /index/copy/
```

| 参数 | 含义              |
| ---- | ----------------- |
| id   | 要复制的源隧道 ID |

复制后自动分配新端口和新 ID，其他配置沿用源隧道。

---

### 编辑隧道

```
POST /index/edit/
```

| 参数          | 含义                                             |
| ------------- | ------------------------------------------------ |
| id            | 隧道 ID                                          |
| client_id     | 客户端 ID                                        |
| type          | 隧道类型                                         |
| port          | 服务端监听端口                                   |
| server_ip     | 绑定的服务端 IP                                  |
| target        | 目标地址（IP:端口）                              |
| local_proxy   | 是否由 NPS 服务端连接目标                        |
| remark        | 备注                                             |
| password      | 隧道访问密钥                                     |
| local_path    | 本地路径                                         |
| strip_pre     | 移除的 URL 路径前缀                              |
| proto_version | PROXY 协议版本                                   |
| flow_inlet    | 入站流量，单位字节，传入则覆盖原值（留空不修改） |
| flow_export   | 出站流量，单位字节，传入则覆盖原值（留空不修改） |

---

### 停止隧道

```
POST /index/stop/
```

| 参数 | 含义    |
| ---- | ------- |
| id   | 隧道 ID |

---

### 启动隧道

```
POST /index/start/
```

| 参数 | 含义    |
| ---- | ------- |
| id   | 隧道 ID |

---

### 删除隧道

```
POST /index/del/
```

| 参数 | 含义    |
| ---- | ------- |
| id   | 隧道 ID |

---

## HTTP(S) 隧道管理

### HTTP(S) 隧道列表

```
POST /index/hostlist/
```

| 参数      | 含义                      |
| --------- | ------------------------- |
| client_id | 客户端 ID                 |
| search    | 搜索关键词（域名 / 备注） |
| offset    | 分页起始                  |
| limit     | 每页条数                  |

---

### 获取单条 HTTP(S) 隧道

```
POST /index/gethost/
```

| 参数 | 含义            |
| ---- | --------------- |
| id   | HTTP(S) 隧道 ID |

---

### 新增 HTTP(S) 隧道

```
POST /index/addhost/
```

| 参数           | 含义                                                      |
| -------------- | --------------------------------------------------------- |
| client_id      | 客户端 ID                                                 |
| remark         | 备注                                                      |
| host           | 域名                                                      |
| scheme         | 协议类型：`all`、`http`、`https`                          |
| location       | URL 路径前缀，留空按 `/` 匹配                             |
| target         | 目标地址，格式 `IP:端口`                                  |
| local_proxy    | 是否由 NPS 服务端连接目标，`true` / `false`               |
| header         | 改写请求头                                                |
| hostchange     | 改写 Host 请求头                                          |
| key_file_path  | HTTPS 私钥（内容或文件路径）                              |
| cert_file_path | HTTPS 证书（内容或文件路径）                              |
| AutoHttps      | 是否自动跳转 HTTPS（301）（仅 `scheme` 非 `http` 时生效） |

---

### 编辑 HTTP(S) 隧道

```
POST /index/edithost/
```

| 参数           | 含义                                             |
| -------------- | ------------------------------------------------ |
| id             | HTTP(S) 隧道 ID                                  |
| client_id      | 客户端 ID                                        |
| remark         | 备注                                             |
| host           | 域名                                             |
| scheme         | 协议类型                                         |
| location       | URL 路径前缀                                     |
| target         | 目标地址（IP:端口）                              |
| local_proxy    | 是否由 NPS 服务端连接目标                        |
| header         | 改写请求头                                       |
| hostchange     | 改写 Host 请求头                                 |
| key_file_path  | HTTPS 私钥（内容或文件路径）                     |
| cert_file_path | HTTPS 证书（内容或文件路径）                     |
| AutoHttps      | 是否自动跳转 HTTPS（301）                        |
| flow_inlet     | 入站流量，单位字节，传入则覆盖原值（留空不修改） |
| flow_export    | 出站流量，单位字节，传入则覆盖原值（留空不修改） |

### 停止 HTTP(S) 隧道

```
POST /index/hoststop/
```

| 参数 | 含义            |
| ---- | --------------- |
| id   | HTTP(S) 隧道 ID |

---

### 启动 HTTP(S) 隧道

```
POST /index/hoststart/
```

| 参数 | 含义            |
| ---- | --------------- |
| id   | HTTP(S) 隧道 ID |

---

### 删除 HTTP(S) 隧道

```
POST /index/delhost/
```

| 参数 | 含义            |
| ---- | --------------- |
| id   | HTTP(S) 隧道 ID |

---

## 全局设置

### 查看全局设置

```
GET /global/index/
```

返回全局 IP 黑名单和服务端对外地址。

---

### 保存全局设置

```
POST /global/save/
```

| 参数              | 含义                        |
| ----------------- | --------------------------- |
| globalBlackIpList | 全局 IP 黑名单，`\r\n` 分隔 |
| serverUrl         | 服务端对外地址              |

---

---

反链：

- [API 接入方式](/extend/api.html)
- [限制客户端累计流量](/extend/feature/traffic-limit.html)
