doc: fix typo

This commit is contained in:
zarazaex69
2026-05-10 14:48:30 +03:00
parent bd30832094
commit 9be377214b

View File

@@ -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://<Carrier>?<Transport><payload>@<RoomID>#<Key>%<ClientID>$<MIMO>
```
Где `<payload>` опциональный блок `<key=value&...>` с параметрами транспорта.
Где `<payload>` - опциональный блок `<key=value&...>` с параметрами транспорта.
**Примеры:**
```
@@ -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)