API
Пример запроса
Заголовок раздела «Пример запроса»Пример curl curl -H 'Authorization: Bearer ${secret}' http://${controller-api}/configs?force=true -d '{"path": "", "payload": ""}' -X PUT
Этот запрос содержит заголовок 'Authorization: Bearer ${secret}', где:
${secret}- ключ API, заданный в разделе API конфигурационного файла${controller-api}- адрес прослушивания, заданный в разделе API конфигурационного файла?force=true- параметр, который требуется для некоторых запросов'{"path": "", "payload": ""}'- данные обновляемого ресурса
- Метод запроса:
GET/WS - Необязательный параметр:
?level=log_level, гдеlog_levelможет бытьinfo,warning,error,debug - Необязательный параметр:
?format=structured, при наличии выводит структурированные логи (с полямиtime,level,message,fields) - Поля ответа в стандартном режиме (один объект JSON на строку):
type: уровень логирования -info/warning/error/debugpayload: текст сообщения журнала
- Поля ответа в структурированном режиме
?format=structured:time: время в форматеHH:MM:SSlevel: уровень логированияmessage: текст сообщения журналаfields: массив дополнительных полей
Информация о трафике
Заголовок раздела «Информация о трафике»/traffic
Заголовок раздела «/traffic»- Метод запроса:
GET/WS - Поля ответа (отправляются раз в секунду):
up: текущая скорость исходящего трафика (байт/с)down: текущая скорость входящего трафика (байт/с)upTotal: суммарное количество отправленных байтовdownTotal: суммарное количество полученных байтов
Информация о памяти
Заголовок раздела «Информация о памяти»/memory
Заголовок раздела «/memory»- Метод запроса:
GET/WS - Поля ответа (отправляются раз в секунду):
inuse: текущий объем используемой памяти (байты)oslimit: системное ограничение памяти (байты, всегда0)
Информация о версии
Заголовок раздела «Информация о версии»/version
Заголовок раздела «/version»- Метод запроса:
GET - Поля ответа:
meta: является ли сборка версией Meta (true/false)version: строка версии
/cache/fakeip/flush
Заголовок раздела «/cache/fakeip/flush»- Метод запроса:
POST - Ответ отсутствует (HTTP 204)
/cache/dns/flush
Заголовок раздела «/cache/dns/flush»- Метод запроса:
POST - Ответ отсутствует (HTTP 204)
/cache/smart/flush 👻
Заголовок раздела «/cache/smart/flush 👻»- Метод запроса:
POST - Ответ: нет (HTTP 204)
/cache/smart/flush/:config 👻
Заголовок раздела «/cache/smart/flush/:config 👻»- Метод запроса:
POST - Ответ: нет (HTTP 204)
Рабочая конфигурация
Заголовок раздела «Рабочая конфигурация»/configs
Заголовок раздела «/configs»- Метод запроса:
GET - Поля ответа: JSON-объект текущей рабочей конфигурации, включая
port,socks-port,mixed-port,mode,log-level,allow-lan,ipv6,tunи другие поля
- Метод запроса:
PUT - Параметр:
?force=true - Ответ отсутствует (HTTP 204)
- Метод запроса:
PATCH - Данные:
'{"mixed-port": 7890}' - Ответ отсутствует (HTTP 204)
/configs/geo
Заголовок раздела «/configs/geo»- Метод запроса:
POST - Данные:
'{"path": "", "payload": ""}' - Ответ отсутствует (HTTP 204)
/restart
Заголовок раздела «/restart»- Метод запроса:
POST - Данные:
'{"path": "", "payload": ""}' - Ответ отсутствует (HTTP 204)
Обновления
Заголовок раздела «Обновления»/upgrade
Заголовок раздела «/upgrade»- Метод запроса:
POST - Необязательные параметры:
?channel=xxxзадаёт канал обновления,?force=trueпринудительное обновление - Данные:
'{"path": "", "payload": ""}' - Поля ответа:
status: фиксированное значение"ok"
/upgrade/ui
Заголовок раздела «/upgrade/ui»- Метод запроса:
POST - Поля ответа:
status: фиксированное значение"ok"
/upgrade/geo
Заголовок раздела «/upgrade/geo»- Метод запроса:
POST - Данные:
'{"path": "", "payload": ""}' - Ответ отсутствует (HTTP 204)
/upgrade/lgbm 👻
Заголовок раздела «/upgrade/lgbm 👻»- Метод запроса:
POST
Группы политик
Заголовок раздела «Группы политик»- Метод запроса:
GET - Поля ответа:
proxies: массив объектов групп политик; формат каждого объекта совпадает с ответом/proxies/proxies_name
/group/group_name
Заголовок раздела «/group/group_name»- Метод запроса:
GET - Поля ответа: объект группы политик в формате
/proxies/proxies_name
/group/group_name/delay
Заголовок раздела «/group/group_name/delay»- Метод запроса:
GET - Параметр:
?url=xxx&timeout=5000 - Необязательный параметр:
?expected=xxx, ожидаемый код состояния HTTP-ответа, поддерживает диапазоны (например,200/204,200-299) - Поля ответа: JSON-объект, сопоставляющий имена узлов с задержкой в миллисекундах (
uint16), например{"Узел A": 120, "Узел B": 350}
/group/weights 👻
Заголовок раздела «/group/weights 👻»- Метод запроса:
GET
/group/group_name/weights 👻
Заголовок раздела «/group/group_name/weights 👻»- Метод запроса:
GET - Ответ:
{"weights": [...]}
/proxies
Заголовок раздела «/proxies»- Метод запроса:
GET - Поля ответа:
proxies: объект, ключами которого являются имена прокси или групп; каждая запись содержит следующие общие поля:name: имя прокси или группыtype: тип, напримерShadowsocks,VMess,DIRECT,Selector,URLTest,Fallback,LoadBalanceudp: поддерживается ли UDPuot: поддерживается ли UDP over TCPxudp: поддерживается ли XUDPtfo: включен ли TCP Fast Openmptcp: включен ли MPTCPsmux: включено ли мультиплексирование потоковalive: доступен ли прокси в данный моментhistory: массив записей истории задержек с полямиtimeиdelay(мс)extra: дополнительная история задержек, сгруппированная по URL тестированияinterface: имя привязанного сетевого интерфейсаrouting-mark: значение метки маршрутизацииprovider-name: имя провайдера, которому принадлежит проксиdialer-proxy: имя нижележащего dialer-прокси
- Группы политик (
Selector,URLTest,Fallback,LoadBalance) дополнительно содержат:now: имя выбранного сейчас узла (отсутствует уLoadBalance)all: массив имен всех узлов и группtestUrl: URL проверки работоспособностиhidden: скрыта ли группа в панели управленияicon: URL значкаemptyFallback: имя резервного узла, используемого при недоступности всех участниковexpectedStatus: ожидаемый код HTTP-ответа при проверке (отсутствует уSelector)fixed: закрепленный сейчас узел (только дляURLTestиFallback)
/proxies/proxies_name
Заголовок раздела «/proxies/proxies_name»- Метод запроса:
GET - Поля ответа: объект прокси или группы с полями одной записи из
/proxies; обычные прокси содержат только общие поля, а группы политик также содержатnow,allи другие поля группы
- Метод запроса:
PUT - Данные:
'{"name":"Япония"}' - Ответ отсутствует (HTTP 204)
- Метод запроса:
DELETE - Ответ отсутствует (HTTP 204)
/proxies/proxies_name/delay
Заголовок раздела «/proxies/proxies_name/delay»- Метод запроса:
GET - Параметр:
?url=xxx&timeout=5000 - Необязательный параметр:
?expected=xxx, ожидаемый код состояния HTTP-ответа, поддерживает диапазоны (например,200/204,200-299) - Поля ответа:
delay: измеренная задержка в миллисекундах (uint16)
Наборы прокси
Заголовок раздела «Наборы прокси»/providers/proxies
Заголовок раздела «/providers/proxies»- Метод запроса:
GET - Поля ответа:
providers: объект, ключами которого являются имена провайдеров; каждая запись содержит метаданные провайдера и список его прокси
/providers/proxies/providers_name
Заголовок раздела «/providers/proxies/providers_name»- Метод запроса:
GET - Поля ответа: объект провайдера прокси, включающий метаданные конфигурации и список
proxies
- Метод запроса:
PUT - Ответ отсутствует (HTTP 204)
/providers/proxies/providers_name/healthcheck
Заголовок раздела «/providers/proxies/providers_name/healthcheck»- Метод запроса:
GET - Ответ отсутствует (HTTP 204)
/providers/proxies/providers_name/proxies_name
Заголовок раздела «/providers/proxies/providers_name/proxies_name»- Метод запроса:
GET - Поля ответа: объект прокси с теми же полями, что и
/proxies/proxies_name
/providers/proxies/providers_name/proxies_name/healthcheck
Заголовок раздела «/providers/proxies/providers_name/proxies_name/healthcheck»- Метод запроса:
GET - Параметр:
?url=xxx&timeout=5000 - Поля ответа:
delay: измеренная задержка в миллисекундах (uint16)
Правила
Заголовок раздела «Правила»- Метод запроса:
GET - Поля ответа:
rules: массив объектов правил, каждый из которых содержит:index: индекс правила, начиная с 0type: тип правила, напримерDOMAIN,IP-CIDR,GEOIPpayload: содержимое условия правилаproxy: имя целевого прокси или группы политикsize: количество записей в наборе правил (только дляGEOIP/GEOSITE, в остальных случаях-1)extra(необязательно) содержит:disabled: отключено ли правилоhitCount: количество совпадений с правиломhitAt: время последнего совпаденияmissCount: количество несовпадений с правиломmissAt: время последнего несовпадения
/rules/disable
Заголовок раздела «/rules/disable»- Метод запроса:
PATCH - Данные:
'{"0": false,"1": true}' - Ответ отсутствует (HTTP 204)
Наборы правил
Заголовок раздела «Наборы правил»/providers/rules
Заголовок раздела «/providers/rules»- Метод запроса:
GET - Поля ответа:
providers: объект, ключами которого являются имена провайдеров правил
/providers/rules/providers_name
Заголовок раздела «/providers/rules/providers_name»- Метод запроса:
PUT - Ответ отсутствует (HTTP 204)
Соединения
Заголовок раздела «Соединения»/connections
Заголовок раздела «/connections»- Метод запроса:
GET/WS - Необязательный параметр:
?interval=milliseconds, гдеmilliseconds- интервал обновления, стандартное значение 1000 миллисекунд - Поля ответа:
downloadTotal: суммарное количество полученных байтовuploadTotal: суммарное количество отправленных байтовmemory: текущий объем используемой памяти (байты)connections: массив объектов активных соединений, каждый из которых содержит:id: уникальный идентификатор соединенияmetadata: метаданные соединения (адреса источника и назначения, протокол, имя процесса и т. д.)upload: количество байтов, отправленных через это соединениеdownload: количество байтов, полученных через это соединениеstart: время начала соединенияchains: массив цепочки проксиproviderChains: массив цепочки провайдеров проксиrule: тип совпавшего правилаrulePayload: содержимое совпавшего правила
- Метод запроса:
DELETE - Ответ отсутствует (HTTP 204)
/connections/:id
Заголовок раздела «/connections/:id»- Метод запроса:
DELETE - Ответ отсутствует (HTTP 204)
/connections/smart/:id 👻
Заголовок раздела «/connections/smart/:id 👻»- Метод запроса:
DELETE - Ответ: нет (HTTP 204)
DNS запросы
Заголовок раздела «DNS запросы»/dns/query
Заголовок раздела «/dns/query»- Метод запроса:
GET - Параметр:
?name=example.com&type=A - Поля ответа:
Status: код DNS-ответа (Rcode)Question: массив вопросов запросаTC: был ли ответ усеченRD: флаг запроса рекурсииRA: флаг доступности рекурсииAD: флаг аутентифицированных данныхCD: флаг отключения проверкиAnswer(необязательно): массив записей ответа с полямиname,type,TTL,dataAuthority(необязательно): массив авторитетных записей в том же формате, что иAnswerAdditional(необязательно): массив дополнительных записей в том же формате, что иAnswer
Хранилище
Заголовок раздела «Хранилище»/storage/key
Заголовок раздела «/storage/key»- Метод запроса:
GET - Поля ответа: любое сохраненное допустимое значение JSON или
null, если ключ не существует
- Метод запроса:
PUT - Данные:
'{"foo": "bar"}' - Ответ отсутствует (HTTP 204)
- Метод запроса:
DELETE - Ответ отсутствует (HTTP 204)
/debug требует, чтобы при запуске ядра уровень логирования был установлен на debug.
/debug/gc
Заголовок раздела «/debug/gc»- Метод запроса:
PUT - Ответ отсутствует (HTTP 204)
/debug/pprof
Заголовок раздела «/debug/pprof»Открыв в браузере http://${controller-api}/debug/pprof, можно просмотреть исходную отладочную информацию, где:
- allocs показывает ситуацию с выделением памяти для каждого вызова функции, включая размер памяти, выделенной в стеке и куче, а также количество выделений памяти. Этот отчет в основном помогает находить проблемы с утечками памяти и частыми запросами на выделение памяти в коде.
- отчет heap предоставляет подробную информацию об использовании памяти в куче программой, включая размер, количество и адреса выделенных блоков памяти, отсортированных по размеру. Этот отчет в основном используется для поиска мест с высоким использованием памяти, можно просмотреть размеры объектов в отчете heap, чтобы найти места с высоким использованием памяти.
Установите Graphviz, чтобы просматривать графическую отладочную информацию
Заголовок раздела «Установите Graphviz, чтобы просматривать графическую отладочную информацию»Просмотр графического отчета Heap
Заголовок раздела «Просмотр графического отчета Heap»go tool pprof -http=:8080 http://127.0.0.1:xxxx/debug/pprof/heapПросмотр графического отчета Allocs
Заголовок раздела «Просмотр графического отчета Allocs»go tool pprof -http=:8080 http://127.0.0.1:xxxx/debug/pprof/allocsОтправка отчета
Заголовок раздела «Отправка отчета»Откройте в браузере http://${controller-api}/debug/pprof/heap?raw=true, чтобы загрузить этот файл, и загрузите его в issues, чтобы сообщить о проблеме, с которой вы столкнулись.