3x-ui/docs/API.md

1060 lines
23 KiB
Markdown
Raw Normal View History

# 3x-ui API 文档
> 基础路径: `{basePath}`(可配置,默认 `/`
> Web 框架: Gin (Go)
> 所有 JSON API 响应(除特别说明外)使用统一格式: `{ "success": bool, "msg": string, "obj": any }`
---
## 目录
- [1. 认证接口](#1-认证接口)
- [2. 面板页面](#2-面板页面)
- [3. 面板设置](#3-面板设置)
- [4. Xray 设置](#4-xray-设置)
- [5. 入站 API](#5-入站-api)
- [6. 服务器 API](#6-服务器-api)
- [7. WebSocket](#7-websocket)
- [8. 订阅服务](#8-订阅服务)
- [数据模型](#数据模型)
---
## 1. 认证接口
### `GET /`
根路径。已认证时重定向到 `/panel/`,否则显示登录页面。
---
### `POST /login`
用户登录认证。
**请求体**JSON 或表单):
```json
{
"username": "string",
"password": "string",
"twoFactorCode": "string" // 可选,开启双因素认证时必填
}
```
**成功响应:**
```json
{ "success": true, "msg": "Successfully logged in", "obj": null }
```
**错误响应:**
- `success: false, msg: "Username cannot be empty"`
- `success: false, msg: "Password cannot be empty"`
- `success: false, msg: "Wrong username or password"`
---
### `GET /logout`
清除会话并重定向到基础路径。
---
### `POST /getTwoFactorEnable`
查询是否开启双因素认证。
**响应:**
```json
{ "success": true, "msg": "", "obj": true }
```
---
## 2. 面板页面
> `/panel` 下的所有路由需要认证(`checkLogin` 中间件)。
### `GET /panel/`
面板主页面HTML
### `GET /panel/inbounds`
入站管理页面HTML
### `GET /panel/settings`
面板设置页面HTML
### `GET /panel/xray`
Xray 配置页面HTML
---
## 3. 面板设置
> `/panel/setting` 下的所有路由需要认证。
### `POST /panel/setting/all`
获取所有面板配置。
**响应 (`obj`)** `AllSetting` 对象(详见 [数据模型](#allsetting))。
---
### `POST /panel/setting/defaultSettings`
获取默认配置(根据请求 Host 头生成)。
**响应 (`obj`)** 默认 `AllSetting` 对象。
---
### `POST /panel/setting/update`
更新面板配置。
**请求体:** `AllSetting` 对象JSON 或表单)。
**响应:**
```json
{ "success": true, "msg": "Settings modified successfully", "obj": null }
```
---
### `POST /panel/setting/updateUser`
修改管理员用户名和密码。
**请求体**JSON 或表单):
```json
{
"oldUsername": "string",
"oldPassword": "string",
"newUsername": "string",
"newPassword": "string"
}
```
**成功响应:**
```json
{ "success": true, "msg": "User modified successfully", "obj": null }
```
**错误响应:**
- `msg: "User modification failed: original username/password incorrect"`
- `msg: "User modification failed: username and password cannot be empty"`
---
### `POST /panel/setting/restartPanel`
重启面板3 秒后重启)。
**响应:**
```json
{ "success": true, "msg": "Panel restart successful", "obj": null }
```
---
### `GET /panel/setting/getDefaultJsonConfig`
获取默认 Xray JSON 配置。
**响应 (`obj`)** Xray 配置 JSON 对象。
---
## 4. Xray 设置
> `/panel/xray` 下的所有路由需要认证。
### `POST /panel/xray/`
获取当前 Xray 配置及元数据。
**响应 (`obj`)**
```json
{
"xraySetting": { /* Xray 配置 JSON */ },
"inboundTags": ["tag1", "tag2"],
"outboundTestUrl": "https://www.google.com/generate_204"
}
```
---
### `GET /panel/xray/getDefaultJsonConfig`
获取默认 Xray JSON 配置。
**响应 (`obj`)** Xray 配置 JSON 对象。
---
### `GET /panel/xray/getOutboundsTraffic`
获取出站流量统计。
**响应 (`obj`)** `OutboundTraffics` 对象数组。
---
### `GET /panel/xray/getXrayResult`
获取当前 Xray 服务运行状态。
**响应 (`obj`)** Xray 服务状态字符串。
---
### `POST /panel/xray/warp/:action`
管理 Cloudflare Warp 集成。
**URL 参数:**
| 参数 | 可选值 |
|---|---|
| `:action` | `data`、`del`、`config`、`reg`、`license` |
**请求体**(表单,取决于 action
| Action | 字段 |
|---|---|
| `reg` | `privateKey`、`publicKey` |
| `license` | `license` |
| 其他 | 无 |
**响应 (`obj`)** Warp 数据/配置字符串。`del` 操作返回 `obj: null`
---
### `POST /panel/xray/update`
更新 Xray 配置。
**请求体**(表单):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `xraySetting` | string (JSON) | 是 | Xray 配置 JSON |
| `outboundTestUrl` | string | 否 | 默认: `https://www.google.com/generate_204` |
**响应:**
```json
{ "success": true, "msg": "Settings modified successfully", "obj": null }
```
---
### `POST /panel/xray/resetOutboundsTraffic`
重置出站流量统计。
**请求体**(表单):
| 字段 | 类型 | 必填 |
|---|---|---|
| `tag` | string | 是 |
**响应 (`obj`)** `""`
---
### `POST /panel/xray/testOutbound`
测试出站连通性。
**请求体**(表单):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `outbound` | string (JSON) | 是 | 要测试的出站配置 |
| `allOutbounds` | string (JSON 数组) | 否 | 所有出站配置(用于解析 dialerProxy 依赖) |
**响应 (`obj`)** 测试结果,包含延迟/响应时间。
---
## 5. 入站 API
> `/panel/api` 下的所有路由需要通过 `checkAPIAuth` 中间件认证(未认证时返回 404 以隐藏接口存在)。
### `GET /panel/api/inbounds/list`
获取当前用户的所有入站列表。
**响应 (`obj`)** `[]Inbound`
---
### `GET /panel/api/inbounds/get/:id`
根据 ID 获取指定入站。
**URL 参数:** `:id`int
**响应 (`obj`)** `Inbound` 对象。
---
### `GET /panel/api/inbounds/getClientTraffics/:email`
根据邮箱获取客户端流量记录。
**URL 参数:** `:email`string
**响应 (`obj`)** `[]ClientTraffic`
---
### `GET /panel/api/inbounds/getClientTrafficsById/:id`
根据客户端 ID 获取流量记录。
**URL 参数:** `:id`string
**响应 (`obj`)** `[]ClientTraffic`
---
### `POST /panel/api/inbounds/add`
添加新入站。
**请求体:** `Inbound` 对象JSON 或表单,详见 [数据模型](#inbound))。
**响应 (`obj`)** 创建的 `Inbound` 对象。通过 WebSocket 广播更新。
---
### `POST /panel/api/inbounds/del/:id`
删除入站。
**URL 参数:** `:id`int
**响应 (`obj`)** 被删除的入站 IDint。通过 WebSocket 广播更新。
---
### `POST /panel/api/inbounds/update/:id`
更新入站。
**URL 参数:** `:id`int
**请求体:** `Inbound` 对象JSON 或表单)。
**响应 (`obj`)** 更新后的 `Inbound` 对象。通过 WebSocket 广播更新。
---
### `POST /panel/api/inbounds/clientIps/:email`
获取客户端关联的 IP 地址。
**URL 参数:** `:email`string
**响应 (`obj`)**
- `[]string`,格式为 `"IP (YYYY-MM-DD HH:MM:SS)"`(含时间戳时)
- `[]string`,纯 IP 字符串(旧格式)
- `"No IP Record"`(无数据时)
---
### `POST /panel/api/inbounds/clearClientIps/:email`
清除客户端的 IP 记录。
**URL 参数:** `:email`string
**响应:**
```json
{ "success": true, "msg": "Log cleanup successful", "obj": null }
```
---
### `POST /panel/api/inbounds/addClient`
向入站添加客户端。
**请求体:** `Inbound` 对象,新客户端信息在其 `Settings` JSON 中。
**响应:**
```json
{ "success": true, "msg": "Client added successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/:id/delClient/:clientId`
从入站删除客户端。
**URL 参数:** `:id`int、`:clientId`string
**响应:**
```json
{ "success": true, "msg": "Client deleted successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/updateClient/:clientId`
更新客户端配置。
**URL 参数:** `:clientId`string
**请求体:** 包含更新后客户端设置的 `Inbound` 对象。
**响应:**
```json
{ "success": true, "msg": "Client configuration updated successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/:id/resetClientTraffic/:email`
重置指定客户端的流量统计。
**URL 参数:** `:id`int、`:email`string
**响应:**
```json
{ "success": true, "msg": "Client traffic reset successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/resetAllTraffics`
重置所有流量统计。
**响应:**
```json
{ "success": true, "msg": "All traffic reset successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/resetAllClientTraffics/:id`
重置入站下所有客户端的流量。
**URL 参数:** `:id`int
**响应:**
```json
{ "success": true, "msg": "All client traffic reset successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/delDepletedClients/:id`
删除入站中所有流量耗尽的客户端。
**URL 参数:** `:id`int
**响应:**
```json
{ "success": true, "msg": "Depleted clients deleted successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/import`
导入入站配置。
**请求体**(表单):
| 字段 | 类型 | 必填 |
|---|---|---|
| `data` | string (JSON) | 是 |
`data` 字段为 JSON 序列化的 `Inbound` 对象。
**响应 (`obj`)** 创建的 `Inbound` 对象。通过 WebSocket 广播更新。
---
### `POST /panel/api/inbounds/onlines`
获取当前在线客户端。
**响应 (`obj`)** 在线客户端标识列表。
---
### `POST /panel/api/inbounds/lastOnline`
获取所有客户端的最后在线时间。
**响应 (`obj`)** 客户端邮箱到最近在线时间戳的映射。
---
### `POST /panel/api/inbounds/updateClientTraffic/:email`
手动更新客户端流量统计。
**URL 参数:** `:email`string
**请求体**JSON
```json
{
"upload": 0,
"download": 0
}
```
**响应:**
```json
{ "success": true, "msg": "Client configuration updated successfully", "obj": null }
```
---
### `POST /panel/api/inbounds/:id/delClientByEmail/:email`
根据邮箱删除客户端。
**URL 参数:** `:id`int、`:email`string
**响应:**
```json
{ "success": true, "msg": "Client deleted successfully", "obj": null }
```
---
### `GET /panel/api/backuptotgbot`
向 Telegram Bot 管理员发送数据库备份。
**响应:** 空 `200 OK`
---
## 6. 服务器 API
> `/panel/api/server` 下的所有路由需要通过 `checkAPIAuth` 认证。
### `GET /panel/api/server/status`
获取服务器状态CPU、内存、磁盘、网络、运行时间
**响应 (`obj`)** 服务器状态对象(每 2 秒刷新)。
---
### `GET /panel/api/server/cpuHistory/:bucket`
获取 CPU 使用历史。
**URL 参数:** `:bucket`int—— 每个数据点的秒数。
| 允许值 | 说明 |
|---|---|
| `2` | 每 2 秒一个点(最近 120 秒) |
| `30` | 每 30 秒一个点(最近 30 分钟) |
| `60` | 每 1 分钟一个点(最近 1 小时) |
| `120` | 每 2 分钟一个点(最近 2 小时) |
| `180` | 每 3 分钟一个点(最近 3 小时) |
| `300` | 每 5 分钟一个点(最近 5 小时) |
**响应 (`obj`)** CPU 历史数据点数组(最多 60 个采样点)。
---
### `GET /panel/api/server/getXrayVersion`
获取可用的 Xray 版本列表。
**响应 (`obj`)** `[]string` —— 版本列表(缓存 60 秒)。
---
### `GET /panel/api/server/getConfigJson`
获取当前 Xray 配置 JSON。
**响应 (`obj`)** Xray 配置 JSON。
---
### `GET /panel/api/server/getDb`
下载 SQLite 数据库文件。
**响应:** 二进制文件下载(`application/octet-stream`,文件名 `x-ui.db`)。不使用 `Msg` 包装格式。
---
### `GET /panel/api/server/getNewUUID`
生成新的 UUID。
**响应 (`obj`)** UUID 字符串。
---
### `GET /panel/api/server/getNewX25519Cert`
生成新的 X25519 密钥对。
**响应 (`obj`)** X25519 密钥对数据。
---
### `GET /panel/api/server/getNewmldsa65`
生成新的 ML-DSA-65 密钥。
**响应 (`obj`)** ML-DSA-65 密钥数据。
---
### `GET /panel/api/server/getNewmlkem768`
生成新的 ML-KEM-768 密钥。
**响应 (`obj`)** ML-KEM-768 密钥数据。
---
### `GET /panel/api/server/getNewVlessEnc`
生成新的 VLESS 加密密钥。
**响应 (`obj`)** VLESS 加密密钥数据。
---
### `POST /panel/api/server/stopXrayService`
停止 Xray 服务。通过 WebSocket 广播状态变更。
**响应:**
```json
{ "success": true, "msg": "Xray service stopped successfully", "obj": null }
```
---
### `POST /panel/api/server/restartXrayService`
重启 Xray 服务。通过 WebSocket 广播状态变更。
**响应:**
```json
{ "success": true, "msg": "Xray service restarted successfully", "obj": null }
```
---
### `POST /panel/api/server/installXray/:version`
安装/切换到指定 Xray 版本。
**URL 参数:** `:version`string
**响应:**
```json
{ "success": true, "msg": "Xray version switched", "obj": null }
```
---
### `POST /panel/api/server/updateGeofile`
### `POST /panel/api/server/updateGeofile/:fileName`
更新 GeoIP/Geosite 数据文件。
**URL 参数:** `:fileName`string可选—— 指定要更新的文件名。省略时更新所有文件。
**响应:**
```json
{ "success": true, "msg": "Geo file update result", "obj": null }
```
---
### `POST /panel/api/server/logs/:count`
获取应用日志。
**URL 参数:** `:count`int—— 日志行数。
**请求体**(表单):
| 字段 | 类型 | 说明 |
|---|---|---|
| `level` | string | 日志级别过滤 |
| `syslog` | string | 系统日志过滤 |
**响应 (`obj`)** 日志内容字符串。
---
### `POST /panel/api/server/xraylogs/:count`
获取 Xray 服务日志。
**URL 参数:** `:count`int—— 日志行数。
**请求体**(表单):
| 字段 | 类型 | 说明 |
|---|---|---|
| `filter` | string | 日志过滤关键词 |
| `showDirect` | string | 显示直连日志 |
| `showBlocked` | string | 显示被阻止的日志 |
| `showProxy` | string | 显示代理日志 |
**响应 (`obj`)** 过滤后的 Xray 日志内容字符串。
---
### `POST /panel/api/server/importDB`
导入数据库备份。导入后自动重启 Xray。
**请求体:** multipart 文件上传(字段名 `db`)。
**响应 (`obj`)** `"Database imported successfully"`
---
### `POST /panel/api/server/getNewEchCert`
生成新的 ECHEncrypted Client Hello证书。
**请求体**(表单):
| 字段 | 类型 | 必填 |
|---|---|---|
| `sni` | string | 是 |
**响应 (`obj`)** ECH 证书数据。
---
## 7. WebSocket
### `GET {basePath}/ws`
WebSocket 端点用于面板实时更新服务器状态、入站变更、Xray 状态、通知)。
---
## 8. 订阅服务
> 运行在独立端口(可配置)。独立的 Gin 服务器。
### `GET {subPath}:subid`
获取客户端订阅链接。
**URL 参数:** `:subid`string—— 订阅 ID。
**查询参数:**
| 参数 | 说明 |
|---|---|
| `html=1``view=html` | 强制渲染 HTML 页面 |
**响应(订阅客户端):**
- Content-Type: `text/plain`
- Body: 每行一个代理分享链接(`vmess://`、`vless://`、`trojan://`、`ss://`
- 若开启 `subEncrypt`body 经过 base64 编码
**响应(浏览器 / `?html=1`**
- Content-Type: `text/html`
- HTML 页面,展示流量统计、到期时间、代理链接
**响应头:**
| 响应头 | 说明 |
|---|---|
| `Subscription-Userinfo` | `upload=N; download=N; total=N; expire=N`字节数Unix 时间戳) |
| `Profile-Update-Interval` | 重新拉取间隔(分钟,默认 `10` |
| `Profile-Title` | Base64 编码的配置标题(已配置时) |
| `Support-Url` | 支持页面 URL已配置时 |
| `Profile-Web-Page-Url` | 配置网页 URL |
| `Announce` | Base64 编码的公告(已配置时) |
| `Routing-Enable` | `"true"``"false"` |
| `Routing` | 自定义路由规则 JSON已配置时 |
**错误:** `400 Bad Request`body 为 `"Error!"`
---
### `GET {jsonPath}:subid`
获取 JSON 格式订阅配置(仅在 `subJsonEnable` 为 true 时注册此路由)。
**URL 参数:** `:subid`string—— 订阅 ID。
**响应:**
- Content-Type: `text/plain`
- Body: JSON 字符串,包含完整客户端配置(分片、噪声、多路复用、路由规则)
- 响应头与订阅链接接口相同
**错误:** `400 Bad Request`body 为 `"Error!"`
---
## 数据模型
### 统一响应格式 (`Msg`)
```json
{
"success": true,
"msg": "string",
"obj": null
}
```
### Inbound
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | int | 主键 |
| `up` | int64 | 上行流量(字节) |
| `down` | int64 | 下行流量(字节) |
| `total` | int64 | 总流量限制(字节) |
| `allTime` | int64 | 累计总流量(字节) |
| `remark` | string | 入站备注/名称 |
| `enable` | bool | 是否启用 |
| `expiryTime` | int64 | 过期时间戳毫秒0 = 永不过期) |
| `trafficReset` | string | 流量重置周期(默认 `"never"` |
| `lastTrafficResetTime` | int64 | 上次流量重置时间戳 |
| `clientStats` | []ClientTraffic | 客户端流量统计 |
| `listen` | string | 监听地址 |
| `port` | int | 监听端口 |
| `protocol` | string | 协议:`vmess`、`vless`、`trojan`、`shadowsocks`、`http`、`mixed`、`wireguard`、`tunnel` |
| `settings` | string (JSON) | 协议相关设置 |
| `streamSettings` | string (JSON) | 传输/流设置 |
| `tag` | string | 唯一的 Xray 入站标签 |
| `sniffing` | string (JSON) | 探测配置 |
### ClientTraffic
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | int | 主键 |
| `inboundId` | int | 所属入站 ID |
| `enable` | bool | 是否启用 |
| `email` | string | 客户端邮箱(唯一) |
| `uuid` | string | 客户端 UUID非持久化 |
| `subId` | string | 订阅 ID非持久化 |
| `up` | int64 | 上行流量(字节) |
| `down` | int64 | 下行流量(字节) |
| `allTime` | int64 | 累计总流量(字节) |
| `expiryTime` | int64 | 过期时间戳(毫秒) |
| `total` | int64 | 总流量限制(字节) |
| `reset` | int | 流量重置计数器 |
| `lastOnline` | int64 | 最后在线时间戳 |
### Client
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | string | 客户端 ID |
| `security` | string | 加密方式 |
| `password` | string | 客户端密码 |
| `flow` | string | VLESS flow 类型 |
| `email` | string | 客户端邮箱 |
| `limitIp` | int | IP 限制0 = 不限制) |
| `totalGB` | int64 | 流量限制(字节) |
| `expiryTime` | int64 | 过期时间戳(毫秒) |
| `enable` | bool | 是否启用 |
| `tgId` | int64 | Telegram 用户 ID |
| `subId` | string | 订阅 ID |
| `comment` | string | 客户端备注 |
| `reset` | int | 流量重置计数器 |
### User
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | int | 主键 |
| `username` | string | 登录用户名 |
| `password` | string | 登录密码 |
### OutboundTraffics
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | int | 主键 |
| `tag` | string | 出站标签(唯一) |
| `up` | int64 | 上行流量(字节) |
| `down` | int64 | 下行流量(字节) |
| `total` | int64 | 总流量限制(字节) |
### InboundClientIps
| 字段 | 类型 | 说明 |
|---|---|---|
| `id` | int | 主键 |
| `clientEmail` | string | 客户端邮箱(唯一) |
| `ips` | string | IP 地址JSON 字符串) |
### AllSetting
**Web 服务器:**
| 字段 | 类型 | 说明 |
|---|---|---|
| `webListen` | string | 监听地址 |
| `webDomain` | string | 域名 |
| `webPort` | int | 端口 |
| `webCertFile` | string | TLS 证书文件路径 |
| `webKeyFile` | string | TLS 私钥文件路径 |
| `webBasePath` | string | 基础路径 |
| `sessionMaxAge` | int | 会话最大有效期(天) |
**界面:**
| 字段 | 类型 | 说明 |
|---|---|---|
| `pageSize` | int | 分页大小 |
| `expireDiff` | int | 到期提醒天数差 |
| `trafficDiff` | int | 流量提醒差值 |
| `remarkModel` | string | 备注显示模式 |
| `datepicker` | string | 日期选择器格式 |
**Telegram Bot**
| 字段 | 类型 | 说明 |
|---|---|---|
| `tgBotEnable` | bool | 是否启用 Telegram Bot |
| `tgBotToken` | string | Bot Token |
| `tgBotProxy` | string | Bot 代理地址 |
| `tgBotAPIServer` | string | Bot API 服务器地址 |
| `tgBotChatId` | string | 管理员 Chat ID |
| `tgRunTime` | string | 定时任务执行时间 |
| `tgBotBackup` | bool | 是否启用自动备份 |
| `tgBotLoginNotify` | bool | 是否启用登录通知 |
| `tgCpu` | int | CPU 告警阈值 |
| `tgLang` | string | Bot 语言 |
**安全:**
| 字段 | 类型 | 说明 |
|---|---|---|
| `timeLocation` | string | 时区 |
| `twoFactorEnable` | bool | 是否开启双因素认证 |
| `twoFactorToken` | string | 双因素认证令牌 |
**订阅服务:**
| 字段 | 类型 | 说明 |
|---|---|---|
| `subEnable` | bool | 是否启用订阅服务 |
| `subJsonEnable` | bool | 是否启用 JSON 订阅 |
| `subTitle` | string | 订阅标题 |
| `subSupportUrl` | string | 支持页面 URL |
| `subProfileUrl` | string | 配置页面 URL |
| `subAnnounce` | string | 公告内容 |
| `subEnableRouting` | bool | 是否启用路由规则 |
| `subRoutingRules` | string | 自定义路由规则 |
| `subListen` | string | 订阅服务监听地址 |
| `subPort` | int | 订阅服务端口 |
| `subPath` | string | 订阅路径 |
| `subDomain` | string | 订阅服务域名 |
| `subCertFile` | string | 订阅服务 TLS 证书路径 |
| `subKeyFile` | string | 订阅服务 TLS 私钥路径 |
| `subUpdates` | int | 客户端更新间隔(分钟) |
| `subEncrypt` | bool | 是否加密订阅内容 |
| `subShowInfo` | bool | 是否显示服务器信息 |
| `subURI` | string | 订阅 URI |
| `subJsonPath` | string | JSON 订阅路径 |
| `subJsonURI` | string | JSON 订阅 URI |
| `subJsonFragment` | string | TLS 分片配置 |
| `subJsonNoises` | string | WebSocket/HTTP 噪声配置 |
| `subJsonMux` | string | 多路复用配置 |
| `subJsonRules` | string | 自定义路由规则 |
| `externalTrafficInformEnable` | bool | 是否启用外部流量通知 |
| `externalTrafficInformURI` | string | 外部流量通知 URI |
**LDAP**
| 字段 | 类型 | 说明 |
|---|---|---|
| `ldapEnable` | bool | 是否启用 LDAP |
| `ldapHost` | string | LDAP 服务器地址 |
| `ldapPort` | int | LDAP 端口 |
| `ldapUseTLS` | bool | 是否使用 TLS |
| `ldapBindDN` | string | 绑定 DN |
| `ldapPassword` | string | 绑定密码 |
| `ldapBaseDN` | string | 基础 DN |
| `ldapUserFilter` | string | 用户过滤器 |
| `ldapUserAttr` | string | 用户属性 |
| `ldapVlessField` | string | VLESS 字段映射 |
| `ldapSyncCron` | string | 同步周期Cron 表达式) |
| `ldapFlagField` | string | 标志字段 |
| `ldapTruthyValues` | string | 真值列表 |
| `ldapInvertFlag` | bool | 是否反转标志 |
| `ldapInboundTags` | string | 关联入站标签 |
| `ldapAutoCreate` | bool | 是否自动创建客户端 |
| `ldapAutoDelete` | bool | 是否自动删除客户端 |
| `ldapDefaultTotalGB` | int | 默认流量限制GB |
| `ldapDefaultExpiryDays` | int | 默认有效天数 |
| `ldapDefaultLimitIP` | int | 默认 IP 限制 |
---
## 向后兼容重定向
以下重定向自动处理301
| 原路径 | 重定向到 |
|---|---|
| `/panel/API/*` | `/panel/api/*` |
| `/xui/API/*` | `/panel/api/*` |
| `/xui/*` | `/panel/*` |