chore: replace default jitsi URL with meet1.arbitr.ru

This commit is contained in:
zarazaex69
2026-05-25 10:08:26 +03:00
parent bdb3d2ab5f
commit 12a28e6cbf
23 changed files with 42 additions and 42 deletions

View File

@@ -88,7 +88,7 @@ func TestRunWithConfigValidationAndDataDirErrors(t *testing.T) {
Mode: "srv",
Transport: "datachannel",
Auth: "jitsi",
RoomID: "https://meet.cryptopro.ru/test",
RoomID: "https://meet1.arbitr.ru/test",
KeyHex: "key",
DNSServer: "8.8.8.8:53",
}
@@ -135,7 +135,7 @@ link: direct
auth:
provider: jitsi
room:
id: https://meet.cryptopro.ru/test
id: https://meet1.arbitr.ru/test
crypto:
key: key
net:

View File

@@ -128,7 +128,7 @@ mode: srv
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/REPLACE_ME_WITH_ROOM_ID"
id: "https://meet1.arbitr.ru/REPLACE_ME_WITH_ROOM_ID"
crypto:
key: "REPLACE_ME_WITH_64_HEX_CHARS"
net:
@@ -144,7 +144,7 @@ mode: cnc
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/REPLACE_ME_WITH_ROOM_ID"
id: "https://meet1.arbitr.ru/REPLACE_ME_WITH_ROOM_ID"
crypto:
key: "REPLACE_ME_WITH_64_HEX_CHARS"
net:
@@ -208,7 +208,7 @@ Go версия в сборочных скриптах: `1.25`. Для `videocha
```go
sess, err := olcrtc.New(ctx, olcrtc.Config{
Auth: "jitsi",
RoomID: "https://meet.cryptopro.ru/myroom",
RoomID: "https://meet1.arbitr.ru/myroom",
})
if err != nil {
return err
@@ -222,7 +222,7 @@ conn, err := sess.Dial(ctx)
srv := tunnel.New(tunnel.Config{
Transport: "datachannel",
Carrier: "jitsi",
RoomURL: "https://meet.cryptopro.ru/myroom",
RoomURL: "https://meet1.arbitr.ru/myroom",
KeyHex: "<64-char hex>",
DNSServer: "8.8.8.8:53",
})

View File

@@ -91,7 +91,7 @@ mode: srv
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/REPLACE_ME_WITH_ROOM_ID"
id: "https://meet1.arbitr.ru/REPLACE_ME_WITH_ROOM_ID"
crypto:
key: "REPLACE_ME_WITH_64_HEX_CHARS"
net:
@@ -107,7 +107,7 @@ mode: cnc
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/REPLACE_ME_WITH_ROOM_ID"
id: "https://meet1.arbitr.ru/REPLACE_ME_WITH_ROOM_ID"
crypto:
key: "REPLACE_ME_WITH_64_HEX_CHARS"
net:

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с сервером.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# Можно использовать key_file: "./olcrtc.key", чтобы не хранить секрет прямо здесь.

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с сервером.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# Можно использовать key_file: "./olcrtc.key", чтобы не хранить секрет прямо здесь.

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с сервером.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# Можно использовать key_file: "./olcrtc.key", чтобы не хранить секрет прямо здесь.

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с сервером.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# Можно использовать key_file: "./olcrtc.key", чтобы не хранить секрет прямо здесь.

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с клиентом.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# 32 байта в hex (64 символа). Сгенерировать: openssl rand -hex 32

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с клиентом.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# 32 байта в hex (64 символа). Сгенерировать: openssl rand -hex 32

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с клиентом.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# 32 байта в hex (64 символа). Сгенерировать: openssl rand -hex 32

View File

@@ -9,7 +9,7 @@ auth:
# Для jitsi: полный URL комнаты (https://host/room или host/room).
# Должен совпадать с клиентом.
room:
id: "https://meet.cryptopro.ru/REPLACE_WITH_ROOM_NAME"
id: "https://meet1.arbitr.ru/REPLACE_WITH_ROOM_NAME"
crypto:
# 32 байта в hex (64 символа). Сгенерировать: openssl rand -hex 32

View File

@@ -100,7 +100,7 @@ cd olcrtc
Выбери сервис. Полную матрицу совместимости смотри в [settings.md](settings.md).
**По умолчанию `jitsi`** - стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet.cryptopro.ru`).
**По умолчанию `jitsi`** - стабильно работает на datachannel против self-hosted и публичных Jitsi инстансов (например `meet1.arbitr.ru`).
### Transport (как именно передавать данные)
@@ -127,7 +127,7 @@ cd olcrtc
Введите Room ID:
```
Для **jitsi** - полный URL комнаты в формате `https://host/room` (например `https://meet.cryptopro.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet.
Для **jitsi** - полный URL комнаты в формате `https://host/room` (например `https://meet1.arbitr.ru/myroom`). Имя комнаты придумывается на лету, без регистрации. Подойдёт любой публичный или self-hosted Jitsi Meet.
Для **telemost** и **wbstream** - создай руму через сайт ([telemost](https://telemost.yandex.ru/), [wbstream](https://stream.wb.ru)) и вставь её ID.

View File

@@ -155,7 +155,7 @@ openssl rand -hex 32
### jitsi + datachannel (рекомендуется)
Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже - `meet.cryptopro.ru`, но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.).
Самый простой способ: используй любой self-hosted или публичный Jitsi Meet инстанс. Регистрация не нужна, имя комнаты выдумывается на лету. По умолчанию в примерах ниже - `meet1.arbitr.ru`, но подойдёт любой другой (`meet.jit.si`, свой self-hosted и т.п.).
Создай YAML конфиг:
@@ -165,7 +165,7 @@ mode: srv
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/myroom"
id: "https://meet1.arbitr.ru/myroom"
crypto:
key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799"
net:
@@ -239,7 +239,7 @@ mode: cnc
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/myroom"
id: "https://meet1.arbitr.ru/myroom"
crypto:
key: "<hex-key-такой-же-как-на-сервере>"
net:

View File

@@ -28,11 +28,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) для маршрутизации видео - поэтому они помечены `~` .
**Jitsi:** datachannel стабильно проходит - реализован поверх colibri-ws bridge channel и шлёт байты через `EndpointMessage{raw}` broadcast. Подходит для self-hosted и публичных Jitsi Meet инстансов без аутентификации (`https://meet1.arbitr.ru/...`, `https://meet.jit.si/...` и т.п.). Видео-транспорты (vp8channel, seichannel, videochannel) экспонируют sendable VideoTrack через pion PeerConnection после Jingle session-accept, но Jicofo требует дополнительных протокольных шагов (LastN, ReceiverVideoConstraints, source-add) для маршрутизации видео - поэтому они помечены `~` .
**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 инстансах (например `meet1.arbitr.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 (например `meet1.arbitr.ru`), не требует регистрации, простая руму создания. Альтернатива: `wbstream + vp8channel` - стабильно для коммерческих сценариев, не требует специальных прав.
Скорость по убыванию: `datachannel` > `vp8channel` > `seichannel` > `videochannel`

View File

@@ -219,7 +219,7 @@ data: data
### jitsi + datachannel
```text
olcrtc://jitsi?datachannel@https://meet.cryptopro.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub
olcrtc://jitsi?datachannel@https://meet1.arbitr.ru/myroom#d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799$RU / olc free sub
```
`<RoomID>` для jitsi - полный URL комнаты в формате `https://host/room` (или `host/room`). Поддерживается любой self-hosted Jitsi Meet инстанс без аутентификации; для публичных серверов вроде `meet.jit.si` тот же формат.
@@ -231,7 +231,7 @@ mode: cnc
auth:
provider: jitsi
room:
id: "https://meet.cryptopro.ru/myroom"
id: "https://meet1.arbitr.ru/myroom"
crypto:
key: "d823fa01cb3e0609b67322f7cf984c4ee2e4ce2e294936fc24ef38c9e59f4799"
net:

View File

@@ -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://meet1.arbitr.ru"
// DefaultServiceURL returns the default Jitsi Meet service URL used by config
// defaults and interactive helpers.

View File

@@ -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://meet1.arbitr.ru/" + testRoom, host: "meet1.arbitr.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://meet1.arbitr.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 != "meet1.arbitr.ru" {
t.Fatalf("URL = %q, want %q", creds.URL, "meet1.arbitr.ru")
}
if got := creds.Extra[CredentialKeyRoom]; got != "olcrtc" {
t.Fatalf("room = %q, want %q", got, "olcrtc")

View File

@@ -43,7 +43,7 @@ const (
localDNSServer = "127.0.0.1:53"
videoHWNone = "none"
testClientDeviceID = "client-1"
defaultJitsiRoomURL = "https://meet.cryptopro.ru/deadbeef"
defaultJitsiRoomURL = "https://meet1.arbitr.ru/deadbeef"
)
var (
@@ -681,7 +681,7 @@ func realE2ECaseExpectation(carrierName, transportName string) realE2EExpectatio
//
// Jitsi video-path transports are marked Unstable. They depend on
// the external JVB ICE/media path and can flap on self-hosted
// instances (e.g. meet.cryptopro.ru): ICE may stay in checking or
// instances (e.g. meet1.arbitr.ru): ICE may stay in checking or
// the video upstream may be suppressed even though signaling and
// the colibri-ws bridge are healthy. Flag the outcome, but don't
// fail the suite when these paths flap.
@@ -711,7 +711,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 meet1.arbitr.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()
@@ -814,7 +814,7 @@ func realRoomURL(ctx context.Context, t *testing.T, carrierName string) string {
return ""
case "jitsi":
// Jitsi has no notion of "creating" a room - names are conjured
// on first join. The default flag points at meet.cryptopro.ru
// on first join. The default flag points at meet1.arbitr.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

View File

@@ -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. "meet1.arbitr.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) {

View File

@@ -15,7 +15,7 @@
//
// sess, err := olcrtc.New(ctx, olcrtc.Config{
// Auth: "jitsi",
// RoomID: "https://meet.cryptopro.ru/myroom",
// RoomID: "https://meet1.arbitr.ru/myroom",
// })
//
// Import the implementations you need via blank imports, or call [RegisterDefaults]:

View File

@@ -7,7 +7,7 @@
// srv := tunnel.New(tunnel.Config{
// Transport: "datachannel",
// Carrier: "jitsi",
// RoomURL: "https://meet.cryptopro.ru/myroom",
// RoomURL: "https://meet1.arbitr.ru/myroom",
// KeyHex: "<64-char hex>",
// DNSServer: "8.8.8.8:53",
// AuthHook: func(deviceID string, claims map[string]any) (string, error) {

View File

@@ -129,8 +129,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://meet1.arbitr.ru/]: " JITSI_BASE_INPUT
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet1.arbitr.ru/}
JITSI_BASE_URL="${JITSI_BASE_URL%/}"
read -p "Enter Jitsi room name or URL: " JITSI_ROOM_INPUT

View File

@@ -127,8 +127,8 @@ echo ""
GEN_ROOM=0
if [ "$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://meet1.arbitr.ru/]: " JITSI_BASE_INPUT
JITSI_BASE_URL=${JITSI_BASE_INPUT:-https://meet1.arbitr.ru/}
JITSI_BASE_URL="${JITSI_BASE_URL%/}"
echo "Room options:"