5.9 KiB
		
	
	
	
	
			
		
		
	
	API
Настройка API предоставляет API-интерфейсы на основе gRPC для удаленного вызова.
Интерфейсы можно включить с помощью модуля конфигурации api. Когда API включен, Xray создает исходящее подключение с тем же тегом, что и тег API.
Необходимо вручную направить все входящие API-подключения на это исходящее подключение с помощью правил маршрутизации.
См. раздел Связанные настройки в этом документе.
Начиная с версии v1.8.12 поддерживается упрощенный режим настройки, в котором достаточно указать только ApiObject, без необходимости настройки inbounds и routing.
Однако при использовании упрощенной настройки статистика трафика не учитывает трафик входящих API-подключений.
::: warning Большинству пользователей не нужен этот 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