Skip to content

Commit

Permalink
更新api
Browse files Browse the repository at this point in the history
  • Loading branch information
xishang0128 committed Apr 7, 2024
1 parent de4ad12 commit 926274e
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 87 deletions.
1 change: 1 addition & 0 deletions docs/api/index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ hide:
- navigation
# - toc
---
# API

## Request Example

Expand Down
186 changes: 99 additions & 87 deletions docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,227 +4,239 @@ hide:
# - toc
---

# API

## 请求示例

curl 示例 `curl -H 'Authorization: Bearer ${secret}' http://${controller-api}/version`
curl 示例 `curl -H 'Authorization: Bearer ${secret}' http://${controller-api}/configs?force=true -d '{"path": "", "payload": ""}' -X PUT`

此请求附带 `'Authorization: Bearer ${secret}'` 请求头,其中:
此请求附带 `'Authorization: Bearer ${secret}'` 请求头,其中:

- `${secret}` 为配置文件设置的[api](../config/general.md#api)密钥
- `${controller-api}`为配置文件中设置的[api](../config/general.md#api)监听地址
- `${controller-api}` 为配置文件中设置的[api](../config/general.md#api)监听地址
- `?force=true` 为携带参数,部分请求需携带
- `'{"path": "", "payload": ""}'` 为要更新的资源的数据

大多数情况传入的数据都为`'{"path": "", "payload": ""}'`,可以附带新的配置文件路径

## 日志

### `/logs`

请求方法: `GET`
请求方法`GET`

- 获取实时日志

## 流量信息

### `/traffic`

请求方法: `GET`
请求方法`GET`

- 获取实时流量,单位 kbps
- 获取实时流量单位 kbps

## 内存信息

### `/memory`

请求方法: `GET`
请求方法`GET`

- 获取实时内存占用,单位 kb
- 获取实时内存占用单位 kb

## 版本信息

### `/version`

请求方法: `GET`
请求方法`GET`

- 获取 Clash 版本

## 缓存

### `/cache/fakeip/flush`

请求方法: `POST`
请求方法`POST`

- 清除 fakeip 缓存

## 运行配置

### `/configs`

请求方法: `GET`
请求方法`GET`

- 获取基本配置

请求方法: `PUT`
请求方法`PUT`

- 重新加载基本配置
- URL 需携带 `?force=true` 强制执行,必须发送数据
- curl 示例: `curl "${controller-api}/configs?force=true" -X PUT -d '{"path": "", "payload": ""}'`
- 重新加载基本配置,必须发送数据,URL 需携带 `?force=true` 强制执行

请求方法: `PATCH`
请求方法`PATCH`

- 更新基本配置,传入需要修改的配置即可,传入的数据需以 json 格式传入
- 示例: `curl ${controller-api}/configs -X PATCH -d '{"mixed-port": 7890}'`
- 更新基本配置,必须发送数据,格式为`'{"mixed-port": 7890}'`,按需修改为需要更新的配置项

### `/configs/geo`

请求方法: `POST`
请求方法`POST`

- 更新 GEO 数据库
- 必须发送数据,因更新后会自动重载一次配置
- curl 示例: `curl "${controller-api}/configs" -X POST -d '{"path": "", "payload": ""}'`
- 更新 GEO 数据库,必须发送数据

### `/restart`

请求方法: `POST`
请求方法`POST`

- 重启内核
- 必须发送数据
- curl 示例: `curl "${controller-api}/restart " -X POST -d '{"path": "", "payload": ""}'`
- 重启内核,必须发送数据

## 更新

### `/upgrade/`
### `/upgrade`

请求方法: `POST`
请求方法`POST`

- 更新内核
- 必须发送数据,因更新后会自动重载一次配置
- curl 示例: `curl "${controller-api}/upgrade" -X POST -d '{"path": "", "payload": ""}'`
- 更新内核,必须发送数据

### `/upgrade/ui`

请求方法: `POST`

- 更新面板,须设置external-ui
- curl 示例: `curl "${controller-api}/upgrade/ui" -X POST`

## 代理

### `/proxies`
请求方法:`POST`

请求方法: `GET`
- 更新面板,须设置 [external-ui](../config/general.md#_7)

- 获取代理信息
## 策略组

### `/proxies/:name`
### `/group`

请求方法: `GET`
请求方法`GET`

- 获取具体的代理信息
- 获取策略组信息

请求方法: `PUT`
### `/group/group_name`

- 选择特定的代理
请求方法:`GET`

### `/proxies/:name/delay`
- 获取具体的策略组信息

请求方法: `GET`
### `/group/group_name/delay`

- 获取具体代理的延迟测试信息
请求方法:`GET`

## 规则
- 对指定策略组内的节点/策略组进行测试,并返回新的延迟信息,URL 需携带`?url=xxx&timeout=5000&expected=204`,按需修改

### `/rules`
## 代理

请求方法: `GET`
### `/proxies`

- 获取规则信息
请求方法:`GET`

## 连接
- 获取代理信息

### `/connections`
### `/proxies/proxies_name`

请求方法: `GET`
请求方法`GET`

- 获取连接信息
- 获取具体的代理信息

请求方法: `DELETE`
请求方法`PUT`

- 关闭所有连接
- 选择特定的代理,需携带数据,格式为`'{"name":"日本"}'`

### `/connections/:id`
### `/proxies/proxies_name/delay`

请求方法: `DELETE`
请求方法`GET`

- 关闭特定连接
- 对指定代理进行测试,并返回新的延迟信息,URL 需携带`?url=xxx&timeout=5000&expected=204`,按需修改

## 代理集合

### `/providers/proxies`

请求方法: `GET`
请求方法`GET`

- 获取所有代理集合的所有代理信息
- 获取所有代理集合的所有信息

### `/providers/proxies/:name`
### `/providers/proxies/providers_name`

请求方法: `GET`
请求方法`GET`

- 获取特定代理集合的代理信息
- 获取特定代理集合的信息

请求方法: `PUT`
请求方法`PUT`

- 更新代理集合

### `/providers/proxies/:name/healthcheck`
### `/providers/proxies/providers_name/healthcheck`

请求方法: `GET`
请求方法`GET`

- 触发特定代理集合的健康检查

### `/providers/proxies/providers_name/proxies_name/healthcheck`

- 对代理集合内的指定代理进行测试,并返回新的延迟信息,URL 需携带`?url=xxx&timeout=5000`,按需修改

## 规则

### `/rules`

请求方法:`GET`

- 获取规则信息

## 规则集合

### `/providers/rules`

请求方法: `GET`
请求方法`GET`

- 获取所有规则集合的所有信息

### `/providers/rules/:name`
### `/providers/rules/providers_name`

请求方法: `PUT`
请求方法`PUT`

- 更新规则集合

## 域名查询
## 连接

### `/dns/query`
### `/connections`

请求方法: `GET`
请求方法`GET`

- 获取指定名称和类型的 DNS 查询数据
- 获取连接信息

参数
请求方法:`DELETE`

- 关闭所有连接

### `/connections/:id`

请求方法:`DELETE`

- 关闭特定连接

## 域名查询

### `/dns/query`

- `name`(必填): 要查询的域名。
- `type`(可选): 要查询的 DNS 记录类型(例如,A、MX、CNAME 等)
请求方法:`GET`

示例: `GET /dns/query?name=example.com&type=A`
- 获取指定名称和类型的 DNS 查询数据,URL 需携带`?name=example.com&type=A`,按需修改

## DEBUG

`/debug` 需要内核启动时 [日志级别](../config/general.md#_5)`debug`

### `/debug/gc`

请求方法: `PUT`
请求方法`PUT`

- 进行主动 GC
- curl 示例: `curl "${controller-api}/debug/gc" -X PUT`

### `/debug/pprof`

浏览器打开 `http://${controller-api}/debug/pprof` 可查看原始 DEBUG 信息,其中:
浏览器打开 `http://${controller-api}/debug/pprof` 可查看原始 DEBUG 信息,其中:

- allocs 表示每个函数调用的内存分配情况,包括在堆栈上和堆上分配的内存大小以及内存分配次数。这个报告主要是为了帮助我们找到代码中存在的内存泄漏、内存频繁申请等问题。
- heap 报告则给出了程序在堆上使用的内存的详细信息,其中包括被分配的内存块的大小、数量和地址,并且按照大小排序。这个报告主要是为了搜寻内存使用过高的地方,我们可以在 heap 报告中查看对象的大小,从而找到内存使用过高的地方。
- allocs 表示每个函数调用的内存分配情况包括在堆栈上和堆上分配的内存大小以及内存分配次数。这个报告主要是为了帮助我们找到代码中存在的内存泄漏、内存频繁申请等问题。
- heap 报告则给出了程序在堆上使用的内存的详细信息其中包括被分配的内存块的大小、数量和地址并且按照大小排序。这个报告主要是为了搜寻内存使用过高的地方我们可以在 heap 报告中查看对象的大小从而找到内存使用过高的地方。

#### 安装 [Graphviz](https://graphviz.org/download/),可查看图形化的 debug 信息

Expand All @@ -246,4 +258,4 @@ go tool pprof -http=:8080 http://127.0.0.1:xxxx/debug/pprof/allocs

##### 提交输出报告

浏览器访问 `http://${controller-api}/debug/pprof/heap?raw=true` 即可下载这个文件,通过上传到 [issues](https://github.com/MetaCubeX/Clash.Meta/issues) 提交你遇到的问题。
浏览器访问 `http://${controller-api}/debug/pprof/heap?raw=true` 即可下载这个文件通过上传到 [issues](https://github.com/MetaCubeX/Clash.Meta/issues) 提交你遇到的问题。

0 comments on commit 926274e

Please sign in to comment.