Add firewall script for managing inbound rules; support for domain profiles and interface aliases

This commit is contained in:
2026-09-10 08:56:22 +03:00
parent 369c0347a7
commit e9931cb941
5 changed files with 108 additions and 6 deletions
+41 -2
View File
@@ -1,6 +1,6 @@
# MusicBridge — план проекта
Обновлено: 2026-09-09. Репозиторий находится в `MusicBridge.Agent/`.
Обновлено: 2026-09-10. Репозиторий находится в `MusicBridge.Agent/`.
## Цель
@@ -86,6 +86,9 @@ Windows Core Audio → системная громкость устройств
- [x] Автозапуск текущего пользователя через меню трея; скрытый старт `--minimized`.
- [x] Самостоятельный Windows x64 пакет со встроенными Runtime, ZIP-установка,
ярлык в меню Пуск и скрипт удаления. Это не MSI и не подписанный установщик.
- [x] Скрипт брандмауэра: просмотр, применение и удаление собственных правил;
только конкретный exe, Private + LocalSubnet, TCP порта агента и UDP 5353.
- [x] Восстановление опроса после ошибок чтения; освобождение WSS после обрывов.
### 4. Нативное приложение iPhone — отложено пользователем
@@ -112,8 +115,40 @@ Windows Core Audio → системная громкость устройств
## Проверки и следующий шаг
2026-09-10:
- Пользователь подтвердил: Ethernet подключён к домашней сети. В `Firewall.ps1`
добавлены `-Profile Domain -InterfaceAlias Ethernet`; по умолчанию Private.
Domain требует точный интерфейс, Public и маски запрещены. LocalSubnet,
привязка к exe и порты сохранены. Preview/WhatIf и проверки ограничений прошли.
- После повторного запроса пользователя правила применены через Windows UAC.
В ActiveStore проверены оба правила: включены, Inbound Allow, Domain,
интерфейс Ethernet, LocalSubnet, EdgeTraversal Block, TCP 8765 и UDP 5353.
Привязаны к `bin/Release/net10.0-windows10.0.19041.0/MusicBridge.Agent.exe`;
имена `MusicBridge-0F2EC7194BF18EBC-HTTPS` и `MusicBridge-0F2EC7194BF18EBC-mDNS`.
Агент во время проверки не запущен. При установке в другой каталог нужны
правила для нового пути. Подключение со второго устройства ещё не проверено.
2026-09-09:
- Последний этап — устойчивость: **112 проверок прошли**, сборка без ошибок и
предупреждений. Конфигурация `Resilience`, параметры `--desktop-smoke
--qr-window-smoke --mdns-smoke --live-read`. Работающий Release-агент не остановлен.
Проверены ошибки первого и последующих чтений, восстановление состояния,
очистка устаревших данных при ошибке и 12 последовательных обрывов WSS.
Чтение получает отмену через 5 секунд; отправка WSS ограничена 5 секундами,
keepalive — 20 секунд с ожиданием ответа 10 секунд. После длинного перерыва
mDNS пересоздаёт объявления. Реальный сон/пробуждение ещё не проверен.
- `Packaging/Test-Firewall.ps1` проверил Preview и Apply -WhatIf без изменения
системы. Правила ещё не применены: Ethernet имеет профиль DomainAuthenticated,
Tailscale — Private, tun2 — Public. Правила Private не откроют доступ через
Ethernet. Категории сети не менять автоматически; доступ для Domain требует
отдельного решения пользователя.
- ZIP пересобран с изменениями устойчивости и `Firewall.ps1`. Повторная проверка
установки, запуска со встроенным Runtime, обновления, защиты занятого exe и
удаления прошла. Проверка правил в режиме WhatIf также прошла; реальных
изменений брандмауэра и установки в рабочую папку пользователя не выполнялось.
- Последний этап — автозапуск и упаковка: **107 проверок прошло** с
`-c Packaging --no-build -- --desktop-smoke --qr-window-smoke --mdns-smoke --live-read`.
Проверены запись/удаление тестовой записи автозапуска и скрытый старт окна.
@@ -194,7 +229,8 @@ Windows Core Audio → системная громкость устройств
объявляется на домашних IPv4-адаптерах с multicast. Автоизменения брандмауэра нет.
Следующий шаг: проверка с другого устройства и устойчивости при смене сети,
проверка входа Windows с автозапуском и подготовка правил частного брандмауэра.
проверка входа Windows с автозапуском. Правила для домашнего Ethernet применены
и проверены для текущего пути Release-сборки (см. запись от 2026-09-10).
Трей, автозапуск и ZIP-упаковка реализованы. iPhone-клиент пока не начинать.
Точные границы реализации и следующие шаги — в `CONNECTION-ROADMAP.md`.
Начать разработку iOS только после новой команды пользователя.
@@ -221,6 +257,9 @@ Windows Core Audio → системная громкость устройств
- `Desktop/DesktopHost.cs`: STA-поток, значок/меню трея и жизненный цикл окна.
- `Desktop/StartupSettings.cs`: HKCU Run, экранированная команда автозапуска.
- `Packaging/`: сборка standalone ZIP, установка/удаление и изолированный smoke-тест.
- `Packaging/Firewall.ps1`: Preview/Apply/Remove правил LocalSubnet; Private по
умолчанию, Domain только с явно указанным интерфейсом домашней сети.
- `Packaging/Test-Firewall.ps1`: проверка определений правил без изменения системы.
- `INSTALL.md`: установка, автозапуск, обновление и удаление.
- `Network/LocalAddresses.cs`: подходящие домашние IPv4-адреса.
- `Network/DiscoveryDescriptor.cs`: публичные поля DNS-SD.