# Краткий URI-формат для клиентов Этот документ описывает **соглашение для разработчиков клиентских приложений**, которым нужен компактный способ передавать параметры подключения `olcrtc`. Текущий `olcrtc` не парсит такой URI автоматически. Если клиентское приложение хочет использовать эту запись, оно должно само разобрать строку и передать полученные поля в свои вызовы `olcrtc`. --- ## Формат ```text olcrtc://?@#%$ ``` Все поля после `olcrtc://` считаются частью клиентского соглашения. --- ## Поля | Поле | Значение | |------|----------| | `` | Имя carrier/provider, например `telemost`, `jazz`, `wbstream` | | `` | Имя транспорта, например `datachannel`, `vp8channel`, `seichannel`, `videochannel` | | `` | Идентификатор комнаты или carrier-specific room URL/ID | | `` | Ключ шифрования в hex, обычно 64 символа (`32` байта) | | `` | Идентификатор клиента. Должен совпадать с ожидаемым значением на сервере | | `` | Свободный комментарий для UI/метаданных, например `RU / olc free sub / IPv6` | --- ## Соответствие параметрам olcrtc URI-поля сопоставляются с обычными параметрами так: | URI поле | Параметр / значение | |----------|---------------------| | `` | `-carrier` | | `` | `-transport` | | `` | `-id` | | `` | `-key` | | `` | `-client-id` | | `` | В `olcrtc` не передаётся. Это только клиентский комментарий | `-link direct` и `-data data` в этом формате не кодируются, потому что для текущих сценариев они фиксированные. --- ## Разделители Строка использует фиксированные разделители: | Разделитель | После него идёт | |-------------|-----------------| | `://` | начало полезной нагрузки после схемы `olcrtc` | | `?` | `` | | `@` | `` | | `#` | `` | | `%` | `` | | `$` | `` | Рекомендуется не использовать эти символы внутри самих полей. Если клиенту это нужно, он должен ввести собственное escaping/percent-encoding правило и применять его симметрично при кодировании и декодировании. --- ## Примеры ### Полный пример ```text olcrtc://wbstream?seichannel@room-01#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799%android-01$RU / olc free sub / IPv6 ``` Разбор: | Поле | Значение | |------|----------| | `Carrier` | `wbstream` | | `Transport` | `seichannel` | | `RoomID` | `room-01` | | `EncryptionKey` | `d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799` | | `ClientID` | `android-01` | | `MIMO` | `RU / olc free sub / IPv6` | ### Эквивалент CLI ```sh ./olcrtc -mode cnc \ -carrier wbstream \ -transport seichannel \ -id room-01 \ -client-id android-01 \ -key d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799 \ -link direct \ -data data ``` --- ## Короткие алиасы Как хотите но лично я был бы против.