Files
windows/CONNECTION-ROADMAP.md
T
ros d5e827112a Add MusicBridge protocol documentation and implement system volume control
- Created PROTOCOL.md to outline the MusicBridge protocol v1, detailing setup, TLS, pairing, state management, and command structure.
- Implemented SystemVolume class for managing system audio levels, including methods for setting, reading, changing, and muting volume.
- Added unit tests for the MusicBridge agent, covering pairing, identity storage, command validation, and media state management.
- Included tests for real-time media reading from Windows and ensured proper handling of artwork caching and retrieval.
2026-09-09 01:05:52 +03:00

3.7 KiB
Raw Blame History

Заготовки подключения — iOS не начинать до команды пользователя

Уже есть

  • ConnectionInvitation: проверяет домашний IPv4 HTTPS-адрес, код/срок и SHA-256 сертификата; создаёт строку musicbridge://pair?data=<base64url UTF-8 JSON>.
  • Клавиша I в агенте выводит эту строку для каждого подходящего адреса при открытом сопряжении (B) и запуске с --lan. Это данные для QR, не QR-картинка.
  • В JSON: version:1, endpoint, certificateSha256, code (строка из 8 цифр), expiresAt (ISO 8601). Payload содержит секрет сопряжения: не публиковать/не отправлять внешним генераторам QR. Его срок совпадает со сроком кода.
  • DiscoveryDescriptor: сервис _musicbridge._tcp.local., имя MusicBridge-<12 первых символов отпечатка>, TXT v=1, id=<полный SHA-256>.
  • Авторизованный GET /v1/info возвращает protocolVersion, agentId, serviceType, instanceName; идентификатор равен отпечатку сертификата.

Следующая реализация на Windows

  • Локальная генерация QR из payload; отображение в окне агента/трее.
  • Закрывать/обновлять показанный QR при истечении кода, сопряжении или смене IP.
  • Выбор адаптера при нескольких адресах; сейчас для каждого свой payload.
  • mDNS/DNS-SD publisher: PTR/SRV/TXT/A, порт HTTPS агента, без кодов и токенов.
  • Обработка конфликтов имён, смены адресов, сна/пробуждения и остановки сервиса.
  • Проверка объявления со второго устройства. Сейчас multicast не отправляется.
  • Tray, кнопки сопряжения/отзыва, автозапуск и упаковка Windows.

Не заменять mDNS рассылкой секретов. Объявления сети не являются доказательством подлинности ПК: проверять сохранённый отпечаток TLS перед отправкой токена.

Порядок подключения будущего нативного клиента

  1. Считать QR внутри приложения, проверить схему/версию, размер payload, HTTPS-адрес, отсутствие userinfo/параметров, формат отпечатка/кода и срок.
  2. Проверить TLS по отпечатку из QR до отправки POST /v1/pair.
  3. Сохранить токен и отпечаток в Keychain; не сохранять код как постоянный секрет.
  4. Получить /v1/info, /v1/state, открыть WSS /v1/events.
  5. При переподключении найти адрес по DNS-SD, сопоставить ID, проверить TLS; при 401 запросить повторное сопряжение, не повторять команды автоматически.

Схема musicbridge:// пока не зарегистрирована на iPhone; Safari ничего делать с ней не должен. Swift, Xcode-проект, установка и интерфейс iPhone отложены.