API
Настройка API предоставляет API-интерфейсы на основе gRPC для удаленного вызова.
Интерфейсы можно включить с помощью модуля конфигурации api. Когда API включен, Xray создает исходящее подключение с тем же тегом, что и тег API.
Необходимо вручную направить все входящие API-подключения на это исходящее подключение с помощью правил маршрутизации.
См. раздел Связанные настройки в этом документе.
Начиная с версии v1.8.12 поддерживается упрощенный режим настройки, в котором достаточно указать только ApiObject, без необходимости настройки inbounds и routing.
Однако при использовании упрощенной настройки статистика трафика не учитывает трафик входящих API-подключений.
Внимание
Большинству пользователей не нужен этот API, новички могут просто пропустить этот раздел.
ApiObject
ApiObject
соответствует полю api
в конфигурационном файле.
{
"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 в раздел inbounds:
"inbounds": [
{
"listen": "127.0.0.1",
"port": 10085,
"protocol": "dokodemo-door",
"settings": {
"address": "127.0.0.1"
},
"tag": "api"
}
]
Добавить правило маршрутизации для входящего подключения api в раздел routing:
"routing": {
"rules": [
{
"inboundTag": [
"api"
],
"outboundTag": "api",
"type": "field"
}
]
}
Добавить api в основные настройки:
"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
Встроенная служба статистики данных.
См. Статистика.
ReflectionService
Позволяет gRPC-клиентам получать список API сервера.
$ 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 @crossfw