add enable-webrtc option; gate test_ipv6 under forced relay

OPTION_ENABLE_WEBRTC (hbb_common 48c2d4d) follows the udp/ipv6 punch
options end to end: default on against the public server, off against
private ones, same settings UI placement on desktop and mobile, and the
same bool2option local-option handling. Gates:

- controller: should_create_webrtc_offerer checks it first — no pc, no
  STUN/TURN gathering, no offer in the request;
- controlled: unlike the udp/ipv6 legs, which deliberately follow the
  request, answering builds a pc that gathers ICE from this host, so
  the answerer honors this machine's own switch too.

Translations for "Enable WebRTC P2P connection" added to all 50 lang
files next to the IPv6 entry (IPv6 and WebRTC are invariant terms in
the same grammatical slot in every one of them).

Also stop probing v6 reachability (test_ipv6) under any forced relay:
the v6 punch socket is never bound there, so the probe was wasted work
on every ws/proxy/relay connection.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ExUfAkYbq8UC9pQCiLy8TQ
This commit is contained in:
rustdesk
2026-08-07 13:45:53 +08:00
parent 578a95289f
commit 5618e984b6
57 changed files with 97 additions and 3 deletions

View File

@@ -1633,7 +1633,8 @@ String bool2option(String option, bool b) {
String res;
if (option.startsWith('enable-') &&
option != kOptionEnableUdpPunch &&
option != kOptionEnableIpv6Punch) {
option != kOptionEnableIpv6Punch &&
option != kOptionEnableWebrtc) {
res = b ? defaultOptionYes : 'N';
} else if (option.startsWith('allow-') ||
option == kOptionStopService ||

View File

@@ -176,6 +176,7 @@ const String kOptionEnableUdpPunch = "enable-udp-punch";
const String kOptionEnableIpv6Punch = "enable-ipv6-punch";
const String kOptionAllowSyncClipboardBetweenSessions =
"allow-sync-clipboard-between-sessions";
const String kOptionEnableWebrtc = "enable-webrtc";
const String kOptionEnableTrustedDevices = "enable-trusted-devices";
const String kOptionShowVirtualMouse = "show-virtual-mouse";
const String kOptionVirtualMouseScale = "virtual-mouse-scale";

View File

@@ -584,6 +584,12 @@ class _GeneralState extends State<_General> {
kOptionEnableIpv6Punch,
isServer: false,
),
_OptionCheckBox(
context,
'Enable WebRTC P2P connection',
kOptionEnableWebrtc,
isServer: false,
),
Tooltip(
message: translate('sync-clipboard-between-sessions-tip'),
child: _OptionCheckBox(

View File

@@ -101,6 +101,7 @@ class _SettingsState extends State<SettingsPage> with WidgetsBindingObserver {
var _allowInsecureTlsFallback = false;
var _disableUdp = false;
var _enableIpv6Punch = false;
var _enableWebrtc = false;
var _isUsingPublicServer = false;
var _allowAskForNoteAtEndOfConnection = false;
var _preventSleepWhileConnected = true;
@@ -143,6 +144,7 @@ class _SettingsState extends State<SettingsPage> with WidgetsBindingObserver {
_enableTrustedDevices = mainGetBoolOptionSync(kOptionEnableTrustedDevices);
_enableUdpPunch = mainGetLocalBoolOptionSync(kOptionEnableUdpPunch);
_enableIpv6Punch = mainGetLocalBoolOptionSync(kOptionEnableIpv6Punch);
_enableWebrtc = mainGetLocalBoolOptionSync(kOptionEnableWebrtc);
_allowAskForNoteAtEndOfConnection =
mainGetLocalBoolOptionSync(kOptionAllowAskForNoteAtEndOfConnection);
_preventSleepWhileConnected =
@@ -841,6 +843,18 @@ class _SettingsState extends State<SettingsPage> with WidgetsBindingObserver {
});
},
),
if (!incomingOnly)
SettingsTile.switchTile(
title: Text(translate('Enable WebRTC P2P connection')),
initialValue: _enableWebrtc,
onToggle: (v) async {
await mainSetLocalBoolOption(kOptionEnableWebrtc, v);
final newValue = mainGetLocalBoolOptionSync(kOptionEnableWebrtc);
setState(() {
_enableWebrtc = newValue;
});
},
),
SettingsTile(
title: Text(translate('Language')),
leading: Icon(Icons.translate),

View File

@@ -464,7 +464,9 @@ impl Client {
}
};
if crate::get_ipv6_punch_enabled() {
// Same relay gate as the v6 socket below: under any forced relay the v6 punch cannot
// be used, so probing v6 reachability is wasted work on every such connection.
if crate::get_ipv6_punch_enabled() && !interface.is_force_relay() {
crate::test_ipv6().await;
}
@@ -600,6 +602,9 @@ impl Client {
/// Whether to build a WebRTC offerer for this connection.
///
/// Off by default against a private rendezvous server, like the UDP/IPv6 punch options:
/// a self-hosted deployment opts in once its server (and TURN, if any) is ready.
///
/// Skips it when a SOCKS proxy is configured: WebRTC's ICE binds its own UDP sockets and
/// speaks STUN directly, which would bypass the proxy policy and can leak the real IP.
/// WebSocket mode does NOT skip it: ws only tunnels the signaling/relay legs to the server
@@ -620,6 +625,9 @@ impl Client {
/// keeps its rendezvous socket for trickle signaling and never reuses it for TCP punching; a
/// separate offer-less request provides the TCP fallback when force-relay is not requested.
fn should_create_webrtc_offerer(interface: &impl Interface) -> bool {
if !crate::get_webrtc_enabled() {
return false;
}
if Config::is_proxy() {
return false;
}

View File

@@ -1167,9 +1167,19 @@ pub fn get_ipv6_punch_enabled() -> bool {
)
}
pub fn get_webrtc_enabled() -> bool {
config::option2bool(
keys::OPTION_ENABLE_WEBRTC,
&get_local_option(keys::OPTION_ENABLE_WEBRTC),
)
}
pub fn get_local_option(key: &str) -> String {
let v = LocalConfig::get_option(key);
if key == keys::OPTION_ENABLE_UDP_PUNCH || key == keys::OPTION_ENABLE_IPV6_PUNCH {
if key == keys::OPTION_ENABLE_UDP_PUNCH
|| key == keys::OPTION_ENABLE_IPV6_PUNCH
|| key == keys::OPTION_ENABLE_WEBRTC
{
if v.is_empty() {
if !is_public(&Config::get_rendezvous_server()) {
return "N".to_owned();

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "سرعة لوحة التتبع الافتراضية"),
("Numeric one-time password", "كلمة مرور رقمية لمرة واحدة"),
("Enable IPv6 P2P connection", "تمكين اتصال نظير إلى نظير عبر IPv6"),
("Enable WebRTC P2P connection", "تمكين اتصال نظير إلى نظير عبر WebRTC"),
("Enable UDP hole punching", "تمكين تقنية حفر الثغرات عبر UDP"),
("View camera", "عرض الكاميرا"),
("Enable camera", "تمكين الكاميرا"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Стандартная хуткасць трэкпада"),
("Numeric one-time password", "Лічбавы аднаразовы пароль"),
("Enable IPv6 P2P connection", "Выкарыстоўваць падключэнне IPv6 P2P"),
("Enable WebRTC P2P connection", "Выкарыстоўваць падключэнне WebRTC P2P"),
("Enable UDP hole punching", "Выкарыстоўваць UDP hole punching"),
("View camera", "Рэжым камеры"),
("Enable camera", "Уключыць камеру"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Скорост на тъчпада по подразбиране"),
("Numeric one-time password", "Цифрова еднократна парола"),
("Enable IPv6 P2P connection", "Позволяване на IPv6 P2P връзка"),
("Enable WebRTC P2P connection", "Позволяване на WebRTC P2P връзка"),
("Enable UDP hole punching", "Позволяване на UDP hole punching"),
("View camera", "Преглед на камерата"),
("Enable camera", "Позволяване на камерата"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Velocitat per defecte del trackpad"),
("Numeric one-time password", "Contrasenya numèrica d'un sol ús"),
("Enable IPv6 P2P connection", "Habilita la connexió IPv6 P2P"),
("Enable WebRTC P2P connection", "Habilita la connexió WebRTC P2P"),
("Enable UDP hole punching", "Activa la perforació UDP"),
("View camera", "Mostra la càmera"),
("Enable camera", "Habilita la càmera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "默认触控板速度"),
("Numeric one-time password", "一次性密码为数字"),
("Enable IPv6 P2P connection", "启用 IPv6 P2P 连接"),
("Enable WebRTC P2P connection", "启用 WebRTC P2P 连接"),
("Enable UDP hole punching", "启用 UDP 打洞"),
("View camera", "查看摄像头"),
("Enable camera", "允许查看摄像头"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Výchozí rychlost trackpadu"),
("Numeric one-time password", "Číselné jednorázové heslo"),
("Enable IPv6 P2P connection", "Povolit připojení IPv6 P2P"),
("Enable WebRTC P2P connection", "Povolit připojení WebRTC P2P"),
("Enable UDP hole punching", "Povolit UDP hole punching"),
("View camera", "Zobrazit kameru"),
("Enable camera", "Povolit kameru"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Standard pegefeltshastighed"),
("Numeric one-time password", "Numerisk engangskode"),
("Enable IPv6 P2P connection", "Aktivér IPv6 P2P-forbindelse"),
("Enable WebRTC P2P connection", "Aktivér WebRTC P2P-forbindelse"),
("Enable UDP hole punching", "Aktivér UDP hole punching"),
("View camera", "Se kamera"),
("Enable camera", "Aktivér kamera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Standardgeschwindigkeit des Trackpads"),
("Numeric one-time password", "Numerisches Einmalpasswort"),
("Enable IPv6 P2P connection", "IPv6-P2P-Verbindung aktivieren"),
("Enable WebRTC P2P connection", "WebRTC-P2P-Verbindung aktivieren"),
("Enable UDP hole punching", "UDP-Hole-Punching aktivieren"),
("View camera", "Kamera anzeigen"),
("Enable camera", "Kamera zulassen"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Προεπιλεγμένη ταχύτητα trackpad"),
("Numeric one-time password", "Αριθμητικός κωδικός πρόσβασης μίας χρήσης"),
("Enable IPv6 P2P connection", "Ενεργοποίηση σύνδεσης IPv6 P2P"),
("Enable WebRTC P2P connection", "Ενεργοποίηση σύνδεσης WebRTC P2P"),
("Enable UDP hole punching", "Ενεργοποίηση διάτρησης οπών UDP"),
("View camera", "Προβολή κάμερας"),
("Enable camera", "Ενεργοποίηση κάμερας"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Implicita rapideco de tuŝplato"),
("Numeric one-time password", "Numera unufoja pasvorto"),
("Enable IPv6 P2P connection", "Ebligi IPv6 P2P-konekton"),
("Enable WebRTC P2P connection", "Ebligi WebRTC P2P-konekton"),
("Enable UDP hole punching", "Ebligi UDP-trapikadon"),
("View camera", "Rigardi kameron"),
("Enable camera", "Ebligi kameron"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Velocidad predeterminada de trackpad"),
("Numeric one-time password", "Contraseña numérica de un solo uso"),
("Enable IPv6 P2P connection", "Habilitar conexión IPv6 P2P"),
("Enable WebRTC P2P connection", "Habilitar conexión WebRTC P2P"),
("Enable UDP hole punching", "Habilitar perforación de agujero UDP"),
("View camera", "Ver cámara"),
("Enable camera", "Habilitar cámara"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Vaikimisi puuteplaadi kiirus"),
("Numeric one-time password", "Numbriline ühekordne parool"),
("Enable IPv6 P2P connection", "Luba IPv6 P2P-ühendus"),
("Enable WebRTC P2P connection", "Luba WebRTC P2P-ühendus"),
("Enable UDP hole punching", "Luba UDP-augustamine"),
("View camera", "Vaata kaamerat"),
("Enable camera", "Luba kaamera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Trackpad-aren abiadura lehenetsia"),
("Numeric one-time password", "Behin-behineko pasahitz numerikoa"),
("Enable IPv6 P2P connection", "Gaitu IPv6 P2P konexioa"),
("Enable WebRTC P2P connection", "Gaitu WebRTC P2P konexioa"),
("Enable UDP hole punching", "Gaitu UDP zulo-egitea"),
("View camera", "Ikusi kamera"),
("Enable camera", "Gaitu kamera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "سرعت پیش‌فرض ترک‌پد"),
("Numeric one-time password", "رمز عبور یک‌بار مصرف عددی"),
("Enable IPv6 P2P connection", "فعال‌سازی اتصال همتا‌به‌همتای IPv6"),
("Enable WebRTC P2P connection", "فعال‌سازی اتصال همتا‌به‌همتای WebRTC"),
("Enable UDP hole punching", "فعال‌سازی تکنیک UDP hole punching"),
("View camera", "نمایش دوربین"),
("Enable camera", "فعال کردن دوربین"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Oletusnopeus kosketuslevylle"),
("Numeric one-time password", "Numeerinen kertakäyttösalasana"),
("Enable IPv6 P2P connection", "Ota IPv6 P2P yhteys käyttöön"),
("Enable WebRTC P2P connection", "Ota WebRTC P2P yhteys käyttöön"),
("Enable UDP hole punching", "Ota käyttöön UDP hole punching tekniikka"),
("View camera", "Näytä kamera"),
("Enable camera", "Ota kamera käyttöön"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Vitesse par défaut du pavé tactile"),
("Numeric one-time password", "Mot de passe à usage unique numérique"),
("Enable IPv6 P2P connection", "Activer la connexion P2P IPv6"),
("Enable WebRTC P2P connection", "Activer la connexion P2P WebRTC"),
("Enable UDP hole punching", "Activer le « hole punching » UDP"),
("View camera", "Afficher la caméra"),
("Enable camera", "Activer la caméra"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "ტაჩპადის ნაგულისხმევი სიჩქარე"),
("Numeric one-time password", "ციფრული ერთჯერადი პაროლი"),
("Enable IPv6 P2P connection", "IPv6 P2P კავშირის ჩართვა"),
("Enable WebRTC P2P connection", "WebRTC P2P კავშირის ჩართვა"),
("Enable UDP hole punching", "UDP hole punching-ის ჩართვა"),
("View camera", "კამერის ნახვა"),
("Enable camera", "კამერის ჩართვა"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "ડિફોલ્ટ ટ્રેકપેડ સ્પીડ"),
("Numeric one-time password", "ન્યુમેરિક OTP"),
("Enable IPv6 P2P connection", "IPv6 P2P કનેક્શન સક્ષમ કરો"),
("Enable WebRTC P2P connection", "WebRTC P2P કનેક્શન સક્ષમ કરો"),
("Enable UDP hole punching", "UDP હોલ પંચિંગ સક્ષમ કરો"),
("View camera", "કેમેરા જુઓ"),
("Enable camera", "કેમેરા સક્ષમ કરો"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "מהירות ברירת מחדל של משטח מגע"),
("Numeric one-time password", "סיסמה חד-פעמית מספרית"),
("Enable IPv6 P2P connection", "אפשר חיבור IPv6 P2P"),
("Enable WebRTC P2P connection", "אפשר חיבור WebRTC P2P"),
("Enable UDP hole punching", "אפשר UDP hole punching"),
("View camera", "הצג מצלמה"),
("Enable camera", "הפעל מצלמה"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "डिफ़ॉल्ट ट्रैकपैड गति"),
("Numeric one-time password", "संख्यात्मक वन-टाइम पासवर्ड"),
("Enable IPv6 P2P connection", "IPv6 P2P कनेक्शन सक्षम करें"),
("Enable WebRTC P2P connection", "WebRTC P2P कनेक्शन सक्षम करें"),
("Enable UDP hole punching", "UDP होल पंचिंग सक्षम करें"),
("View camera", "कैमरा देखें"),
("Enable camera", "कैमरा सक्षम करें"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Zadana brzina dodirne ploče"),
("Numeric one-time password", "Numerička jednokratna lozinka"),
("Enable IPv6 P2P connection", "Omogući IPv6 P2P vezu"),
("Enable WebRTC P2P connection", "Omogući WebRTC P2P vezu"),
("Enable UDP hole punching", "Omogući UDP hole punching"),
("View camera", "Pregled kamere"),
("Enable camera", "Omogući kameru"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Alapértelmezett érintőpad sebessége"),
("Numeric one-time password", "Numerikus, egyszer használatos jelszó"),
("Enable IPv6 P2P connection", "IPv6 P2P kapcsolat engedélyezése"),
("Enable WebRTC P2P connection", "WebRTC P2P kapcsolat engedélyezése"),
("Enable UDP hole punching", "UDP résszűrés engedélyezése"),
("View camera", "Kamera nézet"),
("Enable camera", "Kamera engedélyezése"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Kecepatan default trackpad"),
("Numeric one-time password", "Kata sandi sekali pakai numerik"),
("Enable IPv6 P2P connection", "Aktifkan koneksi P2P IPv6"),
("Enable WebRTC P2P connection", "Aktifkan koneksi P2P WebRTC"),
("Enable UDP hole punching", "Aktifkan UDP hole punching"),
("View camera", "Lihat Kamera"),
("Enable camera", "Aktifkan kamera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Velocità predefinita trackpad"),
("Numeric one-time password", "Password numerica monouso"),
("Enable IPv6 P2P connection", "Abilita connessione P2P IPv6"),
("Enable WebRTC P2P connection", "Abilita connessione P2P WebRTC"),
("Enable UDP hole punching", "Abilita hole punching UDP"),
("View camera", "Visualizza telecamera"),
("Enable camera", "Abilita camera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "既定のトラックパッドの速度"),
("Numeric one-time password", "数字のワンタイムパスワード"),
("Enable IPv6 P2P connection", "IPv6 P2P 接続を有効化する"),
("Enable WebRTC P2P connection", "WebRTC P2P 接続を有効化する"),
("Enable UDP hole punching", "UDP ホールパンチを有効化する"),
("View camera", "カメラを表示"),
("Enable camera", "カメラを有効化する"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "기본 트랙패드 속도"),
("Numeric one-time password", "숫자 일회용 비밀번호"),
("Enable IPv6 P2P connection", "IPv6 P2P 연결 사용"),
("Enable WebRTC P2P connection", "WebRTC P2P 연결 사용"),
("Enable UDP hole punching", "UDP 홀 펀칭 사용"),
("View camera", "카메라 보기"),
("Enable camera", "카메라 허용"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Әдепкі трекпад жылдамдығы"),
("Numeric one-time password", "Сандық бір-реттік құпия сөз"),
("Enable IPv6 P2P connection", "IPv6 P2P қосылымын іске қосу"),
("Enable WebRTC P2P connection", "WebRTC P2P қосылымын іске қосу"),
("Enable UDP hole punching", "UDP hole punching'ті іске қосу"),
("View camera", "Камераны Көру"),
("Enable camera", "Камераны қосу"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Numatytasis jutiklinės dalies greitis"),
("Numeric one-time password", "Skaitmeninis vienkartinis slaptažodis"),
("Enable IPv6 P2P connection", "Įgalinti IPv6 P2P ryšį"),
("Enable WebRTC P2P connection", "Įgalinti WebRTC P2P ryšį"),
("Enable UDP hole punching", "Įgalinti UDP gręžimą (hole punching)"),
("View camera", "Peržiūrėti kamerą"),
("Enable camera", "Įgalinti kamerą"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Noklusējuma skārienpaliktņa ātrums"),
("Numeric one-time password", "Vienreiz lietojama ciparu parole"),
("Enable IPv6 P2P connection", "Iespējot IPv6 P2P savienojumu"),
("Enable WebRTC P2P connection", "Iespējot WebRTC P2P savienojumu"),
("Enable UDP hole punching", "Iespējot UDP caurumu veidošanu"),
("View camera", "Skatīt kameru"),
("Enable camera", "Iespējot kameru"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "സാധാരണ ട്രാക്ക്പാഡ് വേഗത"),
("Numeric one-time password", "അക്കങ്ങൾ മാത്രമുള്ള OTP"),
("Enable IPv6 P2P connection", "IPv6 P2P കണക്ഷൻ അനുവദിക്കുക"),
("Enable WebRTC P2P connection", "WebRTC P2P കണക്ഷൻ അനുവദിക്കുക"),
("Enable UDP hole punching", "UDP ഹോൾ പഞ്ചിംഗ് അനുവദിക്കുക"),
("View camera", "ക്യാമറ കാണുക"),
("Enable camera", "ക്യാമറ ഓൺ ചെയ്യുക"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Standard styreplatehastighet"),
("Numeric one-time password", "Numerisk engangspassord"),
("Enable IPv6 P2P connection", "Aktiver IPv6 P2P-tilkobling"),
("Enable WebRTC P2P connection", "Aktiver WebRTC P2P-tilkobling"),
("Enable UDP hole punching", "Aktiver UDP hole punching"),
("View camera", "Vis kamera"),
("Enable camera", "Aktiver kamera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Standaardsnelheid Trackpad"),
("Numeric one-time password", "Eenmalig numeriek wachtwoord"),
("Enable IPv6 P2P connection", "IPv6 P2P-verbinding inschakelen"),
("Enable WebRTC P2P connection", "WebRTC P2P-verbinding inschakelen"),
("Enable UDP hole punching", "UDP-hole punching inschakelen"),
("View camera", "Camera weergeven"),
("Enable camera", "Camera inschakelen"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Domyślna szybkość gładzika"),
("Numeric one-time password", "Jednorazowe hasło cyfrowe"),
("Enable IPv6 P2P connection", "Włącz połączenie P2P IPv6"),
("Enable WebRTC P2P connection", "Włącz połączenie P2P WebRTC"),
("Enable UDP hole punching", "Włącz tworzenie tunelu UDP"),
("View camera", "Podgląd kamery"),
("Enable camera", "Włącz kamerę"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Velocidade predefinida do trackpad"),
("Numeric one-time password", "Palavra-passe de uso único numérica"),
("Enable IPv6 P2P connection", "Ativar ligação P2P por IPv6"),
("Enable WebRTC P2P connection", "Ativar ligação P2P por WebRTC"),
("Enable UDP hole punching", "Ativar UDP hole punching"),
("View camera", "Ver câmara"),
("Enable camera", "Ativar câmara"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Velocidade padrão do trackpad"),
("Numeric one-time password", "Senha numérica de uso único"),
("Enable IPv6 P2P connection", "Habilitar conexão IPv6 P2P"),
("Enable WebRTC P2P connection", "Habilitar conexão WebRTC P2P"),
("Enable UDP hole punching", "Habilitar UDP hole punching"),
("View camera", "Visualizar câmera"),
("Enable camera", "Habilitar câmera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Viteza implicită a touchpad-ului"),
("Numeric one-time password", "Parolă unică numerică"),
("Enable IPv6 P2P connection", "Activează conexiunea P2P prin IPv6"),
("Enable WebRTC P2P connection", "Activează conexiunea P2P prin WebRTC"),
("Enable UDP hole punching", "Activează traversarea UDP (hole punching)"),
("View camera", "Vezi camera"),
("Enable camera", "Activează camera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Скорость трекпада по умолчанию"),
("Numeric one-time password", "Цифровой одноразовый пароль"),
("Enable IPv6 P2P connection", "Использовать подключение IPv6 P2P"),
("Enable WebRTC P2P connection", "Использовать подключение WebRTC P2P"),
("Enable UDP hole punching", "Использовать UDP hole punching"),
("View camera", "Просмотр камеры"),
("Enable camera", "Включить камеру"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Velotzidade predefinida de su pannellu tàtile"),
("Numeric one-time password", "Crae numèrica monoimpreu"),
("Enable IPv6 P2P connection", "Abìlita connessione P2P IPv6"),
("Enable WebRTC P2P connection", "Abìlita connessione P2P WebRTC"),
("Enable UDP hole punching", "Abìlita s'istampadura UDP"),
("View camera", "Mustra sa càmera"),
("Enable camera", "Abìlita sa càmera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Predvolená rýchlosť touchpadu"),
("Numeric one-time password", "Číselné jednorazové heslo"),
("Enable IPv6 P2P connection", "Povoliť pripojenie IPv6 P2P"),
("Enable WebRTC P2P connection", "Povoliť pripojenie WebRTC P2P"),
("Enable UDP hole punching", "Povoliť UDP hole punching"),
("View camera", "Zobraziť kameru"),
("Enable camera", "Povoliť kameru"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Privzeta hitrost sledilne ploščice"),
("Numeric one-time password", "Numerično enkratno geslo"),
("Enable IPv6 P2P connection", "Omogoči povezavo IPv6 P2P"),
("Enable WebRTC P2P connection", "Omogoči povezavo WebRTC P2P"),
("Enable UDP hole punching", "Omogoči preboj lukenj UDP"),
("View camera", "Pogled kamere"),
("Enable camera", "Omogoči kamero"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Shpejtësia e parazgjedhur e trackpad-it"),
("Numeric one-time password", "Fjalëkalim numerik një-herë"),
("Enable IPv6 P2P connection", "Aktivizo lidhjen IPv6 P2P"),
("Enable WebRTC P2P connection", "Aktivizo lidhjen WebRTC P2P"),
("Enable UDP hole punching", "Aktivizo UDP hole punching"),
("View camera", "Shiko kamerën"),
("Enable camera", "Aktivizo kamerën"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Podrazumevana brzina dodirne table"),
("Numeric one-time password", "Numerička jednokratna lozinka"),
("Enable IPv6 P2P connection", "Omogući IPv6 P2P konekciju"),
("Enable WebRTC P2P connection", "Omogući WebRTC P2P konekciju"),
("Enable UDP hole punching", "Omogući UDP hole punching"),
("View camera", "Pregled kamere"),
("Enable camera", "Omogući kameru"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Standardhastighet för styrplattan"),
("Numeric one-time password", "Numeriskt engångslösenord"),
("Enable IPv6 P2P connection", "Aktivera IPv6 P2P anslutning"),
("Enable WebRTC P2P connection", "Aktivera WebRTC P2P anslutning"),
("Enable UDP hole punching", "Aktivera UDP hålslagning"),
("View camera", "Visa kamera"),
("Enable camera", "Aktivera kamera"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "இயல்புநிலை டிராக்பேட் வேகம்"),
("Numeric one-time password", "எண் ஒருமுறை கடவுச்சொல்"),
("Enable IPv6 P2P connection", "IPv6 P2P இணைப்பு இயக்கு"),
("Enable WebRTC P2P connection", "WebRTC P2P இணைப்பு இயக்கு"),
("Enable UDP hole punching", "UDP hole punching இயக்கு"),
("View camera", "கேமரா பார்"),
("Enable camera", "கேமரா இயக்கு"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", ""),
("Numeric one-time password", ""),
("Enable IPv6 P2P connection", ""),
("Enable WebRTC P2P connection", ""),
("Enable UDP hole punching", ""),
("View camera", ""),
("Enable camera", ""),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "ความเร็วแทร็กแพดเริ่มต้น"),
("Numeric one-time password", "รหัสผ่านครั้งเดียวแบบตัวเลข"),
("Enable IPv6 P2P connection", "เปิดใช้งานการเชื่อมต่อ P2P แบบ IPv6"),
("Enable WebRTC P2P connection", "เปิดใช้งานการเชื่อมต่อ P2P แบบ WebRTC"),
("Enable UDP hole punching", "เปิดใช้งาน UDP hole punching"),
("View camera", "ดูกล้อง"),
("Enable camera", "เปิดใช้งานกล้อง"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Varsayılan izleme paneli hızı"),
("Numeric one-time password", "Sayısal tek seferlik parola"),
("Enable IPv6 P2P connection", "IPv6 P2P bağlantısını etkinleştir"),
("Enable WebRTC P2P connection", "WebRTC P2P bağlantısını etkinleştir"),
("Enable UDP hole punching", "UDP delik açmayı etkinleştir"),
("View camera", "Kamerayı görüntüle"),
("Enable camera", "Kamerayı etkinleştir"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "預設觸控板速度"),
("Numeric one-time password", "數字一次性密碼"),
("Enable IPv6 P2P connection", "啟用 IPv6 P2P 連線"),
("Enable WebRTC P2P connection", "啟用 WebRTC P2P 連線"),
("Enable UDP hole punching", "啟用 UDP 打洞"),
("View camera", "檢視相機"),
("Enable camera", "允許查看鏡頭"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Швидкість тачпада за замовчуванням"),
("Numeric one-time password", "Числовий одноразовий пароль"),
("Enable IPv6 P2P connection", "Увімкнути P2P-підключення через IPv6"),
("Enable WebRTC P2P connection", "Увімкнути P2P-підключення через WebRTC"),
("Enable UDP hole punching", "Увімкнути UDP hole punching"),
("View camera", "Перегляд камери"),
("Enable camera", "Увімкнути камеру"),

View File

@@ -676,6 +676,7 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
("Default trackpad speed", "Tốc độ Trackpad mặc định"),
("Numeric one-time password", "Mật khẩu số dùng một lần"),
("Enable IPv6 P2P connection", "Cho phép kết nối IPv6 P2P"),
("Enable WebRTC P2P connection", "Cho phép kết nối WebRTC P2P"),
("Enable UDP hole punching", "Bật UDP Hole Punching"),
("View camera", "Xem Camera"),
("Enable camera", "Bật Camera"),

View File

@@ -856,7 +856,11 @@ impl RendezvousMediator {
// policy, viable (and answerable) only through TURN.
let webrtc_relay_only = ph.force_relay
&& !WebRTCStream::endpoint_declares_all_ice(&ph.webrtc_sdp_offer);
// Unlike the udp/ipv6 legs - which deliberately just follow the request - WebRTC is
// gated on this machine's own option too: answering builds a pc that gathers ICE
// from this host, so a machine with WebRTC off must not be pulled into it.
let webrtc_viable = !ph.webrtc_sdp_offer.is_empty()
&& crate::get_webrtc_enabled()
&& !Config::is_proxy()
&& (!webrtc_relay_only || WebRTCStream::has_turn_server());
let webrtc_sdp_answer = if webrtc_viable {