From 9be377214b0ac08615386a0c04a52b8fe7115378 Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Sun, 10 May 2026 14:48:30 +0300 Subject: [PATCH] doc: fix typo --- docs/about.md | 194 +++++++++++++++++++++++++------------------------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/docs/about.md b/docs/about.md index 0c74b65..b3b3d74 100644 --- a/docs/about.md +++ b/docs/about.md @@ -1,6 +1,6 @@ -# olcRTC — полная документация +# olcRTC - полная документация -> **olcRTC** (OpenLibreCommunity RTC) — инструмент обхода интернет-блокировок через паразитирование на легальных WebRTC-сервисах видеозвонков, уже находящихся в российских белых списках. +> **olcRTC** (OpenLibreCommunity RTC) - инструмент обхода интернет-блокировок через паразитирование на легальных WebRTC-сервисах видеозвонков, уже находящихся в российских белых списках. > > Проект: [github.com/openlibrecommunity/olcrtc](https://github.com/openlibrecommunity/olcrtc) > Лицензия: WTFPL @@ -15,19 +15,19 @@ 3. [Как это работает](#3-как-это-работает) 4. [Архитектура](#4-архитектура) 5. [Структура репозитория](#5-структура-репозитория) -6. [Carriers — провайдеры](#6-carriers--провайдеры) -7. [Transports — транспорты](#7-transports--транспорты) +6. [Carriers - провайдеры](#6-carriers--провайдеры) +7. [Transports - транспорты](#7-transports--транспорты) 8. [Шифрование](#8-шифрование) 9. [Мультиплексирование](#9-мультиплексирование) 10. [SOCKS5 прокси](#10-socks5-прокси) 11. [Mobile / Android](#11-mobile--android) 12. [Python PoC скрипты](#12-python-poc-скрипты) 13. [Сборка и деплой](#13-сборка-и-деплой) -14. [CLI — все флаги](#14-cli--все-флаги) +14. [CLI - все флаги](#14-cli--все-флаги) 15. [URI-формат и подписки](#15-uri-формат-и-подписки) 16. [Матрица совместимости](#16-матрица-совместимости) 17. [CI/CD](#17-cicd) -18. [Что планируется сделать — Issues](#18-что-планируется-сделать--issues) +18. [Что планируется сделать - Issues](#18-что-планируется-сделать--issues) 19. [Контрибуторы](#19-контрибуторы) 20. [Частые ошибки](#20-частые-ошибки) @@ -38,12 +38,12 @@ В России работают ТСПУ (технические средства противодействия угрозам). В мобильных сетях провайдеры перешли в режим **белых списков**: ТСПУ дропает все пакеты, кроме явно разрешённых IP-адресов и SNI. Фильтрация двухуровневая: -- **L3** — по IP-адресу назначения. Не разрешён → пакет физически не уходит дальше второго хопа. -- **L7** — по SNI в TLS ClientHello. Есть в чёрном списке → RST. +- **L3** - по IP-адресу назначения. Не разрешён → пакет физически не уходит дальше второго хопа. +- **L7** - по SNI в TLS ClientHello. Есть в чёрном списке → RST. -Классические обходы через VPS ломаются когда VPS не попадает в белый список. Yandex Cloud, VK Cloud, Timeweb в списке — но провайдеры активно банят инстансы используемые как прокси. +Классические обходы через VPS ломаются когда VPS не попадает в белый список. Yandex Cloud, VK Cloud, Timeweb в списке - но провайдеры активно банят инстансы используемые как прокси. -**Решение olcRTC**: не пытаться попасть в белый список — использовать сервисы, которые там уже есть навсегда. Телемост, SaluteJazz и WB Stream — сервисы видеозвонков крупных российских компаний. Пока они живы, olcRTC работает. Чтобы их заблокировать — нужно заблокировать сам сервис. +**Решение olcRTC**: не пытаться попасть в белый список - использовать сервисы, которые там уже есть навсегда. Телемост, SaluteJazz и WB Stream - сервисы видеозвонков крупных российских компаний. Пока они живы, olcRTC работает. Чтобы их заблокировать - нужно заблокировать сам сервис. Трафик идёт через WebRTC SFU этих сервисов: @@ -59,45 +59,45 @@ ### Хронология -**2025-04-03** — первый коммит `init repo`. Идея. +**2025-04-03** - первый коммит `init repo`. Идея. -**2025-04-06** — `remove text`. Единственная правка за целый год. +**2025-04-06** - `remove text`. Единственная правка за целый год. -**2026-04-04** — `Initialize project with base configuration and assets`. Реальный перезапуск с нуля. +**2026-04-04** - `Initialize project with base configuration and assets`. Реальный перезапуск с нуля. -**2026-04-05** — За один день появляются Python PoC: -- `telemost_poc_datachannel.py` — первое рабочее соединение через Telemost DataChannel -- `vcsend.py` — передача данных QR-кодами через видеопоток -- `flood.py` — стресс-тест соединений -- `limits.py` — обнаружен лимит Telemost DataChannel: 8KB на сообщение, всё что выше молча дропается -- `info.py` — исследование API Telemost +**2026-04-05** - За один день появляются Python PoC: +- `telemost_poc_datachannel.py` - первое рабочее соединение через Telemost DataChannel +- `vcsend.py` - передача данных QR-кодами через видеопоток +- `flood.py` - стресс-тест соединений +- `limits.py` - обнаружен лимит Telemost DataChannel: 8KB на сообщение, всё что выше молча дропается +- `info.py` - исследование API Telemost -**2026-04-06** — QR-код двусторонняя передача (`invicible`), первые замеры: **44 Mbps** через DataChannel. +**2026-04-06** - QR-код двусторонняя передача (`invicible`), первые замеры: **44 Mbps** через DataChannel. -**2026-04-07** — первый Go бинарник: WebRTC туннель с ChaCha20-Poly1305 шифрованием, SOCKS5 прокси, деплой через Podman. Провайдер: только Telemost. +**2026-04-07** - первый Go бинарник: WebRTC туннель с ChaCha20-Poly1305 шифрованием, SOCKS5 прокси, деплой через Podman. Провайдер: только Telemost. -**2026-04-08..09** — активная Go разработка: клиент-серверная архитектура, кастомный мультиплексор с sequence numbering, имена участников из файла, graceful shutdown, DNS поддержка, Android мост. +**2026-04-08..09** - активная Go разработка: клиент-серверная архитектура, кастомный мультиплексор с sequence numbering, имена участников из файла, graceful shutdown, DNS поддержка, Android мост. -**2026-04-10..11** — простой UI, Docker образ сервера, SaluteJazz PoC от community-контрибутора `0xcodepunk`. +**2026-04-10..11** - простой UI, Docker образ сервера, SaluteJazz PoC от community-контрибутора `0xcodepunk`. -**2026-04-12..14** — большой рефакторинг: golangci-lint, Jazz провайдер с protobuf-style пакетами, автогенерация Room ID для Jazz, Windows скрипты от `DeNcHiK3713`. +**2026-04-12..14** - большой рефакторинг: golangci-lint, Jazz провайдер с protobuf-style пакетами, автогенерация Room ID для Jazz, Windows скрипты от `DeNcHiK3713`. -**2026-04-19..20** — архитектурный рефакторинг: выделение слоёв `carrier` / `transport` / `link`, WB Stream провайдер через LiveKit SDK, видеоканальный PoC на Python. +**2026-04-19..20** - архитектурный рефакторинг: выделение слоёв `carrier` / `transport` / `link`, WB Stream провайдер через LiveKit SDK, видеоканальный PoC на Python. -**2026-04-21..22** — `videochannel` транспорт (данные кодируются в QR-коды внутри VP8 видеопотока через ffmpeg), `vp8channel` транспорт (данные в VP8 payload), NVENC поддержка. +**2026-04-21..22** - `videochannel` транспорт (данные кодируются в QR-коды внутри VP8 видеопотока через ffmpeg), `vp8channel` транспорт (данные в VP8 payload), NVENC поддержка. -**2026-04-25..30** — tile кодек для videochannel с Reed-Solomon коррекцией ошибок, `vp8channel` поверх KCP для надёжной доставки, замена самописного мультиплексора на smux. +**2026-04-25..30** - tile кодек для videochannel с Reed-Solomon коррекцией ошибок, `vp8channel` поверх KCP для надёжной доставки, замена самописного мультиплексора на smux. -**2026-05-01..06** — `seichannel` (данные в H264 SEI NAL-юнитах), E2E тесты на реальных провайдерах, URI-формат и формат подписок, `-client-id` для привязки клиента к серверу, SOCKS5 аутентификация. +**2026-05-01..06** - `seichannel` (данные в H264 SEI NAL-юнитах), E2E тесты на реальных провайдерах, URI-формат и формат подписок, `-client-id` для привязки клиента к серверу, SOCKS5 аутентификация. -**2026-05-07..10** — финальная полировка: исправлен throughput bug в vp8channel (ограничение было в 32 раза ниже реального), документация, SEI конфигурация, `-socks-user`/`-socks-pass`. +**2026-05-07..10** - финальная полировка: исправлен throughput bug в vp8channel (ограничение было в 32 раза ниже реального), документация, SEI конфигурация, `-socks-user`/`-socks-pass`. ### Статья на Хабре Проект описан в двух статьях на Хабре: -- *«Это — всё что вам надо знать о белых списках»* — технический анализ как работает фильтрация, 63k IP в белом списке из 46 млн российских, методы обхода -- *«BAREBONE2022: чтобы заблокировать этот протокол придётся запретить MAX и Yandex»* — описание идеи olcRTC, первые замеры скорости +- *«Это - всё что вам надо знать о белых списках»* - технический анализ как работает фильтрация, 63k IP в белом списке из 46 млн российских, методы обхода +- *«BAREBONE2022: чтобы заблокировать этот протокол придётся запретить MAX и Yandex»* - описание идеи olcRTC, первые замеры скорости --- @@ -135,7 +135,7 @@ Сервер (`srv`) стоит на вашем VPS. Он подключается к той же комнате видеозвонка, получает зашифрованный поток и от своего имени делает TCP соединения к нужным адресам в интернете. -ТСПУ видит трафик к IP Яндекса/Сбера/WB с корректным TLS и SNI — ничем не отличается от обычного видеозвонка. +ТСПУ видит трафик к IP Яндекса/Сбера/WB с корректным TLS и SNI - ничем не отличается от обычного видеозвонка. --- @@ -191,7 +191,7 @@ internal/e2e/ E2E тесты на реальных провайдер | `magefile.go` | Система сборки на Mage (аналог Makefile для Go). Таргеты: `build`, `cross`, `mobile`, `docker`, `podman`, `lint`, `test`, `e2e` | | `Dockerfile` | Многоэтапный образ: Alpine build → Alpine runtime с непривилегированным пользователем `olcrtc` | | `docker-compose.server.yml` | Compose для серверного режима | -| `.gitmodules` | Субмодуль `internal/transport/videochannel/gr` — кастомные кодеки QR и tile | +| `.gitmodules` | Субмодуль `internal/transport/videochannel/gr` - кастомные кодеки QR и tile | | `.golangci.yml` | Конфиг линтера golangci-lint | | `.github/workflows/ci.yml` | CI: тесты, покрытие, E2E, lint, сборка CLI для всех платформ, сборка Android AAR | @@ -236,7 +236,7 @@ internal/e2e/ E2E тесты на реальных провайдер |---|---| | `link.go` | Интерфейс `Link` (`Send`, `SetOnData`, `Connect`, `Close` и т.д.) + реестр | | `link_test.go` | Тесты реестра | -| `direct/direct.go` | Единственная реализация Link. Pass-through: создаёт Transport и форвардит вызовы. Называется "direct" потому что нет промежуточного relay — данные идут прямо в transport | +| `direct/direct.go` | Единственная реализация Link. Pass-through: создаёт Transport и форвардит вызовы. Называется "direct" потому что нет промежуточного relay - данные идут прямо в transport | | `direct/direct_test.go` | Тесты | ### `internal/transport/` @@ -279,7 +279,7 @@ internal/e2e/ E2E тесты на реальных провайдер | `telemost/peer.go` | WebRTC peer для Telemost. Signaling через WebSocket. Двухуровневый keepalive (WS ping + app ping). Автопереподключение | | `telemost/api.go` | HTTP/WS клиент API Telemost | | `wbstream/provider.go` | WB Stream провайдер через LiveKit SDK | -| `wbstream/peer.go` | WebRTC peer для wbstream. Самый стабильный провайдер — минимальная прослойка, почти прямой relay | +| `wbstream/peer.go` | WebRTC peer для wbstream. Самый стабильный провайдер - минимальная прослойка, почти прямой relay | | `wbstream/api.go` | API клиент wbstream: создание стрима/комнаты | ### `internal/crypto/` @@ -300,7 +300,7 @@ internal/e2e/ E2E тесты на реальных провайдер | Файл | Что делает | |---|---| -| `protect.go` | Android VPN protect() интеграция. `Protector func(fd int) bool` — если установлен, вызывается перед каждым connect чтобы сокет не роутился через VPN (нужно для корректной работы в связке с VPN-приложением на Android) | +| `protect.go` | Android VPN protect() интеграция. `Protector func(fd int) bool` - если установлен, вызывается перед каждым connect чтобы сокет не роутился через VPN (нужно для корректной работы в связке с VPN-приложением на Android) | | `protect_test.go` | Тесты | ### `internal/logger/` @@ -323,7 +323,7 @@ internal/e2e/ E2E тесты на реальных провайдер | `mobile.go` | gomobile-совместимый API для Android/iOS. Синглтон: `Start()`, `Stop()`, `IsRunning()`. `SocketProtector` интерфейс для Android VPN bypass. `LogWriter` интерфейс для получения логов в Kotlin/Java. По умолчанию использует `vp8channel` транспорт | | `mobile_test.go` | Тесты mobile API | -### `code/` — Python PoC скрипты +### `code/` - Python PoC скрипты | Файл | Что делает | |---|---| @@ -367,9 +367,9 @@ internal/e2e/ E2E тесты на реальных провайдер --- -## 6. Carriers — провайдеры +## 6. Carriers - провайдеры -Carrier — это WebRTC сервис видеозвонков, через который идёт туннель. Все три в белых списках у российских провайдеров. +Carrier - это WebRTC сервис видеозвонков, через который идёт туннель. Все три в белых списках у российских провайдеров. ### SaluteJazz (`jazz`) @@ -383,7 +383,7 @@ Carrier — это WebRTC сервис видеозвонков, через ко ### Yandex Telemost (`telemost`) - Сервис видеозвонков от Яндекса: `telemost.yandex.ru` -- **Удалил DataChannel** — его больше нет в Telemost +- **Удалил DataChannel** - его больше нет в Telemost - VideoTrack работает - Требует создания комнаты вручную через сайт (нет автогенерации) - Двухуровневый keepalive: WebSocket ping + app-level ping @@ -391,7 +391,7 @@ Carrier — это WebRTC сервис видеозвонков, через ко ### WB Stream (`wbstream`) - Сервис трансляций от Wildberries: `stream.wb.ru` -- **Рекомендуется** — самый стабильный +- **Рекомендуется** - самый стабильный - Минимальная прослойка, почти прямой relay - Работает со всеми транспортами: datachannel, vp8channel, seichannel, videochannel - Поддерживает автогенерацию Room ID (`-mode gen`) @@ -399,7 +399,7 @@ Carrier — это WebRTC сервис видеозвонков, через ко --- -## 7. Transports — транспорты +## 7. Transports - транспорты Transport определяет как именно данные упаковываются в WebRTC поток. @@ -409,12 +409,12 @@ Transport определяет как именно данные упаковыв - Лимит payload: 12KB на сообщение (ограничение SFU) - Надёжный, упорядоченный (SCTP гарантирует) -- Работает с jazz (нежелательно — банят) и wbstream +- Работает с jazz (нежелательно - банят) и wbstream - **Лучшая комбинация: `wbstream + datachannel`** ### vp8channel -Данные упаковываются в VP8 видеофреймы. Поверх этого строится KCP — надёжный протокол с повторной передачей, работающий поверх ненадёжного канала. +Данные упаковываются в VP8 видеофреймы. Поверх этого строится KCP - надёжный протокол с повторной передачей, работающий поверх ненадёжного канала. - Работает везде где есть VideoTrack (jazz, telemost, wbstream) - Большой пинг из-за батчинга фреймов @@ -423,7 +423,7 @@ Transport определяет как именно данные упаковыв ### seichannel -Данные передаются в SEI (Supplemental Enhancement Information) NAL-юнитах H264 видеопотока. SEI — стандартный механизм для метаданных в H264. +Данные передаются в SEI (Supplemental Enhancement Information) NAL-юнитах H264 видеопотока. SEI - стандартный механизм для метаданных в H264. - Собственный бинарный протокол: magic `OVC1` (0x4f564331), версия, тип Data/Ack, CRC32, sequence numbers - UUID для SEI payload: `5dc03ba8-450f-4b55-9a77-1f916c5b0739` @@ -435,9 +435,9 @@ Transport определяет как именно данные упаковыв Данные визуально кодируются в видеофреймы через ffmpeg. Два визуальных кодека: -**qrcode** — данные кодируются в QR-код, QR рендерится в VP8 кадр. На приёмнике VP8 декодируется и QR сканируется. Использует библиотеку `gr/qr` (субмодуль). Настройки: разрешение, ECC уровень (`low`/`medium`/`high`/`highest`), размер фрагмента. +**qrcode** - данные кодируются в QR-код, QR рендерится в VP8 кадр. На приёмнике VP8 декодируется и QR сканируется. Использует библиотеку `gr/qr` (субмодуль). Настройки: разрешение, ECC уровень (`low`/`medium`/`high`/`highest`), размер фрагмента. -**tile** — тайловый кодек, только 1080x1080. Пиксели кодируют биты напрямую. Reed-Solomon коррекция ошибок. Параметры: размер тайла в пикселях (1..270), процент избыточности (0..200). Быстрее QR но нестабильнее. +**tile** - тайловый кодек, только 1080x1080. Пиксели кодируют биты напрямую. Reed-Solomon коррекция ошибок. Параметры: размер тайла в пикселях (1..270), процент избыточности (0..200). Быстрее QR но нестабильнее. Общее: ffmpeg как subprocess, поддержка NVENC, VP8 видеопоток. Самый медленный транспорт, но работает везде. @@ -451,9 +451,9 @@ Transport определяет как именно данные упаковыв - Генерация: `openssl rand -hex 32` - Каждое сообщение: случайный nonce (24 байта) prepend к ciphertext + AEAD тег - Ключ должен совпадать на сервере и клиенте -- Шифрование происходит в `muxconn` — до передачи в transport/carrier +- Шифрование происходит в `muxconn` - до передачи в transport/carrier -WebRTC сам по себе шифрует трафик через DTLS-SRTP, но olcRTC добавляет поверх свой слой — провайдер видит только зашифрованный blob. +WebRTC сам по себе шифрует трафик через DTLS-SRTP, но olcRTC добавляет поверх свой слой - провайдер видит только зашифрованный blob. --- @@ -461,7 +461,7 @@ WebRTC сам по себе шифрует трафик через DTLS-SRTP, н Через один WebRTC DataChannel / VideoTrack одновременно могут идти сотни TCP соединений браузера. -Реализация через **smux** (`github.com/xtaci/smux`) — библиотека мультиплексирования потоков, аналог HTTP/2 multiplexing. +Реализация через **smux** (`github.com/xtaci/smux`) - библиотека мультиплексирования потоков, аналог HTTP/2 multiplexing. До мая 2026 был самописный мультиплексор с sequence numbering и ручным out-of-order handling. Заменён на smux поверх KCP для vp8channel, и smux напрямую для datachannel. @@ -476,7 +476,7 @@ WebRTC сам по себе шифрует трафик через DTLS-SRTP, н **Поддерживается:** - SOCKS5 (RFC 1928) с командой CONNECT - Аутентификация username/password (RFC 1929) через `-socks-user`/`-socks-pass` -- SOCKS5h (hostname resolution на стороне сервера) — DNS запросы идут через туннель +- SOCKS5h (hostname resolution на стороне сервера) - DNS запросы идут через туннель - Без аутентификации (по умолчанию) **Адрес по умолчанию:** `127.0.0.1:8808` @@ -494,42 +494,42 @@ export all_proxy=socks5h://user:pass@127.0.0.1:8808 # с авторизацие ## 11. Mobile / Android -`mobile/mobile.go` — gomobile-совместимый API. +`mobile/mobile.go` - gomobile-совместимый API. Собирается в `olcrtc.aar` через `mage mobile` (`gomobile bind`). Community Android клиент: [alananisimov/olcbox](https://github.com/alananisimov/olcbox) **API:** -- `Start(carrier, roomID, clientID, keyHex string)` — запустить туннель -- `Stop()` — остановить +- `Start(carrier, roomID, clientID, keyHex string)` - запустить туннель +- `Stop()` - остановить - `IsRunning() bool` -- `SetProtector(p SocketProtector)` — Android VPN bypass (VpnService.protect) -- `SetLogWriter(w LogWriter)` — получать логи в Kotlin/Java +- `SetProtector(p SocketProtector)` - Android VPN bypass (VpnService.protect) +- `SetLogWriter(w LogWriter)` - получать логи в Kotlin/Java -По умолчанию использует `vp8channel` транспорт (наиболее совместимый). Если carrier — wbstream или jazz и DataChannel доступен — переключается на `datachannel`. +По умолчанию использует `vp8channel` транспорт (наиболее совместимый). Если carrier - wbstream или jazz и DataChannel доступен - переключается на `datachannel`. -`protect.go` — механизм Android VPN protect: перед каждым `connect()` вызывается Kotlin-коллбэк который вызывает `VpnService.protect(fd)`. Без этого трафик olcRTC может рекурсивно идти через тот же VPN. +`protect.go` - механизм Android VPN protect: перед каждым `connect()` вызывается Kotlin-коллбэк который вызывает `VpnService.protect(fd)`. Без этого трафик olcRTC может рекурсивно идти через тот же VPN. --- ## 12. Python PoC скрипты -Исторический слой — с этого всё начиналось. Используются для исследования API провайдеров и проверки гипотез. +Исторический слой - с этого всё начиналось. Используются для исследования API провайдеров и проверки гипотез. **Telemost:** -- `telemost_poc_datachannel.py` — первый рабочий туннель, обнаружен лимит 8KB DataChannel (молча дропает больше) -- `telemost_poc_videochannel.py` — QR в видео, `vcsend.py` — передача файлов -- `telemost_info.py` — полный дамп SDP, ICE серверов, участников +- `telemost_poc_datachannel.py` - первый рабочий туннель, обнаружен лимит 8KB DataChannel (молча дропает больше) +- `telemost_poc_videochannel.py` - QR в видео, `vcsend.py` - передача файлов +- `telemost_info.py` - полный дамп SDP, ICE серверов, участников **Jazz:** -- `jazz_poc_datachannel.py` — DataChannel через Jazz SFU -- `jazz_info.py` — информация о конференции +- `jazz_poc_datachannel.py` - DataChannel через Jazz SFU +- `jazz_info.py` - информация о конференции **WB Stream:** -- `wbstream_poc_datachannel.py` — DataChannel -- `wbstream_poc_videochannel.py` — видеоканал -- `wbstream_info.py` — информация +- `wbstream_poc_datachannel.py` - DataChannel +- `wbstream_poc_videochannel.py` - видеоканал +- `wbstream_info.py` - информация Для запуска: `pip install -r code/requirements.txt` @@ -608,13 +608,13 @@ docker run -e OLCRTC_CARRIER=wbstream \ --- -## 14. CLI — все флаги +## 14. CLI - все флаги ### Обязательные (для всех режимов) | Флаг | Описание | |---|---| -| `-mode` | `srv` — сервер, `cnc` — клиент, `gen` — генерация Room ID | +| `-mode` | `srv` - сервер, `cnc` - клиент, `gen` - генерация Room ID | | `-carrier` | `telemost`, `jazz`, `wbstream` | | `-transport` | `datachannel`, `vp8channel`, `seichannel`, `videochannel` | | `-id` | Room ID | @@ -636,8 +636,8 @@ docker run -e OLCRTC_CARRIER=wbstream \ |---|---|---| | `-socks-host` | `127.0.0.1` | Адрес SOCKS5 | | `-socks-port` | `1080` | Порт SOCKS5 | -| `-socks-user` | — | Логин (опционально) | -| `-socks-pass` | — | Пароль (опционально) | +| `-socks-user` | - | Логин (опционально) | +| `-socks-pass` | - | Пароль (опционально) | ### Только для сервера (`-mode srv`) @@ -689,13 +689,13 @@ docker run -e OLCRTC_CARRIER=wbstream \ ### URI формат -Соглашение для клиентских приложений. Сам `olcrtc` не парсит — используется в сторонних клиентах. +Соглашение для клиентских приложений. Сам `olcrtc` не парсит - используется в сторонних клиентах. ``` olcrtc://?@#%$ ``` -Где `` — опциональный блок `` с параметрами транспорта. +Где `` - опциональный блок `` с параметрами транспорта. **Примеры:** ``` @@ -728,16 +728,16 @@ olcrtc://wbstream?datachannel@room-01#key%client-id$RU / free | Transport | telemost | jazz | wbstream | |---|:---:|:---:|:---:| -| datachannel | — | `*` | `+` | +| datachannel | - | `*` | `+` | | vp8channel | `+` | `+` | `+` | -| seichannel | — | `+` | `+` | +| seichannel | - | `+` | `+` | | videochannel | `+` | `+` | `+` | - `+` работает -- `—` не поддерживается +- `-` не поддерживается - `*` работает, но jazz банит IP за паттерны datachannel трафика -**Рекомендуется:** `wbstream + datachannel` — максимальная скорость, минимальный пинг, без бана. +**Рекомендуется:** `wbstream + datachannel` - максимальная скорость, минимальный пинг, без бана. **Скорость по убыванию:** `datachannel` > `vp8channel` > `seichannel` > `videochannel` @@ -745,7 +745,7 @@ olcrtc://wbstream?datachannel@room-01#key%client-id$RU / free ## 17. CI/CD -`.github/workflows/ci.yml` — GitHub Actions, запускается на каждый push/PR в master. +`.github/workflows/ci.yml` - GitHub Actions, запускается на каждый push/PR в master. | Job | Что делает | |---|---| @@ -753,27 +753,27 @@ olcrtc://wbstream?datachannel@room-01#key%client-id$RU / free | `coverage` | `go test --cover ./...` | | `real-e2e` | E2E матрица всех carrier×transport на реальных провайдерах (25 мин таймаут) | | `lint` | golangci-lint | -| `build-cli` | `mage cross` — кросс-компиляция для 9 платформ, артефакты в Actions | -| `build-android` | `mage mobile` — Android AAR, артефакт в Actions | +| `build-cli` | `mage cross` - кросс-компиляция для 9 платформ, артефакты в Actions | +| `build-android` | `mage mobile` - Android AAR, артефакт в Actions | Go версия в CI: 1.25.x --- -## 18. Что планируется сделать — Issues +## 18. Что планируется сделать - Issues ### Открытые -**Issue #22 — реализовать поддержку stream.wb.ru** `enhancement` +**Issue #22 - реализовать поддержку stream.wb.ru** `enhancement` -WB Stream — текущий приоритет. Основа уже реализована, остаётся: +WB Stream - текущий приоритет. Основа уже реализована, остаётся: - [ ] Симуляция XHR телеметрии (маскировка под легитимный клиент) - [ ] Симуляция задержек и обрезание до размера реальных сообщений - [ ] Система завершения звонка - [ ] Авто перезапуск звонка если идёт слишком долго - [ ] Юзать TLS стек Chrome как naiveproxy -**Issue #2 — реализовать поддержку telemost.yandex.ru** `enhancement` +**Issue #2 - реализовать поддержку telemost.yandex.ru** `enhancement` - [ ] Симуляция XHR телеметрии - [ ] Симуляция задержек @@ -782,7 +782,7 @@ WB Stream — текущий приоритет. Основа уже реали - [ ] Авто перезапуск звонка - [ ] TLS стек Chrome -**Issue #1 — реализовать поддержку salutejazz.ru** `enhancement` +**Issue #1 - реализовать поддержку salutejazz.ru** `enhancement` - [ ] Симуляция XHR телеметрии - [ ] Симуляция задержек @@ -794,17 +794,17 @@ WB Stream — текущий приоритет. Основа уже реали | Issue | Что было | |---|---| -| #44 | Very high ping — исправлен throughput bug vp8channel | -| #40 | Подключение нескольких устройств — реализовано через client-id | +| #44 | Very high ping - исправлен throughput bug vp8channel | +| #40 | Подключение нескольких устройств - реализовано через client-id | | #39 | Oracle VPS поддержка | -| #38 | Стандартный URI формат — реализован | -| #37 | Jitsi Meet — не планируется | -| #33 | iOS клиент — в планах | -| #27 | Инструкция — написана | -| #26 | SIP003 transport — не планируется | +| #38 | Стандартный URI формат - реализован | +| #37 | Jitsi Meet - не планируется | +| #33 | iOS клиент - в планах | +| #27 | Инструкция - написана | +| #26 | SIP003 transport - не планируется | | #25 | TLS/DTLS фингерпринтинг | -| #9 | Нормальный мультиплексор — реализован (smux) | -| #3 | macOS/Linux/Android/Windows поддержка — реализована | +| #9 | Нормальный мультиплексор - реализован (smux) | +| #3 | macOS/Linux/Android/Windows поддержка - реализована | --- @@ -822,7 +822,7 @@ WB Stream — текущий приоритет. Основа уже реали | **HLNikNiky** / Sesdear | 2 | URI добавление, фиксы | | **Denis Suchok** / DeNcHiK3713 | 1 | Windows Podman скрипты | | **0xcodepunk** | 1 | SaluteJazz PoC DataChannel (issue #10) | -| **scalebb2** | 1 | — | +| **scalebb2** | 1 | - | --- @@ -849,7 +849,7 @@ dial tcp: lookup stream.wb.ru: i/o timeout **Решение:** указать другой DNS сервер в скрипте. Вместо дефолтного `1.1.1.1` попробовать `8.8.8.8` или `77.88.8.8`: ```sh -# при запуске cnc.sh — в поле DNS ввести: +# при запуске cnc.sh - в поле DNS ввести: 8.8.8.8:53 # или 77.88.8.8:53 @@ -869,7 +869,7 @@ SOCKS5 server listening on 0.0.0.0:8808 ## Контакты -- Telegram канал: [@openlibrecommunity](https://t.me/openlibrecommunity) — бесплатный прокси в закрепе, обновления, анонсы +- Telegram канал: [@openlibrecommunity](https://t.me/openlibrecommunity) - бесплатный прокси в закрепе, обновления, анонсы - Telegram автора: [@zarazaexe](https://t.me/zarazaexe) - Email: [zarazaex@tuta.io](mailto:zarazaex@tuta.io) - GitHub: [openlibrecommunity](https://github.com/openlibrecommunity)