d5e827112a
- 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.
3.7 KiB
3.7 KiB
Заготовки подключения — 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 первых символов отпечатка>, TXTv=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 перед отправкой токена.
Порядок подключения будущего нативного клиента
- Считать QR внутри приложения, проверить схему/версию, размер payload, HTTPS-адрес, отсутствие userinfo/параметров, формат отпечатка/кода и срок.
- Проверить TLS по отпечатку из QR до отправки POST
/v1/pair. - Сохранить токен и отпечаток в Keychain; не сохранять код как постоянный секрет.
- Получить
/v1/info,/v1/state, открыть WSS/v1/events. - При переподключении найти адрес по DNS-SD, сопоставить ID, проверить TLS; при 401 запросить повторное сопряжение, не повторять команды автоматически.
Схема musicbridge:// пока не зарегистрирована на iPhone; Safari ничего делать
с ней не должен. Swift, Xcode-проект, установка и интерфейс iPhone отложены.