From d872f3c900656e770c76842a2acc084464b4d566 Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Mon, 18 May 2026 22:30:51 +0300 Subject: [PATCH] docs: replace jitsi.etudevs.ru with meet.cryptopro.ru --- docs/client.example.yaml | 2 +- docs/fast.md | 4 ++-- docs/manual.md | 6 +++--- docs/server.example.yaml | 2 +- docs/settings.md | 6 +++--- docs/uri.md | 4 ++-- internal/auth/jitsi/jitsi.go | 2 +- internal/auth/jitsi/jitsi_test.go | 8 ++++---- internal/e2e/tunnel_test.go | 22 +++++++++++----------- internal/engine/jitsi/jitsi.go | 2 +- pkg/olcrtc/olcrtc.go | 2 +- pkg/olcrtc/tunnel/tunnel.go | 2 +- script/cnc.sh | 4 ++-- script/srv.sh | 4 ++-- 14 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/client.example.yaml b/docs/client.example.yaml index 532c1d8..c29fae5 100644 --- a/docs/client.example.yaml +++ b/docs/client.example.yaml @@ -11,7 +11,7 @@ auth: # For jitsi: full conference URL (https://host/room or host/room). # Must match the server. room: - id: "https://jitsi.etudevs.ru/REPLACE_WITH_ROOM_NAME" + id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME" crypto: # Or use key_file: "./olcrtc.key" to keep the secret out of this file. diff --git a/docs/fast.md b/docs/fast.md index 2ebb34f..5b78626 100644 --- a/docs/fast.md +++ b/docs/fast.md @@ -103,7 +103,7 @@ Enter choice [1-4, default: 1]: Выбери сервис. Полную матрицу совместимости смотри в [settings.md](settings.md). -**По умолчанию `jitsi`** — стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `jitsi.etudevs.ru`). +**По умолчанию `jitsi`** — стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet.cryptopro.ru`). ### Transport (как именно передавать данные) @@ -130,7 +130,7 @@ Enter choice [1-4, default: 1]: Enter Room ID: ``` -Для **jitsi** — полный URL комнаты в формате `https://host/room` (например `https://jitsi.etudevs.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet. +Для **jitsi** — полный URL комнаты в формате `https://host/room` (например `https://meet.cryptopro.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet. Для **telemost** и **wbstream** - создай руму через сайт ([телемост](https://telemost.yandex.ru/), [wbstream](https://stream.wb.ru)) и вставь её ID. diff --git a/docs/manual.md b/docs/manual.md index d6be5a1..d623d86 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -147,7 +147,7 @@ openssl rand -hex 32 ### jitsi + datachannel (рекомендуется) -Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже — `jitsi.etudevs.ru`, но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.). +Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже — `meet.cryptopro.ru` (публичный CryptoPro Jitsi), но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.). Создай YAML конфиг: @@ -158,7 +158,7 @@ link: direct auth: provider: jitsi room: - id: "https://jitsi.etudevs.ru/myroom" + id: "https://meet.cryptopro.ru/myroom" crypto: key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799" net: @@ -234,7 +234,7 @@ link: direct auth: provider: jitsi room: - id: "https://jitsi.etudevs.ru/myroom" + id: "https://meet.cryptopro.ru/myroom" crypto: key: "" net: diff --git a/docs/server.example.yaml b/docs/server.example.yaml index 8428321..112ce42 100644 --- a/docs/server.example.yaml +++ b/docs/server.example.yaml @@ -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://jitsi.etudevs.ru/REPLACE_WITH_ROOM_NAME" + id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME" crypto: # 32-byte hex (64 chars). Generate with: openssl rand -hex 32 diff --git a/docs/settings.md b/docs/settings.md index ded5e2b..b3bf159 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -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://jitsi.etudevs.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.cryptopro.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 инстансах (например `jitsi.etudevs.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.cryptopro.ru`) периодически режет/откладывает upstream видео когда ресивера в комнате формально нет — для нас это выглядит как `seichannel ack timeout` при формально живом PeerConnection. В steady-state транспорт работает, но e2e матрица помечает его `Unstable` (флаппит): зелёного и красного результата в CI достаточно, тест suite на этом не валится. Для надёжной передачи данных через jitsi предпочтительнее `datachannel` или `vp8channel`. -**Рекомендуемая комбинация: `jitsi + datachannel`** — стабильно работает на любом self-hosted или публичном Jitsi Meet (например `jitsi.etudevs.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` — стабильно для коммерческих сценариев, не требует специальных прав. +**Рекомендуемая комбинация: `jitsi + datachannel`** — стабильно работает на любом self-hosted или публичном Jitsi Meet (например `meet.cryptopro.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` — стабильно для коммерческих сценариев, не требует специальных прав. Скорость по убыванию: `datachannel` > `vp8channel` > `seichannel` > `videochannel` diff --git a/docs/uri.md b/docs/uri.md index cf3d353..03fd2cb 100644 --- a/docs/uri.md +++ b/docs/uri.md @@ -223,7 +223,7 @@ data: data ### jitsi + datachannel ```text -olcrtc://jitsi?datachannel@https://jitsi.etudevs.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub +olcrtc://jitsi?datachannel@https://meet.cryptopro.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub ``` `` для 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://jitsi.etudevs.ru/myroom" + id: "https://meet.cryptopro.ru/myroom" crypto: key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799" net: diff --git a/internal/auth/jitsi/jitsi.go b/internal/auth/jitsi/jitsi.go index 9dd40e3..9af38e1 100644 --- a/internal/auth/jitsi/jitsi.go +++ b/internal/auth/jitsi/jitsi.go @@ -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://jitsi.etudevs.ru" +const defaultServiceURL = "https://meet.cryptopro.ru" // DefaultServiceURL returns the default Jitsi Meet service URL used by config // defaults and interactive helpers. diff --git a/internal/auth/jitsi/jitsi_test.go b/internal/auth/jitsi/jitsi_test.go index ad415f3..afac89f 100644 --- a/internal/auth/jitsi/jitsi_test.go +++ b/internal/auth/jitsi/jitsi_test.go @@ -21,7 +21,7 @@ func TestParseRoomURL(t *testing.T) { room string wantErr bool }{ - {name: "https url", raw: "https://jitsi.etudevs.ru/" + testRoom, host: "jitsi.etudevs.ru", room: testRoom}, + {name: "https url", raw: "https://meet.cryptopro.ru/" + testRoom, host: "meet.cryptopro.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://jitsi.etudevs.ru/olcrtc", + RoomURL: "https://meet.cryptopro.ru/olcrtc", Name: "olcrtc-test", }) if err != nil { t.Fatalf("Issue: %v", err) } - if creds.URL != "jitsi.etudevs.ru" { - t.Fatalf("URL = %q, want %q", creds.URL, "jitsi.etudevs.ru") + if creds.URL != "meet.cryptopro.ru" { + t.Fatalf("URL = %q, want %q", creds.URL, "meet.cryptopro.ru") } if got := creds.Extra[CredentialKeyRoom]; got != "olcrtc" { t.Fatalf("room = %q, want %q", got, "olcrtc") diff --git a/internal/e2e/tunnel_test.go b/internal/e2e/tunnel_test.go index 67db156..f0fd274 100644 --- a/internal/e2e/tunnel_test.go +++ b/internal/e2e/tunnel_test.go @@ -21,11 +21,11 @@ import ( "github.com/openlibrecommunity/olcrtc/internal/app/session" "github.com/openlibrecommunity/olcrtc/internal/auth" - "github.com/openlibrecommunity/olcrtc/internal/engine" - enginebuiltin "github.com/openlibrecommunity/olcrtc/internal/engine/builtin" authSaluteJazz "github.com/openlibrecommunity/olcrtc/internal/auth/salutejazz" authWBStream "github.com/openlibrecommunity/olcrtc/internal/auth/wbstream" "github.com/openlibrecommunity/olcrtc/internal/client" + "github.com/openlibrecommunity/olcrtc/internal/engine" + enginebuiltin "github.com/openlibrecommunity/olcrtc/internal/engine/builtin" "github.com/openlibrecommunity/olcrtc/internal/server" "github.com/openlibrecommunity/olcrtc/internal/supervisor" "github.com/openlibrecommunity/olcrtc/internal/transport" @@ -45,7 +45,7 @@ const ( localDNSServer = "127.0.0.1:53" videoHWNone = "none" testClientDeviceID = "client-1" - defaultJitsiRoomURL = "https://jitsi.etudevs.ru/deadbeef" + defaultJitsiRoomURL = "https://meet.cryptopro.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. jitsi.etudevs.ru) + // for self-hosted Jitsi instances (e.g. meet.cryptopro.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 jitsi.etudevs.ru's bandwidth allocator) +// (e.g. seichannel against meet.cryptopro.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 jitsi.etudevs.ru - // by default. 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.cryptopro.ru + // (a CryptoPro-operated public Jitsi instance). 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 @@ -598,8 +598,8 @@ func realRoomURL(ctx context.Context, t *testing.T, carrierName string) string { } var ( - jitsiRoomOnce sync.Once //nolint:gochecknoglobals // per-process suffix cache - jitsiRoomURL string //nolint:gochecknoglobals // per-process suffix cache + jitsiRoomOnce sync.Once //nolint:gochecknoglobals // per-process suffix cache + jitsiRoomURL string //nolint:gochecknoglobals // per-process suffix cache ) // defaultJitsiRoomWithSuffix returns the default Jitsi room URL with a random @@ -631,7 +631,7 @@ func requireRealRoom(ctx context.Context, t *testing.T, carrierName string) stri func validSessionConfig(mode, carrierName, transportName string) session.Config { return session.Config{ - Mode: mode, + Mode: mode, Transport: transportName, Auth: carrierName, RoomID: testRoom, diff --git a/internal/engine/jitsi/jitsi.go b/internal/engine/jitsi/jitsi.go index 7204f86..3baad4d 100644 --- a/internal/engine/jitsi/jitsi.go +++ b/internal/engine/jitsi/jitsi.go @@ -138,7 +138,7 @@ type bridgeOutbound struct { // New creates a new Jitsi engine session. // -// cfg.URL carries the Jitsi host (e.g. "jitsi.etudevs.ru") — populated by the +// cfg.URL carries the Jitsi host (e.g. "meet.cryptopro.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) { diff --git a/pkg/olcrtc/olcrtc.go b/pkg/olcrtc/olcrtc.go index eaaf8de..dee25dc 100644 --- a/pkg/olcrtc/olcrtc.go +++ b/pkg/olcrtc/olcrtc.go @@ -15,7 +15,7 @@ // // sess, err := olcrtc.New(ctx, olcrtc.Config{ // Auth: "jitsi", -// RoomID: "https://jitsi.etudevs.ru/myroom", +// RoomID: "https://meet.cryptopro.ru/myroom", // }) // // Import the implementations you need via blank imports, or call [RegisterDefaults]: diff --git a/pkg/olcrtc/tunnel/tunnel.go b/pkg/olcrtc/tunnel/tunnel.go index 05eea5f..3db8d3a 100644 --- a/pkg/olcrtc/tunnel/tunnel.go +++ b/pkg/olcrtc/tunnel/tunnel.go @@ -7,7 +7,7 @@ // srv := tunnel.New(tunnel.Config{ // Transport: "datachannel", // Carrier: "jitsi", -// RoomURL: "https://jitsi.etudevs.ru/myroom", +// RoomURL: "https://meet.cryptopro.ru/myroom", // KeyHex: "<64-char hex>", // DNSServer: "1.1.1.1:53", // AuthHook: func(deviceID string, claims map[string]any) (string, error) { diff --git a/script/cnc.sh b/script/cnc.sh index 170650e..4f4822d 100755 --- a/script/cnc.sh +++ b/script/cnc.sh @@ -133,8 +133,8 @@ echo "[*] Using transport: $TRANSPORT" echo "" if [ "$AUTH" = "jitsi" ]; then - read -p "Jitsi base URL [default: https://jitsi.etudevs.ru/]: " JITSI_BASE_INPUT - JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://jitsi.etudevs.ru/} + read -p "Jitsi base URL [default: https://meet.cryptopro.ru/]: " JITSI_BASE_INPUT + JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.cryptopro.ru/} JITSI_BASE_URL="${JITSI_BASE_URL%/}" read -p "Enter Jitsi room name or URL: " JITSI_ROOM_INPUT diff --git a/script/srv.sh b/script/srv.sh index 2a42d8f..d23a43a 100755 --- a/script/srv.sh +++ b/script/srv.sh @@ -151,8 +151,8 @@ if [ "$CARRIER" = "jazz" ]; then ;; esac elif [ "$CARRIER" = "jitsi" ]; then - read -p "Jitsi base URL [default: https://jitsi.etudevs.ru/]: " JITSI_BASE_INPUT - JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://jitsi.etudevs.ru/} + read -p "Jitsi base URL [default: https://meet.cryptopro.ru/]: " JITSI_BASE_INPUT + JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet.cryptopro.ru/} JITSI_BASE_URL="${JITSI_BASE_URL%/}" echo "Room options:"