|
|
|
|
# API
|
|
|
|
|
|
|
|
|
|
Настройка API предоставляет API-интерфейсы на основе [gRPC](https://grpc.io/) для удаленного вызова.
|
|
|
|
|
|
|
|
|
|
Интерфейсы можно включить с помощью модуля конфигурации api. Когда API включен, Xray создает исходящее подключение с тем же тегом, что и тег API.
|
|
|
|
|
Необходимо вручную направить все входящие API-подключения на это исходящее подключение с помощью [правил маршрутизации](./routing.md).
|
|
|
|
|
См. раздел [Связанные настройки](#связанные-настройки) в этом документе.
|
|
|
|
|
|
|
|
|
|
Начиная с версии [v1.8.12](https://github.com/XTLS/Xray-core/releases/tag/v1.8.12) поддерживается упрощенный режим настройки, в котором достаточно указать только ApiObject, без необходимости настройки inbounds и routing.
|
|
|
|
|
Однако при использовании упрощенной настройки статистика трафика не учитывает трафик входящих API-подключений.
|
|
|
|
|
|
|
|
|
|
::: warning
|
|
|
|
|
Большинству пользователей не нужен этот API, новички могут просто пропустить этот раздел.
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
## ApiObject
|
|
|
|
|
|
|
|
|
|
`ApiObject` соответствует полю `api` в конфигурационном файле.
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{
|
|
|
|
|
"api": {
|
|
|
|
|
"tag": "api",
|
|
|
|
|
"listen": "127.0.0.1:8080",
|
|
|
|
|
"services": ["HandlerService", "LoggerService", "StatsService", "RoutingService"]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> `tag`: string
|
|
|
|
|
|
|
|
|
|
Тег исходящего подключения.
|
|
|
|
|
|
|
|
|
|
> `listen`: string
|
|
|
|
|
|
|
|
|
|
IP-адрес и порт, на котором прослушивает API-сервер. Это необязательный параметр.
|
|
|
|
|
|
|
|
|
|
Если этот параметр опущен, необходимо добавить настройки inbounds и routing, как показано в примере в разделе [Связанные настройки](#связанные-настройки).
|
|
|
|
|
|
|
|
|
|
> `services`: \[string\]
|
|
|
|
|
|
|
|
|
|
Список включенных API.
|
|
|
|
|
Доступные значения см. в разделе [Список API](#список-поддерживаемых-api).
|
|
|
|
|
|
|
|
|
|
## Связанные настройки
|
|
|
|
|
|
|
|
|
|
Можно добавить входящее подключение api в раздел inbounds:
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
"inbounds": [
|
|
|
|
|
{
|
|
|
|
|
"listen": "127.0.0.1",
|
|
|
|
|
"port": 10085,
|
|
|
|
|
"protocol": "dokodemo-door",
|
|
|
|
|
"settings": {
|
|
|
|
|
"address": "127.0.0.1"
|
|
|
|
|
},
|
|
|
|
|
"tag": "api"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Добавить правило маршрутизации для входящего подключения api в раздел routing:
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
"routing": {
|
|
|
|
|
"rules": [
|
|
|
|
|
{
|
|
|
|
|
"inboundTag": [
|
|
|
|
|
"api"
|
|
|
|
|
],
|
|
|
|
|
"outboundTag": "api",
|
|
|
|
|
"type": "field"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Добавить api в основные настройки:
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
"api": {
|
|
|
|
|
"tag": "api",
|
|
|
|
|
"services": [
|
|
|
|
|
"StatsService"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Список поддерживаемых API
|
|
|
|
|
|
|
|
|
|
### HandlerService
|
|
|
|
|
|
|
|
|
|
API для изменения входящих и исходящих подключений.
|
|
|
|
|
Доступны следующие функции:
|
|
|
|
|
|
|
|
|
|
- Добавление нового входящего подключения;
|
|
|
|
|
- Добавление нового исходящего подключения;
|
|
|
|
|
- Удаление существующего входящего подключения;
|
|
|
|
|
- Удаление существующего исходящего подключения;
|
|
|
|
|
- Добавление пользователя к входящему подключению (поддерживается только для VMess, VLESS, Trojan, Shadowsocks (v1.3.0+));
|
|
|
|
|
- Удаление пользователя из входящего подключения (поддерживается только для VMess, VLESS, Trojan, Shadowsocks (v1.3.0+));
|
|
|
|
|
|
|
|
|
|
### RoutingService
|
|
|
|
|
|
|
|
|
|
API для добавления, удаления, замены правил маршрутизации и запроса статистики балансировщика.
|
|
|
|
|
Доступны следующие функции:
|
|
|
|
|
|
|
|
|
|
- adrules - добавление или замена правил маршрутизации;
|
|
|
|
|
- rmrules - удаление правил маршрутизации;
|
|
|
|
|
- sib - разрыв соединений с указанного IP-адреса;
|
|
|
|
|
- bi - запрос статистики балансировщика;
|
|
|
|
|
- bo - принудительное переключение балансировщика на указанный outboundTag.
|
|
|
|
|
|
|
|
|
|
Конкретное использование можно узнать с помощью команды `./xray help api bi`.
|
|
|
|
|
|
|
|
|
|
### LoggerService
|
|
|
|
|
|
|
|
|
|
Поддержка перезапуска встроенного логгера.
|
|
|
|
|
Можно использовать совместно с logrotate для управления файлами журналов.
|
|
|
|
|
|
|
|
|
|
### StatsService
|
|
|
|
|
|
|
|
|
|
Встроенная служба статистики данных.
|
|
|
|
|
См. [Статистика](./stats.md).
|
|
|
|
|
|
|
|
|
|
### ReflectionService
|
|
|
|
|
|
|
|
|
|
Позволяет gRPC-клиентам получать список API сервера.
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
$ grpcurl -plaintext localhost:10085 list
|
|
|
|
|
grpc.reflection.v1alpha.ServerReflection
|
|
|
|
|
v2ray.core.app.proxyman.command.HandlerService
|
|
|
|
|
v2ray.core.app.stats.command.StatsService
|
|
|
|
|
xray.app.proxyman.command.HandlerService
|
|
|
|
|
xray.app.stats.command.StatsService
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Примеры вызова API
|
|
|
|
|
|
|
|
|
|
[Xray-API-documents](https://github.com/XTLS/Xray-API-documents) @crossfw
|
|
|
|
|
|
|
|
|
|
|