Compare commits
2 Commits
7a9faf237f
...
92120362a3
| Author | SHA1 | Date | |
|---|---|---|---|
| 92120362a3 | |||
| 3bc726535e |
2
.gitignore
vendored
@@ -7,7 +7,7 @@ dh.pem
|
|||||||
/web-action
|
/web-action
|
||||||
|
|
||||||
# эти файлы после генерации должны быть перемещены в `/static`
|
# эти файлы после генерации должны быть перемещены в `/static`
|
||||||
front-generator/main-*.html
|
front-generator/out
|
||||||
|
|
||||||
# логи сервера в релизной версии
|
# логи сервера в релизной версии
|
||||||
http_server_*.log
|
http_server_*.log
|
||||||
|
|||||||
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
Сервис, запускаемый на терминале как веб-морда.
|
Сервис, запускаемый на терминале как веб-морда.
|
||||||
|
|
||||||
|
# Превью (NEW)
|
||||||
|
|
||||||
|
По многочисленным просьбам работающих, была создана новая фича - автоматическая генерация скриншотов для всех типов веб-сервера.
|
||||||
|
Вот готовые страницы со скриншотами:
|
||||||
|
* [SCPC](preview/scpc.md)
|
||||||
|
* [ШПС](preview/shps.md)
|
||||||
|
* [TDMA](preview/tdma.md)
|
||||||
|
|
||||||
# Зависимости
|
# Зависимости
|
||||||
|
|
||||||
По идее только `boost` и `ssl`
|
По идее только `boost` и `ssl`
|
||||||
|
|||||||
9
front-generator/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Terminal web server - front generator
|
||||||
|
|
||||||
|
Эта часть является подпроектом для веб-сервера и позволяет "на коленке" портировать/изменять веб-сервер для абонентских модемов, и терминалов.
|
||||||
|
|
||||||
|
Скрипт [render.py](render.py) нужен для генерации фронтенда, скрипт [generate-screens.py](generate-screens.py) для генерации скриншотов.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
208
front-generator/config/scpc.json
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
{
|
||||||
|
"modem_name": "RSCM-201",
|
||||||
|
"modem_type": "scpc",
|
||||||
|
"dangerousParamGroups": {
|
||||||
|
"buclnb": "Применение неправильных настроек может вывести из строя оборудование! Продолжить?",
|
||||||
|
"network": "Применение этих настроек может сделать модем недоступным! Продолжить?"
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"rxtx": [
|
||||||
|
{"widget": "h2", "label": "Настройки приема/передачи"},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим работы", "name": "isCinC",
|
||||||
|
"values": [{"label": "SCPC", "value": "false"}, {"label": "CinC", "value": "true"}]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "flex-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки передатчика"},
|
||||||
|
{"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"},
|
||||||
|
{"widget": "checkbox", "label": "Автоматический запуск передатчика", "name": "txAutoStart"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest",
|
||||||
|
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Входные данные", "name": "txIsTestInput",
|
||||||
|
"values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "h3", "label": "Параметры передачи"},
|
||||||
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 100000, "max": 6000000, "step": 0.01},
|
||||||
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 200000, "max": 56000000},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Roll-off", "name": "txRolloff",
|
||||||
|
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Номер последовательности Голда", "name": "txGoldan",
|
||||||
|
"values": [{"label": "0", "value": "0"}, {"label": "1", "value": "1"}]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -40, "step": 0.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Режим работы DVB-S2"},
|
||||||
|
{"widget": "number", "label": "Период служебных пакетов, сек", "name": "dvbServicePacketPeriod", "min": 0, "step": 1, "max": 60},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим модуляции", "name": "dvbIsAcm",
|
||||||
|
"values": [{"label": "CCM", "value": "false"}, {"label": "ACM", "value": "true"}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Размер кадра", "name": "txFrameSizeNormal",
|
||||||
|
"values": [{"label": "normal", "value": "true"}, {"label": "short", "value": "false"}]
|
||||||
|
},
|
||||||
|
{"widget": "checkbox", "label": "Пилот-символы", "name": "txIsPilots"},
|
||||||
|
{"widget": "modulation-modcod", "label": "Модуляция", "name": "dvbCcm", "v_show": "paramRxtx.dvbIsAcm === false"},
|
||||||
|
{"widget": "modulation-speed", "label": "Скорость кода", "name": "dvbCcm", "v_show": "paramRxtx.dvbIsAcm === false"},
|
||||||
|
{"widget": "watch-expr", "label": "Расчетная скорость", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbCcmModulation, paramRxtx.dvbCcmSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === false"},
|
||||||
|
{"widget": "watch-expr", "label": "Текущий модкод", "expr": "statTx.modcod", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "modulation-modcod", "label": "Модуляция (мин. режим)", "name": "dvbAcmMin", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "modulation-speed", "label": "Скорость кода (мин. режим)", "name": "dvbAcmMin", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "watch-expr", "label": "Расчетная скорость (мин. режим)", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbAcmMinModulation, paramRxtx.dvbAcmMinSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "modulation-modcod", "label": "Модуляция (макс. режим)", "name": "dvbAcmMax", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "modulation-speed", "label": "Скорость кода (макс. режим)", "name": "dvbAcmMax", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "watch-expr", "label": "Расчетная скорость (макс. режим)", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbAcmMaxModulation, paramRxtx.dvbAcmMaxSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === true"},
|
||||||
|
{"widget": "number", "label": "Запас ОСШ, дБ", "name": "dvbSnrReserve", "min": 0, "step": 0.01, "max": 10}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Авто-регулировка мощности"},
|
||||||
|
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
|
||||||
|
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.1, "max": 10},
|
||||||
|
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.1, "max": 10},
|
||||||
|
{"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 30}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки приемника"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим управления усилением", "name": "rxAgcEn",
|
||||||
|
"values": [{"label": "РРУ", "value": "false"}, {"label": "АРУ", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
|
||||||
|
{"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"},
|
||||||
|
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
||||||
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 100000, "max": 6000000, "step": 0.01},
|
||||||
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 56000000},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
||||||
|
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Номер последовательности Голда", "name": "rxGoldan",
|
||||||
|
"values": [{"label": "0", "value": "0"}, {"label": "1", "value": "1"}]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dpdi": [
|
||||||
|
{"widget": "h2", "label": "Настройки режима CinC", "v_show": "paramRxtx.isCinC"},
|
||||||
|
{
|
||||||
|
"widget": "settings-container", "v_show": "paramRxtx.isCinC",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Метод расчета задержки", "name": "isPositional",
|
||||||
|
"values": [
|
||||||
|
{"label": "Позиционированием", "value": "true"},
|
||||||
|
{"label": "Окном задержки", "value": "false"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Полоса поиска, КГц ±", "name": "searchBandwidth", "min": 0, "step": 1, "max": 100},
|
||||||
|
{"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.isPositional === true"},
|
||||||
|
{"widget": "number", "label": "Широта станции", "name": "positionStationLatitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
||||||
|
{"widget": "number", "label": "Долгота станции", "name": "positionStationLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
||||||
|
{"widget": "number", "label": "Подспутниковая точка", "name": "positionSatelliteLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
||||||
|
{"widget": "h2", "label": "Задержка до спутника", "v_show": "paramDpdi.isPositional === false"},
|
||||||
|
{"widget": "number", "label": "от, мс", "name": "delayMin", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400},
|
||||||
|
{"widget": "number", "label": "до, мс", "name": "delayMax", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}]
|
||||||
|
},
|
||||||
|
{"widget": "submit", "v_show": "paramRxtx.isCinC"}
|
||||||
|
],
|
||||||
|
"buclnb": [
|
||||||
|
{"widget": "h2", "label": "Настройки питания и опорного генератора"},
|
||||||
|
{
|
||||||
|
"widget": "flex-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки BUC"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "bucRefClk10M"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Питание BUC", "name": "bucPowering",
|
||||||
|
"values": [
|
||||||
|
{"label": "Выкл", "value": "0"},
|
||||||
|
{"label": "24В", "value": "24"},
|
||||||
|
{"label": "48В", "value": "48"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки LNB"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "lnbRefClk10M"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Питание LNB", "name": "lnbPowering",
|
||||||
|
"values": [
|
||||||
|
{"label": "Выкл", "value": "0"},
|
||||||
|
{"label": "13В", "value": "13"},
|
||||||
|
{"label": "18В", "value": "18"},
|
||||||
|
{"label": "24В", "value": "24"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Сервисные настройки"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц на 'Выход 10МГц'", "name": "srvRefClk10M"},
|
||||||
|
{"widget": "checkbox", "label": "Автозапуск BUC и LNB при включении", "name": "bucLnbAutoStart"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"network": [
|
||||||
|
{"widget": "h2", "label": "Настройки сети"},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки интерфейса управления"},
|
||||||
|
{"widget": "ip-address-mask", "label": "Интерфейс управления (a.d.d.r/mask)", "name": "managementIp"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим сети", "name": "isL2",
|
||||||
|
"values": [{"label": "Маршрутизатор", "value": "false"}, {"label": "Коммутатор", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "ip-address", "label": "Интерфейс данных (/24)", "name": "dataIp", "v_show": "paramNetwork.isL2 === false"},
|
||||||
|
{"widget": "number", "label": "MTU интерфейса данных", "name": "dataMtu", "min": 1500, "step": 1, "max": 2000},
|
||||||
|
{"widget": "text", "label": "Имя веб-сервера", "name": "serverName"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tabs": [
|
||||||
|
{"name": "monitoring", "desc": "Мониторинг"},
|
||||||
|
{"name": "setup", "desc": "Настройки"},
|
||||||
|
{"name": "qos", "desc": "QoS"},
|
||||||
|
{"name": "admin", "desc": "Администрирование"}
|
||||||
|
]
|
||||||
|
}
|
||||||
145
front-generator/config/shps.json
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
{
|
||||||
|
"modem_name": "ШПС Модем",
|
||||||
|
"modem_type": "shps",
|
||||||
|
"dangerousParamGroups": {
|
||||||
|
"buclnb": "Применение неправильных настроек может вывести из строя оборудование! Продолжить?",
|
||||||
|
"network": "Применение этих настроек может сделать модем недоступным! Продолжить?"
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"rxtx": [
|
||||||
|
{"widget": "h2", "label": "Настройки приема/передачи"},
|
||||||
|
{
|
||||||
|
"widget": "flex-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки передатчика"},
|
||||||
|
{"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"},
|
||||||
|
{"widget": "checkbox", "label": "Автоматический запуск передатчика", "name": "txAutoStart"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest",
|
||||||
|
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -80, "step": 0.25},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Входные данные", "name": "txIsTestInput",
|
||||||
|
"values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "h3", "label": "Параметры передачи"},
|
||||||
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 70000, "max": 6000000, "step": 0.01},
|
||||||
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 128000, "max": 30000000},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Roll-off", "name": "txRolloff",
|
||||||
|
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}, {"label": "0.30", "value": "300"}, {"label": "0.35", "value": "350"}]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Коэф. расширения", "name": "txSpreadCoef", "max": 1024, "min": 8, "step": 2},
|
||||||
|
{"widget": "number", "label": "Кол-во пакетов на преамбулу", "name": "txFieldsDataPreamble", "max": 255, "min": 1, "step": 1}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Авто-регулировка мощности"},
|
||||||
|
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
|
||||||
|
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.1, "max": 10},
|
||||||
|
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.1, "max": 10},
|
||||||
|
{"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 30}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки приемника"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим управления усилением", "name": "rxAgcEn",
|
||||||
|
"values": [{"label": "РРУ", "value": "false"}, {"label": "АРУ", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
|
||||||
|
{"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"},
|
||||||
|
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
||||||
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 70000, "max": 6000000, "step": 0.01},
|
||||||
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 128000, "max": 30000000},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
||||||
|
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}, {"label": "0.30", "value": "300"}, {"label": "0.35", "value": "350"}]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Коэф. расширения", "name": "rxSpreadCoef", "max": 1024, "min": 8, "step": 2},
|
||||||
|
{"widget": "number", "label": "Порог коррелятора", "name": "rxFftShift", "max": 10, "min": 1, "step": 0.125},
|
||||||
|
{"widget": "number", "label": "Кол-во пакетов на преамбулу", "name": "rxFieldsDataPreamble", "max": 255, "min": 1, "step": 1}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buclnb": [
|
||||||
|
{"widget": "h2", "label": "Настройки питания и опорного генератора"},
|
||||||
|
{
|
||||||
|
"widget": "flex-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки BUC"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "bucRefClk10M"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Питание BUC", "name": "bucPowering",
|
||||||
|
"values": [
|
||||||
|
{"label": "Выкл", "value": "0"},
|
||||||
|
{"label": "24В", "value": "24"},
|
||||||
|
{"label": "48В", "value": "48"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки LNB"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "lnbRefClk10M"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Питание LNB", "name": "lnbPowering",
|
||||||
|
"values": [
|
||||||
|
{"label": "Выкл", "value": "0"},
|
||||||
|
{"label": "13В", "value": "13"},
|
||||||
|
{"label": "18В", "value": "18"},
|
||||||
|
{"label": "24В", "value": "24"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Сервисные настройки"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц на 'Выход 10МГц'", "name": "srvRefClk10M"},
|
||||||
|
{"widget": "checkbox", "label": "Автозапуск BUC и LNB при включении", "name": "bucLnbAutoStart"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"network": [
|
||||||
|
{"widget": "h2", "label": "Настройки сети"},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки интерфейса управления"},
|
||||||
|
{"widget": "ip-address-mask", "label": "Интерфейс управления (a.d.d.r/mask)", "name": "managementIp"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим сети", "name": "isL2",
|
||||||
|
"values": [{"label": "Маршрутизатор", "value": "false"}, {"label": "Коммутатор", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "ip-address", "label": "Интерфейс данных (/24)", "name": "dataIp", "v_show": "paramNetwork.isL2 === false"},
|
||||||
|
{"widget": "number", "label": "MTU интерфейса данных", "name": "dataMtu", "min": 1500, "step": 1, "max": 2000},
|
||||||
|
{"widget": "text", "label": "Имя веб-сервера", "name": "serverName"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tabs": [
|
||||||
|
{"name": "monitoring", "desc": "Мониторинг"},
|
||||||
|
{"name": "setup", "desc": "Настройки"},
|
||||||
|
{"name": "admin", "desc": "Администрирование"}
|
||||||
|
]
|
||||||
|
}
|
||||||
139
front-generator/config/tdma.json
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
{
|
||||||
|
"modem_name": "VSAT Модем",
|
||||||
|
"modem_type": "tdma",
|
||||||
|
"dangerousParamGroups": {
|
||||||
|
"buclnb": "Применение неправильных настроек может вывести из строя оборудование! Продолжить?",
|
||||||
|
"network": "Применение этих настроек может сделать модем недоступным! Продолжить?"
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"rxtx": [
|
||||||
|
{"widget": "h2", "label": "Настройки приема/передачи"},
|
||||||
|
{
|
||||||
|
"widget": "flex-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки передатчика"},
|
||||||
|
{"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest",
|
||||||
|
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
||||||
|
},
|
||||||
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01, "v_show": "paramRxtx.txModulatorIsTest"},
|
||||||
|
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -90, "step": 1},
|
||||||
|
{"widget": "number", "label": "Ослабление для запросных слотов, дБ", "name": "txAttenuationAck", "max": 0, "min": -90, "step": 1},
|
||||||
|
{"widget": "number", "label": "Ограничение ослабления", "name": "txAttenuationLimit", "max": 0, "min": -40, "step": 0.25}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{ "widget": "h3", "label": "Настройки приемника" },
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Режим управления усилением", "name": "rxAgcEn",
|
||||||
|
"values": [
|
||||||
|
{"label": "АРУ", "value": "true"},
|
||||||
|
{"label": "РРУ", "value": "false"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"widget": "number", "label": "Ручное усиление, дБ", "name": "rxManualGain", "v_show": "!paramRxtx.rxAgcEn", "min": -40},
|
||||||
|
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
||||||
|
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 0.01},
|
||||||
|
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 54000000, "step": 1},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
||||||
|
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buclnb": [
|
||||||
|
{"widget": "h2", "label": "Настройки питания и опорного генератора"},
|
||||||
|
{
|
||||||
|
"widget": "flex-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки BUC"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "bucRefClk10M"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Питание BUC", "name": "bucPowering",
|
||||||
|
"values": [
|
||||||
|
{"label": "Выкл", "value": "0"},
|
||||||
|
{"label": "24В", "value": "24"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"widget": "number-int", "label": "Частота LO, кГц", "name": "bucLoKhz", "min": 0, "max": 40000000, "step": 1}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки LNB"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "lnbRefClk10M"},
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Питание LNB", "name": "lnbPowering",
|
||||||
|
"values": [
|
||||||
|
{"label": "Выкл", "value": "0"},
|
||||||
|
{"label": "13В", "value": "13"},
|
||||||
|
{"label": "18В", "value": "18"},
|
||||||
|
{"label": "24В", "value": "24"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"widget": "number-int", "label": "Частота LO, кГц", "name": "lnbLoKhz", "min": 0, "max": 40000000, "step": 1}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Сервисные настройки"},
|
||||||
|
{"widget": "checkbox", "label": "Подача опоры 10МГц на 'Выход 10МГц'", "name": "srvRefClk10M"},
|
||||||
|
{"widget": "checkbox", "label": "Автозапуск BUC и LNB при включении", "name": "bucLnbAutoStart"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dpdi": [
|
||||||
|
{"widget": "h2", "label": "Настройки DPDI"},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{
|
||||||
|
"widget": "select", "label": "Метод расчета задержки", "name": "isPositional",
|
||||||
|
"values": [
|
||||||
|
{"label": "Позиционированием", "value": "true"},
|
||||||
|
{"label": "Окном задержки", "value": "false"}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.isPositional === true"},
|
||||||
|
{"widget": "number", "label": "Широта станции", "name": "positionStationLatitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
||||||
|
{"widget": "number", "label": "Долгота станции", "name": "positionStationLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
||||||
|
{"widget": "number", "label": "Подспутниковая точка", "name": "positionSatelliteLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
||||||
|
{"widget": "number", "label": "Задержка до спутника, мс", "name": "delay", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}]
|
||||||
|
},
|
||||||
|
{"widget": "submit"}
|
||||||
|
],
|
||||||
|
"network": [
|
||||||
|
{"widget": "h2", "label": "Настройки сети"},
|
||||||
|
{
|
||||||
|
"widget": "settings-container",
|
||||||
|
"childs": [
|
||||||
|
{"widget": "h3", "label": "Настройки интерфейса управления"},
|
||||||
|
{"widget": "ip-address-mask", "label": "Интерфейс управления (a.d.d.r/mask)", "name": "managementIp"},
|
||||||
|
{"widget": "text", "label": "Имя веб-сервера", "name": "serverName"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tabs": [
|
||||||
|
{"name": "monitoring", "desc": "Мониторинг"},
|
||||||
|
{"name": "setup", "desc": "Настройки"},
|
||||||
|
{"name": "admin", "desc": "Администрирование"},
|
||||||
|
{"name": "logs", "desc": "Журнал"}
|
||||||
|
]
|
||||||
|
}
|
||||||
148
front-generator/generate-screens.py
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
import subprocess
|
||||||
|
import pathlib
|
||||||
|
import time
|
||||||
|
import socket
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
from selenium import webdriver
|
||||||
|
from selenium.webdriver.common.by import By
|
||||||
|
|
||||||
|
BASE = pathlib.Path(__file__).parent
|
||||||
|
|
||||||
|
CONFIG_DIR = BASE / "config"
|
||||||
|
MODEM_TYPES = {}
|
||||||
|
|
||||||
|
for _fname in os.listdir(CONFIG_DIR):
|
||||||
|
if not _fname.endswith(".json"):
|
||||||
|
continue
|
||||||
|
path = os.path.join(CONFIG_DIR, _fname)
|
||||||
|
try:
|
||||||
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[WARN] Failed to read {path}: {e}")
|
||||||
|
continue
|
||||||
|
modem_type = data.get("modem_type")
|
||||||
|
if modem_type is None:
|
||||||
|
print(f"[WARN] {_fname} ignored: no 'modem_type' field")
|
||||||
|
continue
|
||||||
|
MODEM_TYPES[modem_type] = data
|
||||||
|
|
||||||
|
BASE_URL = "http://localhost:8080/"
|
||||||
|
|
||||||
|
SCREEN_WIDTH = 1200
|
||||||
|
|
||||||
|
LOGIN = {
|
||||||
|
"username": "admin",
|
||||||
|
"password": "admin",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def wait_port(port=8080, host="127.0.0.1"):
|
||||||
|
for _ in range(100):
|
||||||
|
try:
|
||||||
|
socket.create_connection((host, port), timeout=1)
|
||||||
|
return True
|
||||||
|
except:
|
||||||
|
time.sleep(0.1)
|
||||||
|
raise RuntimeError("TCP port 8080 did not open in time")
|
||||||
|
|
||||||
|
|
||||||
|
def run_server(modem, build):
|
||||||
|
binary = BASE / f"../cmake-build-{build}-{modem}/terminal-web-server"
|
||||||
|
proc = subprocess.Popen([
|
||||||
|
binary,
|
||||||
|
"nossl",
|
||||||
|
"0.0.0.0",
|
||||||
|
"8080",
|
||||||
|
"../static"
|
||||||
|
])
|
||||||
|
return proc
|
||||||
|
|
||||||
|
|
||||||
|
def create_driver():
|
||||||
|
opts = webdriver.FirefoxOptions()
|
||||||
|
serv = webdriver.FirefoxService(executable_path='/snap/bin/geckodriver')
|
||||||
|
driver = webdriver.Firefox(options=opts, service=serv)
|
||||||
|
|
||||||
|
driver.set_window_size(SCREEN_WIDTH, 1000)
|
||||||
|
driver.set_page_load_timeout(15)
|
||||||
|
return driver
|
||||||
|
|
||||||
|
|
||||||
|
def login(driver):
|
||||||
|
driver.get("http://localhost:8080/#")
|
||||||
|
|
||||||
|
# Проверяем, редиректнуло ли на /login
|
||||||
|
if "/login" in driver.current_url:
|
||||||
|
# Ищем поля
|
||||||
|
user = driver.find_element(By.NAME, "username")
|
||||||
|
pwd = driver.find_element(By.NAME, "password")
|
||||||
|
|
||||||
|
user.clear()
|
||||||
|
pwd.clear()
|
||||||
|
user.send_keys(LOGIN["username"])
|
||||||
|
pwd.send_keys(LOGIN["password"])
|
||||||
|
|
||||||
|
# submit
|
||||||
|
btn = driver.find_element(By.ID, "submit")
|
||||||
|
btn.click()
|
||||||
|
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
# Проверка успешного входа
|
||||||
|
if "/login" in driver.current_url:
|
||||||
|
raise RuntimeError("Login failed: still on /login after submit")
|
||||||
|
|
||||||
|
|
||||||
|
def make_screenshots_or_checks(modem):
|
||||||
|
out_dir = BASE / "out" / modem
|
||||||
|
out_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
driver = create_driver()
|
||||||
|
try:
|
||||||
|
driver.get("http://localhost:8080/login")
|
||||||
|
driver.save_screenshot(str(out_dir / f"login.png"))
|
||||||
|
|
||||||
|
login(driver)
|
||||||
|
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
for tab in MODEM_TYPES[modem]["tabs"]:
|
||||||
|
tab_name = tab["name"]
|
||||||
|
driver.find_element(By.CSS_SELECTOR, f'a[href="#{tab_name}"]').click()
|
||||||
|
|
||||||
|
# Проверка, что body загрузилось
|
||||||
|
time.sleep(1)
|
||||||
|
page_height = driver.execute_script("return document.body.scrollHeight")
|
||||||
|
driver.set_window_size(SCREEN_WIDTH, page_height + 200)
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
driver.find_element(By.TAG_NAME, "body") # гарантирует что DOM есть
|
||||||
|
driver.save_screenshot(str(out_dir / f"{tab_name}.png"))
|
||||||
|
|
||||||
|
finally:
|
||||||
|
driver.quit()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
for mt in MODEM_TYPES:
|
||||||
|
build = "debug"
|
||||||
|
print(f"\n=== {mt} ({build}) ===")
|
||||||
|
|
||||||
|
proc = run_server(mt, build)
|
||||||
|
try:
|
||||||
|
wait_port()
|
||||||
|
make_screenshots_or_checks(mt)
|
||||||
|
finally:
|
||||||
|
proc.terminate()
|
||||||
|
proc.wait()
|
||||||
|
|
||||||
|
print("Done.")
|
||||||
|
|
||||||
|
print("\nAll configurations processed.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -1,493 +0,0 @@
|
|||||||
{
|
|
||||||
"modem_types": {
|
|
||||||
"tdma": {
|
|
||||||
"modem_name": "VSAT Модем",
|
|
||||||
"dangerousParamGroups": {
|
|
||||||
"buclnb": "Применение неправильных настроек может вывести из строя оборудование! Продолжить?",
|
|
||||||
"network": "Применение этих настроек может сделать модем недоступным! Продолжить?"
|
|
||||||
},
|
|
||||||
"params": {
|
|
||||||
"rxtx": [
|
|
||||||
{"widget": "h2", "label": "Настройки приема/передачи"},
|
|
||||||
{
|
|
||||||
"widget": "flex-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки передатчика"},
|
|
||||||
{"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest",
|
|
||||||
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 900000, "step": 0.01, "v_show": "paramRxtx.txModulatorIsTest"},
|
|
||||||
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -90, "step": 1},
|
|
||||||
{"widget": "number", "label": "Ослабление для запросных слотов, дБ", "name": "txAttenuationAck", "max": 0, "min": -90, "step": 1},
|
|
||||||
{"widget": "number", "label": "Ограничение ослабления", "name": "txAttenuationLimit", "max": 0, "min": -40, "step": 0.25}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{ "widget": "h3", "label": "Настройки приемника" },
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим управления усилением", "name": "rxAgcEn",
|
|
||||||
"values": [
|
|
||||||
{"label": "АРУ", "value": "true"},
|
|
||||||
{"label": "РРУ", "value": "false"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Ручное усиление, дБ", "name": "rxManualGain", "v_show": "!paramRxtx.rxAgcEn", "min": -40},
|
|
||||||
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 900000, "step": 0.01},
|
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 54000000, "step": 1},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
|
||||||
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"buclnb": [
|
|
||||||
{"widget": "h2", "label": "Настройки питания и опорного генератора"},
|
|
||||||
{
|
|
||||||
"widget": "flex-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки BUC"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "bucRefClk10M"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Питание BUC", "name": "bucPowering",
|
|
||||||
"values": [
|
|
||||||
{"label": "Выкл", "value": "0"},
|
|
||||||
{"label": "24В", "value": "24"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{"widget": "number-int", "label": "Частота LO, кГц", "name": "bucLoKhz", "min": 0, "max": 40000000, "step": 1}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки LNB"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "lnbRefClk10M"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Питание LNB", "name": "lnbPowering",
|
|
||||||
"values": [
|
|
||||||
{"label": "Выкл", "value": "0"},
|
|
||||||
{"label": "13В", "value": "13"},
|
|
||||||
{"label": "18В", "value": "18"},
|
|
||||||
{"label": "24В", "value": "24"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{"widget": "number-int", "label": "Частота LO, кГц", "name": "lnbLoKhz", "min": 0, "max": 40000000, "step": 1}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Сервисные настройки"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц на 'Выход 10МГц'", "name": "srvRefClk10M"},
|
|
||||||
{"widget": "checkbox", "label": "Автозапуск BUC и LNB при включении", "name": "bucLnbAutoStart"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dpdi": [
|
|
||||||
{"widget": "h2", "label": "Настройки DPDI"},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Метод расчета задержки", "name": "isPositional",
|
|
||||||
"values": [
|
|
||||||
{"label": "Позиционированием", "value": "true"},
|
|
||||||
{"label": "Окном задержки", "value": "false"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.isPositional === true"},
|
|
||||||
{"widget": "number", "label": "Широта станции", "name": "positionStationLatitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
|
||||||
{"widget": "number", "label": "Долгота станции", "name": "positionStationLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
|
||||||
{"widget": "number", "label": "Подспутниковая точка", "name": "positionSatelliteLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
|
||||||
{"widget": "number", "label": "Задержка до спутника, мс", "name": "delay", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}]
|
|
||||||
},
|
|
||||||
{"widget": "submit"}
|
|
||||||
],
|
|
||||||
"network": [
|
|
||||||
{"widget": "h2", "label": "Настройки сети"},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки интерфейса управления"},
|
|
||||||
{"widget": "ip-address-mask", "label": "Интерфейс управления (a.d.d.r/mask)", "name": "managementIp"},
|
|
||||||
{"widget": "text", "label": "Имя веб-сервера", "name": "serverName"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"tabs": [
|
|
||||||
{"name": "monitoring", "desc": "Мониторинг"},
|
|
||||||
{"name": "setup", "desc": "Настройки"},
|
|
||||||
{"name": "admin", "desc": "Администрирование"},
|
|
||||||
{"name": "logs", "desc": "Журнал"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scpc": {
|
|
||||||
"modem_name": "RSCM-201",
|
|
||||||
"dangerousParamGroups": {
|
|
||||||
"buclnb": "Применение неправильных настроек может вывести из строя оборудование! Продолжить?",
|
|
||||||
"network": "Применение этих настроек может сделать модем недоступным! Продолжить?"
|
|
||||||
},
|
|
||||||
"params": {
|
|
||||||
"rxtx": [
|
|
||||||
{"widget": "h2", "label": "Настройки приема/передачи"},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим работы", "name": "isCinC",
|
|
||||||
"values": [{"label": "SCPC", "value": "false"}, {"label": "CinC", "value": "true"}]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "flex-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки передатчика"},
|
|
||||||
{"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"},
|
|
||||||
{"widget": "checkbox", "label": "Автоматический запуск передатчика", "name": "txAutoStart"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest",
|
|
||||||
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Входные данные", "name": "txIsTestInput",
|
|
||||||
"values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "h3", "label": "Параметры передачи"},
|
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 100000, "max": 6000000, "step": 0.01},
|
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 200000, "max": 56000000},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Roll-off", "name": "txRolloff",
|
|
||||||
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Номер последовательности Голда", "name": "txGoldan",
|
|
||||||
"values": [{"label": "0", "value": "0"}, {"label": "1", "value": "1"}]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -40, "step": 0.25}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Режим работы DVB-S2"},
|
|
||||||
{"widget": "number", "label": "Период служебных пакетов, сек", "name": "dvbServicePacketPeriod", "min": 0, "step": 1, "max": 60},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим модуляции", "name": "dvbIsAcm",
|
|
||||||
"values": [{"label": "CCM", "value": "false"}, {"label": "ACM", "value": "true"}]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Размер кадра", "name": "txFrameSizeNormal",
|
|
||||||
"values": [{"label": "normal", "value": "true"}, {"label": "short", "value": "false"}]
|
|
||||||
},
|
|
||||||
{"widget": "checkbox", "label": "Пилот-символы", "name": "txIsPilots"},
|
|
||||||
{"widget": "modulation-modcod", "label": "Модуляция", "name": "dvbCcm", "v_show": "paramRxtx.dvbIsAcm === false"},
|
|
||||||
{"widget": "modulation-speed", "label": "Скорость кода", "name": "dvbCcm", "v_show": "paramRxtx.dvbIsAcm === false"},
|
|
||||||
{"widget": "watch-expr", "label": "Расчетная скорость", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbCcmModulation, paramRxtx.dvbCcmSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === false"},
|
|
||||||
{"widget": "watch-expr", "label": "Текущий модкод", "expr": "statTx.modcod", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "modulation-modcod", "label": "Модуляция (мин. режим)", "name": "dvbAcmMin", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "modulation-speed", "label": "Скорость кода (мин. режим)", "name": "dvbAcmMin", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "watch-expr", "label": "Расчетная скорость (мин. режим)", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbAcmMinModulation, paramRxtx.dvbAcmMinSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "modulation-modcod", "label": "Модуляция (макс. режим)", "name": "dvbAcmMax", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "modulation-speed", "label": "Скорость кода (макс. режим)", "name": "dvbAcmMax", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "watch-expr", "label": "Расчетная скорость (макс. режим)", "expr": "calcInterfaceSpeedKb(paramRxtx.txBaudrate, paramRxtx.dvbAcmMaxModulation, paramRxtx.dvbAcmMaxSpeed, paramRxtx.txFrameSizeNormal)", "v_show": "paramRxtx.dvbIsAcm === true"},
|
|
||||||
{"widget": "number", "label": "Запас ОСШ, дБ", "name": "dvbSnrReserve", "min": 0, "step": 0.01, "max": 10}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Авто-регулировка мощности"},
|
|
||||||
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
|
|
||||||
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.1, "max": 10},
|
|
||||||
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.1, "max": 10},
|
|
||||||
{"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 30}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки приемника"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим управления усилением", "name": "rxAgcEn",
|
|
||||||
"values": [{"label": "РРУ", "value": "false"}, {"label": "АРУ", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
|
|
||||||
{"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"},
|
|
||||||
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 100000, "max": 6000000, "step": 0.01},
|
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 200000, "max": 56000000},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
|
||||||
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Номер последовательности Голда", "name": "rxGoldan",
|
|
||||||
"values": [{"label": "0", "value": "0"}, {"label": "1", "value": "1"}]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dpdi": [
|
|
||||||
{"widget": "h2", "label": "Настройки режима CinC", "v_show": "paramRxtx.isCinC"},
|
|
||||||
{
|
|
||||||
"widget": "settings-container", "v_show": "paramRxtx.isCinC",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Метод расчета задержки", "name": "isPositional",
|
|
||||||
"values": [
|
|
||||||
{"label": "Позиционированием", "value": "true"},
|
|
||||||
{"label": "Окном задержки", "value": "false"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Полоса поиска, КГц ±", "name": "searchBandwidth", "min": 0, "step": 1, "max": 100},
|
|
||||||
{"widget": "h2", "label": "Настройки позиционирования", "v_show": "paramDpdi.isPositional === true"},
|
|
||||||
{"widget": "number", "label": "Широта станции", "name": "positionStationLatitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
|
||||||
{"widget": "number", "label": "Долгота станции", "name": "positionStationLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
|
||||||
{"widget": "number", "label": "Подспутниковая точка", "name": "positionSatelliteLongitude", "v_show": "paramDpdi.isPositional === true", "min": -180, "step": 0.000001, "max": 180},
|
|
||||||
{"widget": "h2", "label": "Задержка до спутника", "v_show": "paramDpdi.isPositional === false"},
|
|
||||||
{"widget": "number", "label": "от, мс", "name": "delayMin", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400},
|
|
||||||
{"widget": "number", "label": "до, мс", "name": "delayMax", "v_show": "paramDpdi.isPositional === false", "min": 0, "step": 0.1, "max": 400}]
|
|
||||||
},
|
|
||||||
{"widget": "submit", "v_show": "paramRxtx.isCinC"}
|
|
||||||
],
|
|
||||||
"buclnb": [
|
|
||||||
{"widget": "h2", "label": "Настройки питания и опорного генератора"},
|
|
||||||
{
|
|
||||||
"widget": "flex-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки BUC"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "bucRefClk10M"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Питание BUC", "name": "bucPowering",
|
|
||||||
"values": [
|
|
||||||
{"label": "Выкл", "value": "0"},
|
|
||||||
{"label": "24В", "value": "24"},
|
|
||||||
{"label": "48В", "value": "48"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки LNB"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "lnbRefClk10M"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Питание LNB", "name": "lnbPowering",
|
|
||||||
"values": [
|
|
||||||
{"label": "Выкл", "value": "0"},
|
|
||||||
{"label": "13В", "value": "13"},
|
|
||||||
{"label": "18В", "value": "18"},
|
|
||||||
{"label": "24В", "value": "24"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Сервисные настройки"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц на 'Выход 10МГц'", "name": "srvRefClk10M"},
|
|
||||||
{"widget": "checkbox", "label": "Автозапуск BUC и LNB при включении", "name": "bucLnbAutoStart"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"network": [
|
|
||||||
{"widget": "h2", "label": "Настройки сети"},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки интерфейса управления"},
|
|
||||||
{"widget": "ip-address-mask", "label": "Интерфейс управления (a.d.d.r/mask)", "name": "managementIp"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим сети", "name": "isL2",
|
|
||||||
"values": [{"label": "Маршрутизатор", "value": "false"}, {"label": "Коммутатор", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "ip-address", "label": "Интерфейс данных (/24)", "name": "dataIp", "v_show": "paramNetwork.isL2 === false"},
|
|
||||||
{"widget": "number", "label": "MTU интерфейса данных", "name": "dataMtu", "min": 1500, "step": 1, "max": 2000},
|
|
||||||
{"widget": "text", "label": "Имя веб-сервера", "name": "serverName"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"tabs": [
|
|
||||||
{"name": "monitoring", "desc": "Мониторинг"},
|
|
||||||
{"name": "setup", "desc": "Настройки"},
|
|
||||||
{"name": "qos", "desc": "QoS"},
|
|
||||||
{"name": "admin", "desc": "Администрирование"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"shps": {
|
|
||||||
"modem_name": "ШПС Модем",
|
|
||||||
"dangerousParamGroups": {
|
|
||||||
"buclnb": "Применение неправильных настроек может вывести из строя оборудование! Продолжить?",
|
|
||||||
"network": "Применение этих настроек может сделать модем недоступным! Продолжить?"
|
|
||||||
},
|
|
||||||
"params": {
|
|
||||||
"rxtx": [
|
|
||||||
{"widget": "h2", "label": "Настройки приема/передачи"},
|
|
||||||
{
|
|
||||||
"widget": "flex-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки передатчика"},
|
|
||||||
{"widget": "checkbox", "label": "Включить передатчик", "name": "txEn"},
|
|
||||||
{"widget": "checkbox", "label": "Автоматический запуск передатчика", "name": "txAutoStart"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим работы модулятора", "name": "txModulatorIsTest",
|
|
||||||
"values": [{"label": "Нормальный", "value": "false"}, {"label": "Тест (CW)", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Ослабление, дБ", "name": "txAttenuation", "max": 0, "min": -80, "step": 0.25},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Входные данные", "name": "txIsTestInput",
|
|
||||||
"values": [{"label": "Ethernet", "value": "false"}, {"label": "Тест", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "h3", "label": "Параметры передачи"},
|
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "txCentralFreq", "min": 70000, "max": 6000000, "step": 0.01},
|
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "txBaudrate", "min": 128000, "max": 30000000},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Roll-off", "name": "txRolloff",
|
|
||||||
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}, {"label": "0.30", "value": "300"}, {"label": "0.35", "value": "350"}]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Коэф. расширения", "name": "txSpreadCoef", "max": 1024, "min": 8, "step": 2},
|
|
||||||
{"widget": "number", "label": "Кол-во пакетов на преамбулу", "name": "txFieldsDataPreamble", "max": 255, "min": 1, "step": 1}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Авто-регулировка мощности"},
|
|
||||||
{"widget": "checkbox", "label": "Авто-регулировка мощности", "name": "aupcEn"},
|
|
||||||
{"widget": "number", "label": "Минимальное ослабление, дБ", "name": "aupcMinAttenuation", "min": 0, "step": 0.1, "max": 10},
|
|
||||||
{"widget": "number", "label": "Максимальное ослабление, дБ", "name": "aupcMaxAttenuation", "min": 0, "step": 0.1, "max": 10},
|
|
||||||
{"widget": "number", "label": "Требуемое ОСШ", "name": "aupcRequiredSnr", "min": 0, "step": 0.01, "max": 30}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки приемника"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим управления усилением", "name": "rxAgcEn",
|
|
||||||
"values": [{"label": "РРУ", "value": "false"}, {"label": "АРУ", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Усиление, дБ", "name": "rxManualGain", "min": -40, "step": 0.01, "max": 40, "v_show": "paramRxtx.rxAgcEn === false"},
|
|
||||||
{"widget": "watch-expr", "label": "Текущее усиление", "expr": "paramRxtx.rxManualGain", "v_show": "paramRxtx.rxAgcEn === true"},
|
|
||||||
{"widget": "checkbox", "label": "Инверсия спектра", "name": "rxSpectrumInversion"},
|
|
||||||
{"widget": "number-int", "label": "Центральная частота, КГц", "name": "rxCentralFreq", "min": 70000, "max": 6000000, "step": 0.01},
|
|
||||||
{"widget": "number-int", "label": "Символьная скорость, Бод", "name": "rxBaudrate", "min": 128000, "max": 30000000},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Roll-off", "name": "rxRolloff",
|
|
||||||
"values": [{"label": "0.02", "value": "20"}, {"label": "0.05", "value": "50"}, {"label": "0.10", "value": "100"}, {"label": "0.15", "value": "150"}, {"label": "0.20", "value": "200"}, {"label": "0.25", "value": "250"}, {"label": "0.30", "value": "300"}, {"label": "0.35", "value": "350"}]
|
|
||||||
},
|
|
||||||
{"widget": "number", "label": "Коэф. расширения", "name": "rxSpreadCoef", "max": 1024, "min": 8, "step": 2},
|
|
||||||
{"widget": "number", "label": "Порог коррелятора", "name": "rxFftShift", "max": 10, "min": 1, "step": 0.125},
|
|
||||||
{"widget": "number", "label": "Кол-во пакетов на преамбулу", "name": "rxFieldsDataPreamble", "max": 255, "min": 1, "step": 1}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"buclnb": [
|
|
||||||
{"widget": "h2", "label": "Настройки питания и опорного генератора"},
|
|
||||||
{
|
|
||||||
"widget": "flex-container",
|
|
||||||
"childs": [
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки BUC"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "bucRefClk10M"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Питание BUC", "name": "bucPowering",
|
|
||||||
"values": [
|
|
||||||
{"label": "Выкл", "value": "0"},
|
|
||||||
{"label": "24В", "value": "24"},
|
|
||||||
{"label": "48В", "value": "48"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки LNB"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц", "name": "lnbRefClk10M"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Питание LNB", "name": "lnbPowering",
|
|
||||||
"values": [
|
|
||||||
{"label": "Выкл", "value": "0"},
|
|
||||||
{"label": "13В", "value": "13"},
|
|
||||||
{"label": "18В", "value": "18"},
|
|
||||||
{"label": "24В", "value": "24"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Сервисные настройки"},
|
|
||||||
{"widget": "checkbox", "label": "Подача опоры 10МГц на 'Выход 10МГц'", "name": "srvRefClk10M"},
|
|
||||||
{"widget": "checkbox", "label": "Автозапуск BUC и LNB при включении", "name": "bucLnbAutoStart"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"network": [
|
|
||||||
{"widget": "h2", "label": "Настройки сети"},
|
|
||||||
{
|
|
||||||
"widget": "settings-container",
|
|
||||||
"childs": [
|
|
||||||
{"widget": "h3", "label": "Настройки интерфейса управления"},
|
|
||||||
{"widget": "ip-address-mask", "label": "Интерфейс управления (a.d.d.r/mask)", "name": "managementIp"},
|
|
||||||
{
|
|
||||||
"widget": "select", "label": "Режим сети", "name": "isL2",
|
|
||||||
"values": [{"label": "Маршрутизатор", "value": "false"}, {"label": "Коммутатор", "value": "true"}]
|
|
||||||
},
|
|
||||||
{"widget": "ip-address", "label": "Интерфейс данных (/24)", "name": "dataIp", "v_show": "paramNetwork.isL2 === false"},
|
|
||||||
{"widget": "number", "label": "MTU интерфейса данных", "name": "dataMtu", "min": 1500, "step": 1, "max": 2000},
|
|
||||||
{"widget": "text", "label": "Имя веб-сервера", "name": "serverName"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"tabs": [
|
|
||||||
{"name": "monitoring", "desc": "Мониторинг"},
|
|
||||||
{"name": "setup", "desc": "Настройки"},
|
|
||||||
{"name": "admin", "desc": "Администрирование"}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,8 +3,30 @@ from jinja2 import Environment, FileSystemLoader
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
with open('render-params.json') as f:
|
|
||||||
GLOBAL_CONFIG = json.load(f)
|
CONFIG_DIR = "config"
|
||||||
|
MODEM_TYPES = {}
|
||||||
|
|
||||||
|
for _fname in os.listdir(CONFIG_DIR):
|
||||||
|
if not _fname.endswith(".json"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
path = os.path.join(CONFIG_DIR, _fname)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"[WARN] Failed to read {path}: {e}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
modem_type = data.get("modem_type")
|
||||||
|
if modem_type is None:
|
||||||
|
print(f"[WARN] {_fname} ignored: no 'modem_type' field")
|
||||||
|
continue
|
||||||
|
|
||||||
|
MODEM_TYPES[modem_type] = data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def extract_param_names(mc):
|
def extract_param_names(mc):
|
||||||
@@ -78,10 +100,10 @@ def extract_param_groups(mc):
|
|||||||
|
|
||||||
|
|
||||||
def build_modem_env(modem):
|
def build_modem_env(modem):
|
||||||
if modem not in GLOBAL_CONFIG['modem_types']:
|
if modem not in MODEM_TYPES:
|
||||||
raise RuntimeError(f"Modem '{modem}' is not exist in config!")
|
raise RuntimeError(f"Modem '{modem}' is not exist in config!")
|
||||||
|
|
||||||
mc = GLOBAL_CONFIG['modem_types'][modem]
|
mc = MODEM_TYPES[modem]
|
||||||
|
|
||||||
add_submit_widgets(mc['params'])
|
add_submit_widgets(mc['params'])
|
||||||
|
|
||||||
@@ -101,16 +123,27 @@ def render_modem(modem):
|
|||||||
loader = FileSystemLoader('template')
|
loader = FileSystemLoader('template')
|
||||||
env = Environment(loader=loader, trim_blocks=True, lstrip_blocks=True)
|
env = Environment(loader=loader, trim_blocks=True, lstrip_blocks=True)
|
||||||
template = env.get_template('main.html')
|
template = env.get_template('main.html')
|
||||||
|
|
||||||
context = build_modem_env(modem)
|
context = build_modem_env(modem)
|
||||||
|
|
||||||
with open(f"main-{modem}.html", "w") as f:
|
with open(f"out/main-{modem}.html", "w") as f:
|
||||||
|
f.write(template.render(context))
|
||||||
|
|
||||||
|
def render_modem_preview(modem):
|
||||||
|
loader = FileSystemLoader('template')
|
||||||
|
env = Environment(loader=loader, trim_blocks=True, lstrip_blocks=True)
|
||||||
|
template = env.get_template('modem-preview.md')
|
||||||
|
context = build_modem_env(modem)
|
||||||
|
|
||||||
|
with open(f"out/{modem}.md", "w") as f:
|
||||||
f.write(template.render(context))
|
f.write(template.render(context))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
for mt in GLOBAL_CONFIG['modem_types']:
|
os.makedirs('out', exist_ok=True)
|
||||||
|
for mt in MODEM_TYPES:
|
||||||
print(f'Generating {mt} modem...')
|
print(f'Generating {mt} modem...')
|
||||||
render_modem(mt)
|
render_modem(mt)
|
||||||
os.system(f'cp -u main-{mt}.html ../static')
|
render_modem_preview(mt)
|
||||||
|
os.system(f'cp -u out/main-{mt}.html ../static')
|
||||||
|
os.system(f'cp -u out/{mt}.md ../preview')
|
||||||
|
|
||||||
|
|||||||
5
front-generator/requirements.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
jinja2
|
||||||
|
selenium
|
||||||
|
selenium-firefox
|
||||||
|
requests
|
||||||
|
brotli
|
||||||
@@ -63,22 +63,6 @@ async settingsPerformFirmwareUpgradeOta() {
|
|||||||
}
|
}
|
||||||
this.submitStatus.firmwareUpgradeOta = false
|
this.submitStatus.firmwareUpgradeOta = false
|
||||||
},
|
},
|
||||||
async settingsPerformSetCesPassword() {
|
|
||||||
if (this.submitStatus.cesPassword) { return }
|
|
||||||
this.submitStatus.cesPassword = true
|
|
||||||
try {
|
|
||||||
await fetch('/api/set/cesPassword', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
},
|
|
||||||
body: JSON.stringify({'password': this.cesPasswordValue})
|
|
||||||
})
|
|
||||||
} catch (e) {
|
|
||||||
console.log("failed to perform set CES password: ", e)
|
|
||||||
}
|
|
||||||
this.submitStatus.cesPassword = false
|
|
||||||
},
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
doModemReboot() {
|
doModemReboot() {
|
||||||
|
|||||||
@@ -8,7 +8,8 @@
|
|||||||
<div class="settings-set-container statistics-container">
|
<div class="settings-set-container statistics-container">
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
<tr><th>Версия прошивки </th><td>{{ about.firmwareVersion }}</td></tr>
|
||||||
|
<tr><th>Версия FPGA</th><td>{{ about.firmwareFpgaVersion }}</td></tr>
|
||||||
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
||||||
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
||||||
@@ -23,16 +24,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button class="action-button" @click="dumpAllSettings()">Сохранить бекап конфигурации</button>
|
<button class="action-button" @click="dumpAllSettings()">Сохранить бекап конфигурации</button>
|
||||||
<button class="dangerous-button" @click="restoreAllSettings()">Восстановить бекап конфигурации</button>
|
<button class="dangerous-button" @click="restoreAllSettings()">Восстановить бекап конфигурации</button>
|
||||||
</div>{% endraw %}{% if modem == 'tdma' %}
|
</div>
|
||||||
|
|
||||||
<h2>Вход в сеть ЦЗС</h2>
|
|
||||||
<div class="settings-set-container statistics-container">
|
|
||||||
<label>
|
|
||||||
<span>Хеш-строка пароля (выдается оператором NMS)</span>
|
|
||||||
<input v-model="cesPasswordValue" type="text">
|
|
||||||
</label>
|
|
||||||
<button class="action-button" @click="settingsPerformSetCesPassword()">Установить пароль<span class="submit-spinner" v-show="submitStatus.cesPassword"></span></button>
|
|
||||||
</div>{% endif %}{% raw %}
|
|
||||||
|
|
||||||
<h2>Обновление ПО</h2>
|
<h2>Обновление ПО</h2>
|
||||||
<div class="settings-set-container statistics-container">
|
<div class="settings-set-container statistics-container">
|
||||||
|
|||||||
@@ -134,6 +134,7 @@
|
|||||||
// эти "настройки" - read only
|
// эти "настройки" - read only
|
||||||
about: {
|
about: {
|
||||||
firmwareVersion: '?',
|
firmwareVersion: '?',
|
||||||
|
firmwareFpgaVersion: '?',
|
||||||
modemUid: '?',
|
modemUid: '?',
|
||||||
modemSn: '?',
|
modemSn: '?',
|
||||||
macManagement: '?',
|
macManagement: '?',
|
||||||
@@ -241,6 +242,7 @@
|
|||||||
const fr = await fetch("/api/get/aboutFirmware")
|
const fr = await fetch("/api/get/aboutFirmware")
|
||||||
const d = await fr.json()
|
const d = await fr.json()
|
||||||
this.about.firmwareVersion = d["firmware"]["version"]
|
this.about.firmwareVersion = d["firmware"]["version"]
|
||||||
|
this.about.firmwareFpgaVersion = d["firmware"]["fpgaVersion"]
|
||||||
this.about.modemUid = d["firmware"]["modemId"]
|
this.about.modemUid = d["firmware"]["modemId"]
|
||||||
this.about.modemSn = d["firmware"]["modemSn"]
|
this.about.modemSn = d["firmware"]["modemSn"]
|
||||||
this.about.macManagement = d["firmware"]["macMang"]
|
this.about.macManagement = d["firmware"]["macMang"]
|
||||||
|
|||||||
13
front-generator/template/modem-preview.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# {{ modem_name }}
|
||||||
|
|
||||||
|
## Страница входа
|
||||||
|
|
||||||
|
На эту страницу пользователь попадет при попытке зайти в веб-интерфейс модема
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
{% for tab in header_tabs %}
|
||||||
|
## Страница `{{ tab.desc }}`
|
||||||
|
|
||||||
|

|
||||||
|
{% endfor %}
|
||||||
BIN
preview/images/login.png
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
preview/images/scpc/admin.png
Normal file
|
After Width: | Height: | Size: 464 KiB |
BIN
preview/images/scpc/monitoring.png
Normal file
|
After Width: | Height: | Size: 589 KiB |
BIN
preview/images/scpc/qos.png
Normal file
|
After Width: | Height: | Size: 206 KiB |
BIN
preview/images/scpc/setup.png
Normal file
|
After Width: | Height: | Size: 602 KiB |
BIN
preview/images/shps/admin.png
Normal file
|
After Width: | Height: | Size: 463 KiB |
BIN
preview/images/shps/monitoring.png
Normal file
|
After Width: | Height: | Size: 454 KiB |
BIN
preview/images/shps/setup.png
Normal file
|
After Width: | Height: | Size: 508 KiB |
BIN
preview/images/tdma/admin.png
Normal file
|
After Width: | Height: | Size: 428 KiB |
BIN
preview/images/tdma/logs.png
Normal file
|
After Width: | Height: | Size: 214 KiB |
BIN
preview/images/tdma/monitoring.png
Normal file
|
After Width: | Height: | Size: 634 KiB |
BIN
preview/images/tdma/setup.png
Normal file
|
After Width: | Height: | Size: 513 KiB |
20
preview/scpc.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# RSCM-201
|
||||||
|
|
||||||
|
## Страница входа
|
||||||
|
|
||||||
|
На эту страницу пользователь попадет при попытке зайти в веб-интерфейс модема
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Страница `Мониторинг`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Настройки`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `QoS`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Администрирование`
|
||||||
|
|
||||||
|

|
||||||
17
preview/shps.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# ШПС Модем
|
||||||
|
|
||||||
|
## Страница входа
|
||||||
|
|
||||||
|
На эту страницу пользователь попадет при попытке зайти в веб-интерфейс модема
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Страница `Мониторинг`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Настройки`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Администрирование`
|
||||||
|
|
||||||
|

|
||||||
20
preview/tdma.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# VSAT Модем
|
||||||
|
|
||||||
|
## Страница входа
|
||||||
|
|
||||||
|
На эту страницу пользователь попадет при попытке зайти в веб-интерфейс модема
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Страница `Мониторинг`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Настройки`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Администрирование`
|
||||||
|
|
||||||
|

|
||||||
|
## Страница `Журнал`
|
||||||
|
|
||||||
|

|
||||||
@@ -304,6 +304,7 @@ api_driver::obj::TerminalFirmwareVersion & api_driver::obj::TerminalFirmwareVers
|
|||||||
|
|
||||||
void api_driver::obj::TerminalFirmwareVersion::load(proxy::CpProxy &cp) {
|
void api_driver::obj::TerminalFirmwareVersion::load(proxy::CpProxy &cp) {
|
||||||
version = cp.getNetwork("version");
|
version = cp.getNetwork("version");
|
||||||
|
fpgaVersion = cp.getNetwork("fpga_version");
|
||||||
modemId = cp.getNetwork("chip_id");
|
modemId = cp.getNetwork("chip_id");
|
||||||
rtrim(modemId);
|
rtrim(modemId);
|
||||||
modemSn = cp.getNetwork("serial");
|
modemSn = cp.getNetwork("serial");
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ namespace api_driver::obj {
|
|||||||
|
|
||||||
class TerminalFirmwareVersion {
|
class TerminalFirmwareVersion {
|
||||||
public:
|
public:
|
||||||
std::string version, modemId, modemSn, macMang, macData;
|
std::string version, fpgaVersion, modemId, modemSn, macMang, macData;
|
||||||
|
|
||||||
TerminalFirmwareVersion();
|
TerminalFirmwareVersion();
|
||||||
TerminalFirmwareVersion(const TerminalFirmwareVersion& src);
|
TerminalFirmwareVersion(const TerminalFirmwareVersion& src);
|
||||||
|
|||||||
@@ -519,7 +519,8 @@
|
|||||||
<div class="settings-set-container statistics-container">
|
<div class="settings-set-container statistics-container">
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
<tr><th>Версия прошивки </th><td>{{ about.firmwareVersion }}</td></tr>
|
||||||
|
<tr><th>Версия FPGA</th><td>{{ about.firmwareFpgaVersion }}</td></tr>
|
||||||
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
||||||
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
||||||
@@ -725,6 +726,7 @@
|
|||||||
// эти "настройки" - read only
|
// эти "настройки" - read only
|
||||||
about: {
|
about: {
|
||||||
firmwareVersion: '?',
|
firmwareVersion: '?',
|
||||||
|
firmwareFpgaVersion: '?',
|
||||||
modemUid: '?',
|
modemUid: '?',
|
||||||
modemSn: '?',
|
modemSn: '?',
|
||||||
macManagement: '?',
|
macManagement: '?',
|
||||||
@@ -1542,6 +1544,7 @@
|
|||||||
const fr = await fetch("/api/get/aboutFirmware")
|
const fr = await fetch("/api/get/aboutFirmware")
|
||||||
const d = await fr.json()
|
const d = await fr.json()
|
||||||
this.about.firmwareVersion = d["firmware"]["version"]
|
this.about.firmwareVersion = d["firmware"]["version"]
|
||||||
|
this.about.firmwareFpgaVersion = d["firmware"]["fpgaVersion"]
|
||||||
this.about.modemUid = d["firmware"]["modemId"]
|
this.about.modemUid = d["firmware"]["modemId"]
|
||||||
this.about.modemSn = d["firmware"]["modemSn"]
|
this.about.modemSn = d["firmware"]["modemSn"]
|
||||||
this.about.macManagement = d["firmware"]["macMang"]
|
this.about.macManagement = d["firmware"]["macMang"]
|
||||||
|
|||||||
@@ -280,7 +280,8 @@
|
|||||||
<div class="settings-set-container statistics-container">
|
<div class="settings-set-container statistics-container">
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
<tr><th>Версия прошивки </th><td>{{ about.firmwareVersion }}</td></tr>
|
||||||
|
<tr><th>Версия FPGA</th><td>{{ about.firmwareFpgaVersion }}</td></tr>
|
||||||
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
||||||
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
||||||
@@ -449,6 +450,7 @@
|
|||||||
// эти "настройки" - read only
|
// эти "настройки" - read only
|
||||||
about: {
|
about: {
|
||||||
firmwareVersion: '?',
|
firmwareVersion: '?',
|
||||||
|
firmwareFpgaVersion: '?',
|
||||||
modemUid: '?',
|
modemUid: '?',
|
||||||
modemSn: '?',
|
modemSn: '?',
|
||||||
macManagement: '?',
|
macManagement: '?',
|
||||||
@@ -950,6 +952,7 @@
|
|||||||
const fr = await fetch("/api/get/aboutFirmware")
|
const fr = await fetch("/api/get/aboutFirmware")
|
||||||
const d = await fr.json()
|
const d = await fr.json()
|
||||||
this.about.firmwareVersion = d["firmware"]["version"]
|
this.about.firmwareVersion = d["firmware"]["version"]
|
||||||
|
this.about.firmwareFpgaVersion = d["firmware"]["fpgaVersion"]
|
||||||
this.about.modemUid = d["firmware"]["modemId"]
|
this.about.modemUid = d["firmware"]["modemId"]
|
||||||
this.about.modemSn = d["firmware"]["modemSn"]
|
this.about.modemSn = d["firmware"]["modemSn"]
|
||||||
this.about.macManagement = d["firmware"]["macMang"]
|
this.about.macManagement = d["firmware"]["macMang"]
|
||||||
|
|||||||
@@ -259,7 +259,8 @@
|
|||||||
<div class="settings-set-container statistics-container">
|
<div class="settings-set-container statistics-container">
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th>Версия ПО</th><td>{{ about.firmwareVersion }}</td></tr>
|
<tr><th>Версия прошивки </th><td>{{ about.firmwareVersion }}</td></tr>
|
||||||
|
<tr><th>Версия FPGA</th><td>{{ about.firmwareFpgaVersion }}</td></tr>
|
||||||
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
<tr><th>ID модема</th><td>{{ about.modemUid }}</td></tr>
|
||||||
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
<tr><th>Серийный номер</th><td>{{ about.modemSn }}</td></tr>
|
||||||
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
<tr><th>MAC интерфейса управления</th><td>{{ about.macManagement }}</td></tr>
|
||||||
@@ -275,14 +276,6 @@
|
|||||||
<button class="action-button" @click="dumpAllSettings()">Сохранить бекап конфигурации</button>
|
<button class="action-button" @click="dumpAllSettings()">Сохранить бекап конфигурации</button>
|
||||||
<button class="dangerous-button" @click="restoreAllSettings()">Восстановить бекап конфигурации</button>
|
<button class="dangerous-button" @click="restoreAllSettings()">Восстановить бекап конфигурации</button>
|
||||||
</div>
|
</div>
|
||||||
<h2>Вход в сеть ЦЗС</h2>
|
|
||||||
<div class="settings-set-container statistics-container">
|
|
||||||
<label>
|
|
||||||
<span>Хеш-строка пароля (выдается оператором NMS)</span>
|
|
||||||
<input v-model="cesPasswordValue" type="text">
|
|
||||||
</label>
|
|
||||||
<button class="action-button" @click="settingsPerformSetCesPassword()">Установить пароль<span class="submit-spinner" v-show="submitStatus.cesPassword"></span></button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2>Обновление ПО</h2>
|
<h2>Обновление ПО</h2>
|
||||||
<div class="settings-set-container statistics-container">
|
<div class="settings-set-container statistics-container">
|
||||||
@@ -474,6 +467,7 @@
|
|||||||
// эти "настройки" - read only
|
// эти "настройки" - read only
|
||||||
about: {
|
about: {
|
||||||
firmwareVersion: '?',
|
firmwareVersion: '?',
|
||||||
|
firmwareFpgaVersion: '?',
|
||||||
modemUid: '?',
|
modemUid: '?',
|
||||||
modemSn: '?',
|
modemSn: '?',
|
||||||
macManagement: '?',
|
macManagement: '?',
|
||||||
@@ -808,22 +802,6 @@
|
|||||||
}
|
}
|
||||||
this.submitStatus.firmwareUpgradeOta = false
|
this.submitStatus.firmwareUpgradeOta = false
|
||||||
},
|
},
|
||||||
async settingsPerformSetCesPassword() {
|
|
||||||
if (this.submitStatus.cesPassword) { return }
|
|
||||||
this.submitStatus.cesPassword = true
|
|
||||||
try {
|
|
||||||
await fetch('/api/set/cesPassword', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
},
|
|
||||||
body: JSON.stringify({'password': this.cesPasswordValue})
|
|
||||||
})
|
|
||||||
} catch (e) {
|
|
||||||
console.log("failed to perform set CES password: ", e)
|
|
||||||
}
|
|
||||||
this.submitStatus.cesPassword = false
|
|
||||||
},
|
|
||||||
|
|
||||||
doModemReboot() {
|
doModemReboot() {
|
||||||
if (this.submitStatus.modemReboot !== null) {
|
if (this.submitStatus.modemReboot !== null) {
|
||||||
@@ -1020,6 +998,7 @@
|
|||||||
const fr = await fetch("/api/get/aboutFirmware")
|
const fr = await fetch("/api/get/aboutFirmware")
|
||||||
const d = await fr.json()
|
const d = await fr.json()
|
||||||
this.about.firmwareVersion = d["firmware"]["version"]
|
this.about.firmwareVersion = d["firmware"]["version"]
|
||||||
|
this.about.firmwareFpgaVersion = d["firmware"]["fpgaVersion"]
|
||||||
this.about.modemUid = d["firmware"]["modemId"]
|
this.about.modemUid = d["firmware"]["modemId"]
|
||||||
this.about.modemSn = d["firmware"]["modemSn"]
|
this.about.modemSn = d["firmware"]["modemSn"]
|
||||||
this.about.macManagement = d["firmware"]["macMang"]
|
this.about.macManagement = d["firmware"]["macMang"]
|
||||||
|
|||||||