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