Здравствуйте.
Похоже, нашёл баг веб-интерфейса KeeneticOS.
Окружение
Модель: Keenetic Ultra (KN-1810)
Канал обновлений: Stable
Версия KeeneticOS: 5.0.7
Способ доступа: Web UI
Браузер: Google Chrome
Раздел: Пользователи и доступ / настройки доступа к управлению
Суть проблемы
Если в разделе «Пользователи и доступ» изменить HTTPS-порт управления роутером и нажать «Сохранить», то веб-интерфейс падает / зависает, а настройка не применяется.
После перезагрузки страницы видно, что изменение не сохранилось.
Что именно происходит
При нажатии Save / Сохранить в консоли браузера появляется ошибка:
ERROR TypeError: Cannot read properties of undefined (reading 'trim')
at t.getPortsConfigurationQueries (main-GMBPKGII.js:44:191836)
at t.saveUserAndAccessConfiguration (main-GMBPKGII.js:44:190745)
at t.saveManagementAccessConfiguration (main-GMBPKGII.js:53:18600)
at i.value (main-GMBPKGII.js:40:355943)
at t.saveModifiedConfiguration (main-GMBPKGII.js:329:13084)
at main-GMBPKGII.js:329:14074
at _ye (main-GMBPKGII.js:39:109803)
at Object.i [as next] (main-GMBPKGII.js:39:109646)
at Zae.next (main-GMBPKGII.js:35:3135)
at E1._next (main-GMBPKGII.js:35:2814)
То есть это выглядит не как штатная ошибка валидации, а именно как падение frontend-кода Web UI.
Ожидаемое поведение
При изменении HTTPS-порта управления роутером интерфейс должен:
либо успешно сохранить настройку,
либо показать понятную ошибку, например:
порт уже занят,
конфликт с пробросом порта,
невозможно применить настройки.
Сейчас вместо этого происходит ошибка JavaScript, после чего настройка не сохраняется.
Как воспроизводится
Открыть веб-интерфейс Keenetic
Перейти в раздел «Пользователи и доступ»
Изменить HTTPS-порт управления
Нажать «Сохранить»
Открыть консоль браузера
Получить ошибку Cannot read properties of undefined (reading 'trim')
Дополнительный контекст
У меня настроен внешний доступ и пробросы портов.
Из релевантного конфига:
ip http security-level public ssl
ip http ssl enable
ip static tcp GigabitEthernet1 443 ...
ip static udp GigabitEthernet1 443 ...
ip static tcp GigabitEthernet1 8443 ...
То есть:
внешний 443 уже проброшен на внутреннее устройство,
внешний 8443 тоже проброшен на внутреннее устройство.
Я как раз пытаюсь перенести доступ к самому роутеру на другой HTTPS-порт, чтобы сохранить проброс 443 на внутренний хост.
Но вместо нормальной обработки конфликта/сохранения Web UI падает с ошибкой.
Важное наблюдение
Судя по stack trace, ошибка возникает в функции:
getPortsConfigurationQueries
То есть очень похоже, что проблема именно в обработке конфигурации портов в Web UI, а не в самом backend/CLI.
Вопрос
Это уже известный баг?
И есть ли:
фикс,
workaround,
либо способ задать HTTPS-порт управления через CLI, если Web UI на этом шаге падает?