Skip to content

Предложение по доработке плагина ZeroTier One #104

@cronyx

Description

@cronyx

Цель доработки (переработки) избавиться от парсинга конфига сети и перейти на использование команд к демону с ответами в 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 для актуализации информации о подключении.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions