# Проверка KeeneticQuickInstaller 1.2.0 на Windows и реальном роутере

## 1. Сборка

1. Распаковать архив в `KeeneticQuickInstaller_v1_2_0`.
2. Запустить `Build_Visible.bat`.
3. Убедиться, что скрипт показывает фактически выбранный SDK.
4. Проверить наличие непустых файлов:
   - `artifacts\publish\win-x64\KeeneticQuickInstaller.exe`;
   - `artifacts\portable\KeeneticQuickInstaller_Portable_x64.zip`;
   - `artifacts\installer\KeeneticQuickInstaller_Setup_x64.exe`.
5. Установить поверх предыдущей версии и проверить каталог `%LocalAppData%\Programs\Winstelecom\KeeneticQuickInstaller`.

## 2. Авторизация, профили и backup

1. Ввести неверный пароль и убедиться, что в окне подключения отображается только краткое сообщение об ошибке.
2. Убедиться, что появилась кнопка «Показать журнал входа» и что полный текст HTTP/RCI-ошибки находится внутри журнала.
3. Проверить успешную Web/RCI-аутентификацию.
4. Проверить `Connection: close` на устройстве, где без него возникали таймауты.
5. Сохранить профиль, закрыть и открыть программу.
6. Убедиться, что пароль роутера восстановился через DPAPI, но отсутствует в JSON.
7. Сформировать план без изменений и проверить создание backup running-config.

## 3. Роутер с пустым паролем

1. На тестовом роутере оставить пользователя `admin` без пароля.
2. Оставить поле «Пароль» пустым и нажать «Проверить»: соединение должно быть успешным.
3. Нажать «Подключиться» и выбрать «Продолжить без пароля»: мастер должен открыться.
4. Сохранить профиль с пустым паролем и проверить автоматическое подключение.
5. Повторить вход, выбрать «Задать пароль», ввести совпадающие значения.
6. Проверить выполнение `user admin password ***`, повторную Web/RCI-авторизацию и сохранение конфигурации.
7. Закрыть программу, открыть её снова и убедиться, что новый пароль восстановился через DPAPI.
8. Проверить `profiles.json`, WizardProfiles JSON, `.log`, TXT и JSON-отчёты: открытого пароля быть не должно.
9. Проверить кнопки «Сгенерировать», «Продолжить без пароля» и «Отмена».

## 4. WAN: DHCP

1. Выбрать физический WAN-интерфейс.
2. Включить DHCP, при необходимости задать hostname.
3. Не включать одновременно смену LAN IP на первом тесте.
4. Применить план.
5. Проверить running-config и фактический полученный адрес через `show interface`.
6. Перезагрузить роутер и подтвердить сохранность.
7. Повторить применение и убедиться в идемпотентности.

## 5. WAN: статический IPv4

1. Подготовить корректные IP, маску и шлюз в тестовой сети.
2. Применить статический режим.
3. Проверить `ip address`, `ip global auto` и default route.
4. Проверить доступ в интернет и локальный Web/RCI.
5. Вернуть исходную конфигурацию либо DHCP.
6. Убедиться, что подключения других интерфейсов не удалены.

## 6. WAN: PPPoE

1. Выбрать физический WAN.
2. Задать новый или существующий `PPPoE<n>`, логин, пароль, service name при необходимости и MTU.
3. Проверить, что пароль в плане отображается как `***`.
4. Применить и проверить `connect via`, identity, MTU, `ip global auto`, `up/connect`.
5. Проверить полученный адрес и доступ в интернет.
6. Повторить применение без создания дубликата.
7. Закрыть и открыть программу: PPPoE-поля должны восстановиться, пароль должен быть редактируемым.
8. Открыть WizardProfiles JSON и убедиться, что пароля там нет.

## 7. L2TP, DNS, маршруты и Firewall

1. Создать/обновить L2TP/IPSec и проверить немедленное перечитывание ID/peer/login.
2. Применить 8 DoH-серверов, затем 9; девятый должен быть пропущен с предупреждением.
3. Проверить включение/выключение DNS провайдера.
4. Импортировать `examples\routes-test-300.bat`.
5. Перезагрузить роутер и подтвердить флаг `auto`.
6. Проверить маршрут за L2TP.
7. Создать ACL TCP → UDP → ICMP, повторить без дублей и удалить управляемый набор.

## 8. Удалённое управление и NTP

1. Применить HTTPS и локальный SSH/Telnet.
2. Проверить предупреждение OEM, если SSH WAN остаётся `private`.
3. Убедиться, что такое предупреждение не блокирует последующие этапы.
4. Применить NTP-сервер и период, перечитать running-config.

## 9. OPKG / Entware

Перед тестом создать полный backup и убедиться, что компонент Open Package support установлен.

1. Проверить выбранный накопитель и свободное место.
2. Сначала выбрать архитектуру вручную, соответствующую роутеру.
3. Запустить установку без HTTP fallback.
4. Проверить появление `/opt/bin/opkg`, версию и результат `opkg update`.
5. Повторно применить: повторная распаковка выполняться не должна.
6. Проверить автоопределение архитектуры.
7. На отдельном тестовом устройстве/прошивке проверить legacy HTTP fallback только для `storage:/`.
8. Проверить ошибку при неверной архитектуре и восстановить накопитель вручную при необходимости.
9. Проверить понятную ошибку при отсутствии Open Package support.
10. Включить «продолжить остальные этапы», вызвать таймаут OPKG и убедиться, что этап получает Warning, AWG Manager пропускается, а сохранение конфигурации и LAN продолжаются.
11. Отключить этот флажок и убедиться, что та же ошибка останавливает сценарий.
12. Имитировать ошибку `opkg update`: установленный `/opt/bin/opkg` должен остаться подтверждённым, а обновление индекса — стать Warning.

## 10. AWG Manager

1. Убедиться, что OPKG уже работает.
2. Проверить, что без флажка стороннего проекта план не формируется.
3. Выполнить установку по HTTPS.
4. Проверить пакет `awg-manager`, init-скрипт, статус, порт и `/api/health`.
5. Открыть локальный веб-интерфейс AWG Manager по обнаруженному порту.
6. Повторить установку как обновление.
7. Проверить сценарий, когда сервис запущен, но health не отвечает: должен быть Warning.
8. HTTP-режим проверять только отдельно и осознанно; в отчёте должно быть предупреждение о загрузке без TLS.

## 11. LAN IP и итоговая безопасность

1. После успешных независимых тестов включить смену LAN IP как последний этап.
2. Проверить ожидаемую ошибку отправки исходного RCI-запроса при немедленном разрыве связи — она не должна считаться фатальной сама по себе.
3. Проверить переподключение к новому IP и обновление сохранённого профиля.
4. Перезагрузить роутер.
5. Проверить `.log`, TXT и JSON поиском реальных паролей/PSK: секретов быть не должно.
6. Смоделировать ошибку посередине сценария и убедиться, что последующие опасные этапы пропущены без заявления полного rollback.

## WAN: продолжение без установленного интернета

1. Выберите PPPoE и заполните обязательные параметры.
2. Оставьте включённым «Проверять результат настройки доступа в интернет».
3. Включите «Если интернет не подключился — продолжить остальные этапы».
4. Выполните сценарий при отключённом кабеле провайдера или заведомо недоступной PPPoE-сессии.
5. Убедитесь, что этап WAN получает `Warning`, а L2TP, DNS, маршруты, NTP и сохранение продолжаются.
6. Повторите с выключенным разрешением продолжения: ошибка `connect` должна остановить сценарий.
7. Выключите проверку результата и убедитесь, что read-back WAN не блокирует сценарий.
8. Перезапустите программу и проверьте восстановление обоих флажков из профиля.

## Дополнительные проверки версии 1.2.0

### Автоопределение архитектуры

На SmartBox Giga KN-1913 или другой MediaTek/MIPS-модели:

1. оставить «Архитектура» = «Автоопределение»;
2. убедиться, что поле URL содержит `mipselsf-k3.4/installer/mipsel-installer.tar.gz`;
3. убедиться, что статус показывает `MIPS little-endian (mipsel)`;
4. сформировать план и проверить, что big-endian URL `mipssf-k3.4` не используется.

### Редакция без AWG Manager

1. запустить `artifacts/publish/no-awg/win-x64/KeeneticQuickInstaller.exe`;
2. убедиться, что вкладка AWG Manager отсутствует;
3. убедиться, что после OPKG идёт «План и применение»;
4. загрузить профиль, в котором ранее был включён AWG Manager;
5. сформировать план и убедиться, что этап AWG Manager отсутствует.

### Обновление через интернет

1. разместить собранный `latest.json` и пакеты на сайте;
2. открыть «О программе» и нажать «Проверить обновления»;
3. для теста временно указать в манифесте номер версии выше установленного;
4. проверить выбор пакета полной/No AWG редакции;
5. изменить один символ SHA-256 и убедиться, что файл удаляется и не запускается;
6. вернуть правильный SHA-256 и проверить отдельный запрос перед запуском установщика.
