Содержание

API для администрирования

Сокет администратора предоставляет интерфейс для запросов информации и настройки Yggdrasil во время выполнения. По умолчанию Yggdrasil прослушивает подключения администратора на localhost: 9001 (параметр AdminListen в конфигурационном файле).

Утилита для управления

Утилита yggdrasilctl предоставляет удобный интерфейс CLI для сокета администратора Yggdrasil. Она может подключаться как к локальным, так и к удаленным экземплярам Yggdrasil и принимать те же команды, что описаны ниже. Каждое поле задается в формате field=value.

Примеры использования:

yggdrasilctl getDHT
yggdrasilctl getPeers

Для получения списка поддерживаемых команд наберите:

yggdrasilctl list

Чтобы выполнить действие на удаленном узле Yggdrasil, укажите параметр -endpoint:

yggdrasilctl -endpoint=tcp://10.0.0.1:9001 getPeers
yggdrasilctl -endpoint=unix:///var/run/yggdrasil.sock getDHT

Чтобы получить ответ в формате JSON вместо «дружественного» вывода, укажите параметр -json:

yggdrasilctl -json getPeers

Сокет администратора

Сокет администратора Yggdrasil для запросов и ответов использует формат JSON.

Запрос должен быть:

После получения запроса возвращается ответная строфа.

Запрос

Структура типичного запроса выглядит следующим образом:

{
  "request": "XXX",
  "arguments": {
      "baz": "qux"
  }
}

Запрос:

Пример выполнения запроса с помощью nc через unix-сокет

echo "{\"request\": \"debug_remotegetself\", \"arguments\": {\"key\": \"00000275cb3ab9ee8d285ecaef5a0d82fbd6d19edc5bc33617094232fd047964\"}}" | nc -U /var/run/yggdrasil.sock

Ответ

Типичный ответ имеет такую структуру:

{
  "request":
  {
    "request": "XXX",
    "foo": "bar",
    "baz": "qux"
  },
 
  "response":
  {
  },
 
  "status": "success"
}

Ответ:

Типы запросов

Поле «request» содержит команду, предписывающую, какой запрос следует выполнить.

getDHT

Не содержит никаких дополнительных полей запроса.

Возвращает известные узлы в DHT.

getPeers

Не содержит никаких дополнительных полей запроса.

Возвращает одну или несколько записей, содержащих информацию об активных одноранговых сеансах. Первая запись обычно относится к текущему узлу.

Для каждого IPv6-адреса:

addPeer

Ожидает:

Добавляет новый узел.

Возвращает:

removePeer

Ожидает:

Удаляет существующий узел.

Возвращает:

getSelf

Не ожидает никаких дополнительных полей запроса.

Возвращает одну запись, содержащую информацию о текущем узле Yggdrasil.

Для текущего адреса IPv6:

getSessions

Не ожидает никаких дополнительных полей запроса.

Возвращает ноль или более записей, содержащих информацию об открытых сеансах между текущим узлом Yggdrasil и другими узлами. Открытые сеансы говорят о том, что недавно был обмен траффиком с удаленным узлом.

Для каждого IPv6-адреса:

getTunTap

Не ожидает никаких дополнительных полей запроса.

Возвращает одну запись, содержащую информацию об адаптере TUN/TAP текущего узла.

Для каждого адаптера:

getMulticastInterfaces

Не ожидает никаких дополнительных полей запроса.

Возвращает ноль или более строк, содержащих включенные многоадресные интерфейсы.

Если возвращаются ноль строк, то подразумевается, что многоадресный пиринг не разрешен ни на одном интерфейсе.

getNodeInfo

Ожидает:

Просит удаленный узел ответить с его nodeinfo.

Возвращает секцию nodeinfo. Данные могут быть в любом формате, могут содержать любые ключи.

Ссылки

Admin API (EN): https://yggdrasil-network.github.io/admin.html