Цель доработки (переработки) избавиться от парсинга конфига сети и перейти на использование команд к демону с ответами в json, что поможет избавиться от тупняков в стадии настройки при отсуствии авторизации со стороны контроллера (страница остается в бесконечной загрузке пока не будет произведена авторизация устрйства). А так же избавить плагин от лишних кнопок на активацию демона.
Изначально, имеем слайдер активации плагина, он же активирует демона zerotier-one посредством скрипта S90zerotier при нажатии кнопки Сохранить. Плагин вместе с демоном активируются независимо от того, заполнено ли поле Network ID.
Как только плагин активирован и демон запущен, можно получить ID камеры в сети и ее статус командой zerotier-cli info -j:
результат:
{
"address": "68b93c6681",
"clock": 1667643999381,
"config": {
"settings": {
"allowTcpFallbackRelay": true,
"listeningOn": [
"192.168.0.111/9993",
"192.168.0.111/33884",
"192.168.0.111/53666"
],
"portMappingEnabled": true,
"primaryPort": 9993,
"secondaryPort": 0,
"softwareUpdate": "disable",
"softwareUpdateChannel": "release",
"tertiaryPort": 0
}
},
"online": true,
"planetWorldId": 149604618,
"planetWorldTimestamp": 1644592324813,
"publicIdentity": "68b93c6681:0:3215651423a6278ea7fe86454d5b5cfda4dd33c7a4228a9c9bccc1dc216f301605b28c720b60186039fe25dc7480daddf05b23a4ca93d7fd5d42c46b912fd633",
"tcpFallbackActive": false,
"version": "1.10.1",
"versionBuild": 0,
"versionMajor": 1,
"versionMinor": 10,
"versionRev": 1
}
Из этого выхлопа было бы полезно видеть ID камеры ("address":), так как его можно запросить для авторизации на контроллере в случае удаленного саппорта.
Если на первой стадии, вместе с активацией плагина, был введен Network ID, сразу выполняем join в сеть командой zerotier-cli join network_id (команда без ожидания результата) и после запрашиваем статус командой zerotier-cli listnetworks -j:
результат:
- состояние без авторизации на контроллере:
[
{
"allowDNS": false,
"allowDefault": false,
"allowGlobal": false,
"allowManaged": true,
"assignedAddresses": [],
"bridge": false,
"broadcastEnabled": false,
"dhcp": false,
"dns": {
"domain": "",
"servers": []
},
"id": "a0cbf4b62a41da0f",
"mac": "0e:b2:f8:16:d0:75",
"mtu": 2800,
"multicastSubscriptions": [
{
"adi": 0,
"mac": "01:00:5e:00:00:01"
},
{
"adi": 0,
"mac": "33:33:00:00:00:01"
},
{
"adi": 0,
"mac": "33:33:ff:16:d0:75"
}
],
"name": "",
"netconfRevision": 0,
"nwid": "a0cbf4b62a41da0f",
"portDeviceName": "ztc3q3k3bf",
"portError": 0,
"routes": [],
"status": "ACCESS_DENIED",
"type": "PRIVATE"
}
]
- с авторизацией на контроллере:
[
{
"allowDNS": false,
"allowDefault": false,
"allowGlobal": false,
"allowManaged": true,
"assignedAddresses": [
"172.30.100.152/24"
],
"bridge": false,
"broadcastEnabled": true,
"dhcp": false,
"dns": {
"domain": "",
"servers": []
},
"id": "a0cbf4b62a41da0f",
"mac": "0e:b2:f8:16:d0:75",
"mtu": 2800,
"multicastSubscriptions": [
{
"adi": 0,
"mac": "01:00:5e:00:00:01"
},
{
"adi": 0,
"mac": "33:33:00:00:00:01"
},
{
"adi": 0,
"mac": "33:33:ff:16:d0:75"
}
],
"name": "cronyx",
"netconfRevision": 18,
"nwid": "a0cbf4b62a41da0f",
"portDeviceName": "ztc3q3k3bf",
"portError": 0,
"routes": [
{
"flags": 0,
"metric": 0,
"target": "0.0.0.0/0",
"via": "172.30.100.56"
},
{
"flags": 0,
"metric": 0,
"target": "172.30.100.0/24",
"via": null
}
],
"status": "OK",
"type": "PRIVATE"
}
]
Отсюда было бы полезно получить и вывести (?в строку?) в центральном блоке страницы: имя сети ("name":), имя интерфейса ("portDeviceName":), мак ("mac":), IP адрес ("assignedAddresses":) и состояние соединения ("status":), завершать строку должна кнопка leave.
При нажатии на кнопку [leave] zerotier-cli leave network_id команда выполняются без ожидания результата, после выполения, повторяется вызов команды zerotier-cli listnetworks -j для актуализации информации о подключении.