mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-05-26 07:08:11 +00:00
docs: replace meet.cryptopro.ru with meet.small-dm.ru as default
This commit is contained in:
@@ -11,7 +11,7 @@ auth:
|
||||
# For jitsi: full conference URL (https://host/room or host/room).
|
||||
# Must match the server.
|
||||
room:
|
||||
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
|
||||
id: "https://meet.small-dm.ru/REPLACE_WITH_ROOM_NAME"
|
||||
|
||||
crypto:
|
||||
# Or use key_file: "./olcrtc.key" to keep the secret out of this file.
|
||||
|
||||
@@ -103,7 +103,7 @@ Enter choice [1-4, default: 1]:
|
||||
|
||||
Выбери сервис. Полную матрицу совместимости смотри в [settings.md](settings.md).
|
||||
|
||||
**По умолчанию `jitsi`** — стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet.cryptopro.ru`).
|
||||
**По умолчанию `jitsi`** — стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet.small-dm.ru`).
|
||||
|
||||
### Transport (как именно передавать данные)
|
||||
|
||||
@@ -130,7 +130,7 @@ Enter choice [1-4, default: 1]:
|
||||
Enter Room ID:
|
||||
```
|
||||
|
||||
Для **jitsi** — полный URL комнаты в формате `https://host/room` (например `https://meet.cryptopro.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet.
|
||||
Для **jitsi** — полный URL комнаты в формате `https://host/room` (например `https://meet.small-dm.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet.
|
||||
|
||||
Для **telemost** и **wbstream** - создай руму через сайт ([телемост](https://telemost.yandex.ru/), [wbstream](https://stream.wb.ru)) и вставь её ID.
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ openssl rand -hex 32
|
||||
|
||||
### jitsi + datachannel (рекомендуется)
|
||||
|
||||
Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже — `meet.cryptopro.ru` (публичный CryptoPro Jitsi), но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.).
|
||||
Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже — `meet.small-dm.ru`, но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.).
|
||||
|
||||
Создай YAML конфиг:
|
||||
|
||||
@@ -158,7 +158,7 @@ link: direct
|
||||
auth:
|
||||
provider: jitsi
|
||||
room:
|
||||
id: "https://meet.cryptopro.ru/myroom"
|
||||
id: "https://meet.small-dm.ru/myroom"
|
||||
crypto:
|
||||
key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799"
|
||||
net:
|
||||
@@ -234,7 +234,7 @@ link: direct
|
||||
auth:
|
||||
provider: jitsi
|
||||
room:
|
||||
id: "https://meet.cryptopro.ru/myroom"
|
||||
id: "https://meet.small-dm.ru/myroom"
|
||||
crypto:
|
||||
key: "<hex-key-такой-же-как-на-сервере>"
|
||||
net:
|
||||
|
||||
@@ -12,7 +12,7 @@ auth:
|
||||
# For jitsi: full conference URL (https://host/room or host/room).
|
||||
# For telemost / wbstream / jazz: room ID returned by the service.
|
||||
room:
|
||||
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
|
||||
id: "https://meet.small-dm.ru/REPLACE_WITH_ROOM_NAME"
|
||||
|
||||
crypto:
|
||||
# 32-byte hex (64 chars). Generate with: openssl rand -hex 32
|
||||
|
||||
@@ -30,11 +30,11 @@
|
||||
|
||||
**WBStream:** все транспорты кроме datachannel работают. DataChannel в обычном guest flow без выдавания модератора не работает — WB Stream выдаёт токены с `canPublishData=false`, и DC не маршрутизирует данные.
|
||||
|
||||
**Jitsi:** datachannel стабильно проходит — реализован поверх colibri-ws bridge channel и шлёт байты через `EndpointMessage{raw}` broadcast. Подходит для self-hosted и публичных Jitsi Meet инстансов без аутентификации (`https://meet.cryptopro.ru/...`, `https://meet.jit.si/...` и т.п.). Видео-транспорты (vp8channel, seichannel, videochannel) экспонируют sendable VideoTrack через pion PeerConnection после Jingle session-accept, но Jicofo требует дополнительных протокольных шагов (LastN, ReceiverVideoConstraints, source-add) для маршрутизации видео — поэтому они помечены `~` (best effort).
|
||||
**Jitsi:** datachannel стабильно проходит — реализован поверх colibri-ws bridge channel и шлёт байты через `EndpointMessage{raw}` broadcast. Подходит для self-hosted и публичных Jitsi Meet инстансов без аутентификации (`https://meet.small-dm.ru/...`, `https://meet.jit.si/...` и т.п.). Видео-транспорты (vp8channel, seichannel, videochannel) экспонируют sendable VideoTrack через pion PeerConnection после Jingle session-accept, но Jicofo требует дополнительных протокольных шагов (LastN, ReceiverVideoConstraints, source-add) для маршрутизации видео — поэтому они помечены `~` (best effort).
|
||||
|
||||
**Jitsi + seichannel — отдельная оговорка.** SEI NAL-юниты идут пассажиром в H.264 видеопотоке, а Jicofo на self-hosted инстансах (например `meet.cryptopro.ru`) периодически режет/откладывает upstream видео когда ресивера в комнате формально нет — для нас это выглядит как `seichannel ack timeout` при формально живом PeerConnection. В steady-state транспорт работает, но e2e матрица помечает его `Unstable` (флаппит): зелёного и красного результата в CI достаточно, тест suite на этом не валится. Для надёжной передачи данных через jitsi предпочтительнее `datachannel` или `vp8channel`.
|
||||
**Jitsi + seichannel — отдельная оговорка.** SEI NAL-юниты идут пассажиром в H.264 видеопотоке, а Jicofo на self-hosted инстансах (например `meet.small-dm.ru`) периодически режет/откладывает upstream видео когда ресивера в комнате формально нет — для нас это выглядит как `seichannel ack timeout` при формально живом PeerConnection. В steady-state транспорт работает, но e2e матрица помечает его `Unstable` (флаппит): зелёного и красного результата в CI достаточно, тест suite на этом не валится. Для надёжной передачи данных через jitsi предпочтительнее `datachannel` или `vp8channel`.
|
||||
|
||||
**Рекомендуемая комбинация: `jitsi + datachannel`** — стабильно работает на любом self-hosted или публичном Jitsi Meet (например `meet.cryptopro.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` — стабильно для коммерческих сценариев, не требует специальных прав.
|
||||
**Рекомендуемая комбинация: `jitsi + datachannel`** — стабильно работает на любом self-hosted или публичном Jitsi Meet (например `meet.small-dm.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` — стабильно для коммерческих сценариев, не требует специальных прав.
|
||||
|
||||
Скорость по убыванию: `datachannel` > `vp8channel` > `seichannel` > `videochannel`
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ data: data
|
||||
### jitsi + datachannel
|
||||
|
||||
```text
|
||||
olcrtc://jitsi?datachannel@https://meet.cryptopro.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub
|
||||
olcrtc://jitsi?datachannel@https://meet.small-dm.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub
|
||||
```
|
||||
|
||||
`<RoomID>` для jitsi — полный URL комнаты в формате `https://host/room` (или `host/room`). Поддерживается любой self-hosted Jitsi Meet инстанс без аутентификации; для публичных серверов вроде `meet.jit.si` тот же формат.
|
||||
@@ -236,7 +236,7 @@ link: direct
|
||||
auth:
|
||||
provider: jitsi
|
||||
room:
|
||||
id: "https://meet.cryptopro.ru/myroom"
|
||||
id: "https://meet.small-dm.ru/myroom"
|
||||
crypto:
|
||||
key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799"
|
||||
net:
|
||||
|
||||
@@ -41,7 +41,7 @@ type Provider struct{}
|
||||
// Engine reports which engine consumes credentials from this auth provider.
|
||||
func (Provider) Engine() string { return "jitsi" }
|
||||
|
||||
const defaultServiceURL = "https://meet.cryptopro.ru"
|
||||
const defaultServiceURL = "https://meet.small-dm.ru"
|
||||
|
||||
// DefaultServiceURL returns the default Jitsi Meet service URL used by config
|
||||
// defaults and interactive helpers.
|
||||
|
||||
@@ -21,7 +21,7 @@ func TestParseRoomURL(t *testing.T) {
|
||||
room string
|
||||
wantErr bool
|
||||
}{
|
||||
{name: "https url", raw: "https://meet.cryptopro.ru/" + testRoom, host: "meet.cryptopro.ru", room: testRoom},
|
||||
{name: "https url", raw: "https://meet.small-dm.ru/" + testRoom, host: "meet.small-dm.ru", room: testRoom},
|
||||
{name: "http url", raw: "http://" + testHost + "/" + testRoom, host: testHost, room: testRoom},
|
||||
{name: "scheme-less", raw: "meet.example.com/" + testRoom, host: "meet.example.com", room: testRoom},
|
||||
{name: "trailing slash", raw: "https://" + testHost + "/" + testRoom + "/", host: testHost, room: testRoom},
|
||||
@@ -54,14 +54,14 @@ func TestParseRoomURL(t *testing.T) {
|
||||
|
||||
func TestProviderIssue(t *testing.T) {
|
||||
creds, err := Provider{}.Issue(context.Background(), auth.Config{
|
||||
RoomURL: "https://meet.cryptopro.ru/olcrtc",
|
||||
RoomURL: "https://meet.small-dm.ru/olcrtc",
|
||||
Name: "olcrtc-test",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("Issue: %v", err)
|
||||
}
|
||||
if creds.URL != "meet.cryptopro.ru" {
|
||||
t.Fatalf("URL = %q, want %q", creds.URL, "meet.cryptopro.ru")
|
||||
if creds.URL != "meet.small-dm.ru" {
|
||||
t.Fatalf("URL = %q, want %q", creds.URL, "meet.small-dm.ru")
|
||||
}
|
||||
if got := creds.Extra[CredentialKeyRoom]; got != "olcrtc" {
|
||||
t.Fatalf("room = %q, want %q", got, "olcrtc")
|
||||
|
||||
@@ -45,7 +45,7 @@ const (
|
||||
localDNSServer = "127.0.0.1:53"
|
||||
videoHWNone = "none"
|
||||
testClientDeviceID = "client-1"
|
||||
defaultJitsiRoomURL = "https://meet.cryptopro.ru/deadbeef"
|
||||
defaultJitsiRoomURL = "https://meet.small-dm.ru/deadbeef"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -405,7 +405,7 @@ func realE2ECaseExpectation(carrierName, transportName string) realE2EExpectatio
|
||||
//
|
||||
// seichannel is marked Unstable: SEI NAL data piggybacks on
|
||||
// the H.264 video stream, and Jicofo's bandwidth allocator
|
||||
// for self-hosted Jitsi instances (e.g. meet.cryptopro.ru)
|
||||
// for self-hosted Jitsi instances (e.g. meet.small-dm.ru)
|
||||
// periodically suppresses the video upstream when there's
|
||||
// no obvious viewer demand, which manifests as recurring
|
||||
// "seichannel ack timeout" against an otherwise healthy
|
||||
@@ -437,7 +437,7 @@ func realE2EExpectationLabel(expectation realE2EExpectation) string {
|
||||
// logUnstableOutcome records the result of an Unstable matrix entry
|
||||
// without failing the test. Unstable combos exist to keep the matrix
|
||||
// honest about transports that flap against a particular carrier
|
||||
// (e.g. seichannel against meet.cryptopro.ru's bandwidth allocator)
|
||||
// (e.g. seichannel against meet.small-dm.ru's bandwidth allocator)
|
||||
// while still surfacing whether the run happened to pass or fail.
|
||||
func logUnstableOutcome(t *testing.T, label, carrierName, transportName string, err error) {
|
||||
t.Helper()
|
||||
@@ -575,9 +575,9 @@ func realRoomURL(ctx context.Context, t *testing.T, carrierName string) string {
|
||||
return room
|
||||
case "jitsi":
|
||||
// Jitsi has no notion of "creating" a room — names are conjured
|
||||
// on first join. The default flag points at meet.cryptopro.ru
|
||||
// (a CryptoPro-operated public Jitsi instance). When the flag is
|
||||
// left at its default value, a per-process random suffix is appended
|
||||
// on first join. The default flag points at meet.small-dm.ru
|
||||
// by default. When the flag is left at its default value, a
|
||||
// per-process random suffix is appended
|
||||
// to the slug: two participants share a single room by design (one
|
||||
// pair, one shared key), so any third participant — including another
|
||||
// concurrent test process with the same shared key — would corrupt
|
||||
|
||||
@@ -138,7 +138,7 @@ type bridgeOutbound struct {
|
||||
|
||||
// New creates a new Jitsi engine session.
|
||||
//
|
||||
// cfg.URL carries the Jitsi host (e.g. "meet.cryptopro.ru") — populated by the
|
||||
// cfg.URL carries the Jitsi host (e.g. "meet.small-dm.ru") — populated by the
|
||||
// jitsi auth provider after parsing the user-supplied room URL. cfg.Extra
|
||||
// must contain the room name under the "room" key.
|
||||
func New(_ context.Context, cfg engine.Config) (engine.Session, error) {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//
|
||||
// sess, err := olcrtc.New(ctx, olcrtc.Config{
|
||||
// Auth: "jitsi",
|
||||
// RoomID: "https://meet.cryptopro.ru/myroom",
|
||||
// RoomID: "https://meet.small-dm.ru/myroom",
|
||||
// })
|
||||
//
|
||||
// Import the implementations you need via blank imports, or call [RegisterDefaults]:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
// srv := tunnel.New(tunnel.Config{
|
||||
// Transport: "datachannel",
|
||||
// Carrier: "jitsi",
|
||||
// RoomURL: "https://meet.cryptopro.ru/myroom",
|
||||
// RoomURL: "https://meet.small-dm.ru/myroom",
|
||||
// KeyHex: "<64-char hex>",
|
||||
// DNSServer: "1.1.1.1:53",
|
||||
// AuthHook: func(deviceID string, claims map[string]any) (string, error) {
|
||||
|
||||
@@ -133,8 +133,8 @@ echo "[*] Using transport: $TRANSPORT"
|
||||
echo ""
|
||||
|
||||
if [ "$AUTH" = "jitsi" ]; then
|
||||
read -p "Jitsi base URL [default: https://meet.cryptopro.ru/]: " JITSI_BASE_INPUT
|
||||
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.cryptopro.ru/}
|
||||
read -p "Jitsi base URL [default: https://meet.small-dm.ru/]: " JITSI_BASE_INPUT
|
||||
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.small-dm.ru/}
|
||||
JITSI_BASE_URL="${JITSI_BASE_URL%/}"
|
||||
|
||||
read -p "Enter Jitsi room name or URL: " JITSI_ROOM_INPUT
|
||||
|
||||
@@ -151,8 +151,8 @@ if [ "$CARRIER" = "jazz" ]; then
|
||||
;;
|
||||
esac
|
||||
elif [ "$CARRIER" = "jitsi" ]; then
|
||||
read -p "Jitsi base URL [default: https://meet.cryptopro.ru/]: " JITSI_BASE_INPUT
|
||||
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.cryptopro.ru/}
|
||||
read -p "Jitsi base URL [default: https://meet.small-dm.ru/]: " JITSI_BASE_INPUT
|
||||
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.small-dm.ru/}
|
||||
JITSI_BASE_URL="${JITSI_BASE_URL%/}"
|
||||
|
||||
echo "Room options:"
|
||||
|
||||
Reference in New Issue
Block a user