diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index 8542bfcadd..8603652ac2 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -1812,6 +1812,9 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a ) } + /** + * [AppPreferences.networkProxyHostPort] is not changed here, use appPrefs to set it + * */ fun setNetCfg(cfg: NetCfg) { appPrefs.networkUseSocksProxy.set(cfg.useSocksProxy) appPrefs.networkHostMode.set(cfg.hostMode.name) @@ -2355,6 +2358,15 @@ data class NetCfg( val useSocksProxy: Boolean get() = socksProxy != null val enableKeepAlive: Boolean get() = tcpKeepAlive != null + fun withHostPort(hostPort: String?, default: String? = ":9050"): NetCfg { + val socksProxy = if (hostPort?.startsWith("localhost:") == true) { + hostPort.removePrefix("localhost") + } else { + hostPort ?: default + } + return copy(socksProxy = socksProxy) + } + companion object { val defaults: NetCfg = NetCfg( diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt index c20e4eb0be..47c926cdd7 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/usersettings/NetworkAndServers.kt @@ -48,12 +48,13 @@ fun NetworkAndServersView( chatModel.userSMPServersUnsaved.value = null } + val proxyPort = remember { derivedStateOf { chatModel.controller.appPrefs.networkProxyHostPort.state.value?.split(":")?.lastOrNull()?.toIntOrNull() ?: 9050 } } NetworkAndServersLayout( developerTools = developerTools, networkUseSocksProxy = networkUseSocksProxy, onionHosts = onionHosts, sessionMode = sessionMode, - proxyPort = remember { derivedStateOf { chatModel.controller.appPrefs.networkProxyHostPort.state.value?.split(":")?.lastOrNull()?.toIntOrNull() ?: 9050 } }, + proxyPort = proxyPort, showModal = showModal, showSettingsModal = showSettingsModal, showCustomModal = showCustomModal, @@ -61,14 +62,15 @@ fun NetworkAndServersView( if (enable) { AlertManager.shared.showAlertDialog( title = generalGetString(R.string.network_enable_socks), - text = generalGetString(R.string.network_enable_socks_info), + text = generalGetString(R.string.network_enable_socks_info).format(proxyPort.value), confirmText = generalGetString(R.string.confirm_verb), onConfirm = { withApi { - chatModel.controller.apiSetNetworkConfig(NetCfg.proxyDefaults) - chatModel.controller.setNetCfg(NetCfg.proxyDefaults) + val conf = NetCfg.proxyDefaults.withHostPort(chatModel.controller.appPrefs.networkProxyHostPort.get()) + chatModel.controller.apiSetNetworkConfig(conf) + chatModel.controller.setNetCfg(conf) networkUseSocksProxy.value = true - onionHosts.value = NetCfg.proxyDefaults.onionHosts + onionHosts.value = conf.onionHosts } } ) @@ -79,10 +81,11 @@ fun NetworkAndServersView( confirmText = generalGetString(R.string.confirm_verb), onConfirm = { withApi { - chatModel.controller.apiSetNetworkConfig(NetCfg.defaults) - chatModel.controller.setNetCfg(NetCfg.defaults) + val conf = NetCfg.defaults + chatModel.controller.apiSetNetworkConfig(conf) + chatModel.controller.setNetCfg(conf) networkUseSocksProxy.value = false - onionHosts.value = NetCfg.defaults.onionHosts + onionHosts.value = conf.onionHosts } } ) @@ -206,35 +209,31 @@ fun UseSocksProxySwitch( ) { Icon( painterResource(R.drawable.ic_settings_ethernet), - stringResource(R.string.network_socks_toggle), + stringResource(R.string.network_socks_toggle_use_socks_proxy), tint = MaterialTheme.colors.secondary ) TextIconSpaced(false) - if (networkUseSocksProxy.value) { - val text = buildAnnotatedString { - append(generalGetString(R.string.network_socks_toggle_use_socks_proxy) + " (") - val style = SpanStyle(color = MaterialTheme.colors.primary) - withAnnotation(tag = "PORT", annotation = generalGetString(R.string.network_proxy_port).format(proxyPort.value)) { - withStyle(style) { append(generalGetString(R.string.network_proxy_port).format(proxyPort.value)) } - } - append(")") - } - ClickableText( - text, - style = TextStyle(color = MaterialTheme.colors.onBackground, fontSize = 16.sp, fontFamily = FontFamily(Font(R.font.inter_regular))), - onClick = { offset -> - text.getStringAnnotations(tag = "PORT", start = offset, end = offset) - .firstOrNull()?.let { _ -> - showSettingsModal { SockProxySettings(it) }() - } - }, - shouldConsumeEvent = { offset -> - text.getStringAnnotations(tag = "PORT", start = offset, end = offset).any() - } - ) - } else { - Text(stringResource(R.string.network_socks_toggle)) + val text = buildAnnotatedString { + append(generalGetString(R.string.network_socks_toggle_use_socks_proxy) + " (") + val style = SpanStyle(color = MaterialTheme.colors.primary) + withAnnotation(tag = "PORT", annotation = generalGetString(R.string.network_proxy_port).format(proxyPort.value)) { + withStyle(style) { append(generalGetString(R.string.network_proxy_port).format(proxyPort.value)) } + } + append(")") } + ClickableText( + text, + style = TextStyle(color = MaterialTheme.colors.onBackground, fontSize = 16.sp, fontFamily = FontFamily(Font(R.font.inter_regular))), + onClick = { offset -> + text.getStringAnnotations(tag = "PORT", start = offset, end = offset) + .firstOrNull()?.let { _ -> + showSettingsModal { SockProxySettings(it) }() + } + }, + shouldConsumeEvent = { offset -> + text.getStringAnnotations(tag = "PORT", start = offset, end = offset).any() + } + ) } DefaultSwitch( checked = networkUseSocksProxy.value, @@ -262,13 +261,15 @@ fun SockProxySettings(m: ChatModel) { val save = { withBGApi { m.controller.appPrefs.networkProxyHostPort.set(hostUnsaved.value.text + ":" + portUnsaved.value.text) - m.controller.apiSetNetworkConfig(m.controller.getNetCfg()) + if (m.controller.appPrefs.networkUseSocksProxy.get()) { + m.controller.apiSetNetworkConfig(m.controller.getNetCfg()) + } } } SectionView { SectionItemView { ResetToDefaultsButton({ - showUpdateNetworkSettingsDialog { + val reset = { m.controller.appPrefs.networkProxyHostPort.set(defaultHostPort) val newHost = defaultHostPort.split(":").first() val newPort = defaultHostPort.split(":").last() @@ -276,6 +277,13 @@ fun SockProxySettings(m: ChatModel) { portUnsaved.value = portUnsaved.value.copy(newPort, TextRange(newPort.length)) save() } + if (m.controller.appPrefs.networkUseSocksProxy.get()) { + showUpdateNetworkSettingsDialog { + reset() + } + } else { + reset() + } }, disabled = hostPort == defaultHostPort) } SectionItemView { @@ -307,7 +315,7 @@ fun SockProxySettings(m: ChatModel) { hostUnsaved.value = hostUnsaved.value.copy(prevHost, TextRange(prevHost.length)) portUnsaved.value = portUnsaved.value.copy(prevPort, TextRange(prevPort.length)) }, - save = { showUpdateNetworkSettingsDialog { save() } }, + save = { if (m.controller.appPrefs.networkUseSocksProxy.get()) showUpdateNetworkSettingsDialog { save() } else save() }, revertDisabled = hostPort == (hostUnsaved.value.text + ":" + portUnsaved.value.text), saveDisabled = hostPort == (hostUnsaved.value.text + ":" + portUnsaved.value.text) || remember { derivedStateOf { !validHost(hostUnsaved.value.text) } }.value || diff --git a/apps/android/app/src/main/res/values-ar/strings.xml b/apps/android/app/src/main/res/values-ar/strings.xml index deb0223248..60d7ffc7e8 100644 --- a/apps/android/app/src/main/res/values-ar/strings.xml +++ b/apps/android/app/src/main/res/values-ar/strings.xml @@ -30,7 +30,7 @@ أضف خوادم محددة مسبقًا أضف إلى جهاز آخر سيتم حذف جميع الدردشات والرسائل - لا يمكن التراجع عن هذا! - الوصول إلى الخوادم عبر بروكسي SOCKS على المنفذ 9050؟ يجب بدء تشغيل الوكيل قبل تمكين هذا الخيار. + الوصول إلى الخوادم عبر بروكسي SOCKS على المنفذ %d؟ يجب بدء تشغيل الوكيل قبل تمكين هذا الخيار. إضافة خادم … إعدادات الشبكة المتقدمة سيبقى جميع أعضاء المجموعة على اتصال. diff --git a/apps/android/app/src/main/res/values-cs/strings.xml b/apps/android/app/src/main/res/values-cs/strings.xml index ea1f4c5d60..7e79ca6c3d 100644 --- a/apps/android/app/src/main/res/values-cs/strings.xml +++ b/apps/android/app/src/main/res/values-cs/strings.xml @@ -9,7 +9,7 @@ Pokročilá nastavení sítě Přijmout Přidat server… - Přistupovat k serverům přes SOCKS proxy na portu 9050\? Před povolením této možnosti musí být spuštěna proxy. + Přistupovat k serverům přes SOCKS proxy na portu %d\? Před povolením této možnosti musí být spuštěna proxy. Přijmout Povolte svým kontaktům odesílat mizící zprávy. O SimpleX Chat @@ -635,7 +635,6 @@ Ujistěte se, že adresy serverů WebRTC ICE jsou ve správném formátu, oddělené na řádcích a nejsou duplicitní. Uložit Síť a servery - Použít proxy server SOCKS (port 9050) Aktualizovat nastavení hostitelů .onion\? Použít hostitele .onion Když bude dostupný diff --git a/apps/android/app/src/main/res/values-de/strings.xml b/apps/android/app/src/main/res/values-de/strings.xml index c705c14aeb..48bfbb7df2 100644 --- a/apps/android/app/src/main/res/values-de/strings.xml +++ b/apps/android/app/src/main/res/values-de/strings.xml @@ -395,9 +395,8 @@ Netzwerk & Server Erweiterte Netzwerkeinstellungen Netzwerkeinstellungen - SOCKS-Proxy verwenden (Port 9050) SOCKS-Proxy verwenden? - Zugriff auf die Server über SOCKS-Proxy auf Port 9050? Der Proxy muss gestartet werden, bevor diese Option aktiviert wird. + Zugriff auf die Server über SOCKS-Proxy auf Port %d? Der Proxy muss gestartet werden, bevor diese Option aktiviert wird. Direkte Internetverbindung verwenden? Wenn Sie dies bestätigen, können die Messaging-Server Ihre IP-Adresse und Ihren Provider sehen und mit welchen Servern Sie sich verbinden. Einstellung für .onion-Hosts aktualisieren? diff --git a/apps/android/app/src/main/res/values-es/strings.xml b/apps/android/app/src/main/res/values-es/strings.xml index 6a503d1ba6..f4ba29eb83 100644 --- a/apps/android/app/src/main/res/values-es/strings.xml +++ b/apps/android/app/src/main/res/values-es/strings.xml @@ -33,7 +33,7 @@ Aceptar incógnito Se eliminarán todos los mensajes SOLO para tí. ¡No puede deshacerse! Añadir servidor… - ¿Acceder a los servidores a través del proxy SOCKS en el puerto 9050\? El proxy debe iniciarse antes de activar esta opción. + ¿Acceder a los servidores a través del proxy SOCKS en el puerto %d\? El proxy debe iniciarse antes de activar esta opción. Todos tus contactos permanecerán conectados. Apariencia Versión @@ -738,7 +738,6 @@ Compartir envío no autorizado Escribe un nombre para el contacto - Usar proxy SOCKS (puerto 9050) Error desconocido El rol cambiará a \"%s\". Se notificará a todos los miembros del grupo. La seguridad de SimpleX Chat fue auditada por Trail of Bits. diff --git a/apps/android/app/src/main/res/values-fr/strings.xml b/apps/android/app/src/main/res/values-fr/strings.xml index f15988b78e..07a056fb65 100644 --- a/apps/android/app/src/main/res/values-fr/strings.xml +++ b/apps/android/app/src/main/res/values-fr/strings.xml @@ -324,7 +324,7 @@ Utiliser les serveurs SimpleX Chat \? Supprimer le serveur Assurez-vous que les adresses des serveurs WebRTC ICE sont au bon format et ne sont pas dupliquées, un par ligne. - Accéder aux serveurs via un proxy SOCKS sur le port 9050 \? Le proxy doit être démarré avant d\'activer cette option. + Accéder aux serveurs via un proxy SOCKS sur le port %d \? Le proxy doit être démarré avant d\'activer cette option. Utiliser les hôtes .onions Les hôtes .onion seront utilisés lorsqu\'ils sont disponibles. Les hôtes .onion seront nécessaires pour la connexion. @@ -350,7 +350,6 @@ Configurer les serveurs ICE Paramètres réseau avancés Paramètres réseau - Utiliser un proxy SOCKS (port 9050) Utiliser un proxy SOCKS \? Utiliser une connexion Internet directe \? Si vous confirmez, les serveurs de messagerie seront en mesure de voir votre adresse IP, votre fournisseur ainsi que les serveurs auxquels vous vous connectez. diff --git a/apps/android/app/src/main/res/values-it/strings.xml b/apps/android/app/src/main/res/values-it/strings.xml index 0186f9e056..9243a98fb9 100644 --- a/apps/android/app/src/main/res/values-it/strings.xml +++ b/apps/android/app/src/main/res/values-it/strings.xml @@ -239,7 +239,7 @@ Consenti i messaggi a tempo solo se il tuo contatto li consente. Permetti di eliminare irreversibilmente i messaggi inviati. Permetti ai tuoi contatti di inviare messaggi a tempo. - Accedere ai server via proxy SOCKS sulla porta 9050\? Il proxy deve essere avviato prima di attivare questa opzione. + Accedere ai server via proxy SOCKS sulla porta %d\? Il proxy deve essere avviato prima di attivare questa opzione. Aggiungi server scansionando codici QR. Tutti i membri del gruppo resteranno connessi. Consenti l\'eliminazione irreversibile dei messaggi solo se il contatto la consente a te. @@ -633,7 +633,6 @@ Usare una connessione internet diretta\? Usa gli host .onion Usare il proxy SOCKS\? - Usa il proxy SOCKS (porta 9050) Usare i server di SimpleX Chat\? Stai usando i server di SimpleX Chat. Quando disponibili diff --git a/apps/android/app/src/main/res/values-ja/strings.xml b/apps/android/app/src/main/res/values-ja/strings.xml index fc9016a462..1a48ad9846 100644 --- a/apps/android/app/src/main/res/values-ja/strings.xml +++ b/apps/android/app/src/main/res/values-ja/strings.xml @@ -22,7 +22,7 @@ 別の端末に追加 プロフィールを追加 サーバを追加… - SOCKSプロキシ(ポート9050)経由で接続しますか?(※設定する前にプロキシ起動が必要※) + SOCKSプロキシ(ポート%d)経由で接続しますか?(※設定する前にプロキシ起動が必要※) 全チャットとメッセージが削除されます(※元に戻せません※)! 送信相手からの音声メッセージを許可する。 あなたと連絡相手が音声メッセージを送信できます。 @@ -748,7 +748,6 @@ あなたのICEサーバ 直接にインタネットに繋がりますか? SOCKSプロキシを使いますか? - SOCKSプロキシ (ポート9050) を使う .onionのホスト設定を更新しますか? .onionホストを使う 利用可能時に diff --git a/apps/android/app/src/main/res/values-ko/strings.xml b/apps/android/app/src/main/res/values-ko/strings.xml index d0f6d57894..ed05450d1e 100644 --- a/apps/android/app/src/main/res/values-ko/strings.xml +++ b/apps/android/app/src/main/res/values-ko/strings.xml @@ -140,7 +140,7 @@ 응답 연결 요청을 수락할까요\? 수락 - SOCKS 프록시(포트 9050)를 통해 서버에 액세스할까요\? 이 설정을 활성화하기 전에 프록시를 시작해야 해요. + SOCKS 프록시(포트 %d)를 통해 서버에 액세스할까요\? 이 설정을 활성화하기 전에 프록시를 시작해야 해요. 다른 기기에 추가 QR 코드 스캔으로 서버 추가 환영 메시지 추가 @@ -667,7 +667,6 @@ 읽지 않음으로 표시 음소거 메시지에 사용된 마크다운 - SOCKS 프록시 사용 (포트 9050) 직접적인 인터넷 연결을 사용할까요\? SOCKS 프록시를 사용할까요\? 설정하면 메시징 서버에서 내 IP 주소와 내가 연결하려는 서버를 볼 수 있어요. diff --git a/apps/android/app/src/main/res/values-lt/strings.xml b/apps/android/app/src/main/res/values-lt/strings.xml index d1a4f0b9df..d4fb5b3bd2 100644 --- a/apps/android/app/src/main/res/values-lt/strings.xml +++ b/apps/android/app/src/main/res/values-lt/strings.xml @@ -278,7 +278,6 @@ Naudoti kamerą Dėkojame, kad įdiegėte SimpleX Chat! Naudoti serverį - Naudoti SOCKS įgaliotąjį serverį (prievadas 9050) Naudoti SOCKS įgaliotąjį serverį\? simplexmq: v%s (%2s) Bendrinti nuorodą diff --git a/apps/android/app/src/main/res/values-nl/strings.xml b/apps/android/app/src/main/res/values-nl/strings.xml index bd80a475d0..ca5147b956 100644 --- a/apps/android/app/src/main/res/values-nl/strings.xml +++ b/apps/android/app/src/main/res/values-nl/strings.xml @@ -16,7 +16,7 @@ Gevraagd om de afbeelding te ontvangen Wijziging Geavanceerde netwerk instellingen - Toegang tot de servers via SOCKS proxy op poort 9050\? De proxy moet worden gestart voordat u deze optie inschakelt. + Toegang tot de servers via SOCKS proxy op poort %d\? De proxy moet worden gestart voordat u deze optie inschakelt. Kan geen contacten uitnodigen! Sta het verzenden van directe berichten naar leden toe. Sta toe om verzonden berichten onomkeerbaar te verwijderen. @@ -720,7 +720,6 @@ Uw server adres Uw server Transport isolation - SOCKS-proxy gebruiken (poort 9050) Voorkeuren opslaan\? Opslaan en Contact melden Je huidige profiel diff --git a/apps/android/app/src/main/res/values-pl/strings.xml b/apps/android/app/src/main/res/values-pl/strings.xml index fed9fae6fe..95f53333d4 100644 --- a/apps/android/app/src/main/res/values-pl/strings.xml +++ b/apps/android/app/src/main/res/values-pl/strings.xml @@ -331,7 +331,7 @@ Twój adres serwera Twój adres kontaktowy SimpleX Przyczyń się - Uzyskiwać dostęp do serwerów przez SOCKS proxy na porcie 9050\? Proxy musi zostać uruchomione przed włączeniem tej opcji. + Uzyskiwać dostęp do serwerów przez SOCKS proxy na porcie %d\? Proxy musi zostać uruchomione przed włączeniem tej opcji. Zaawansowane ustawienia sieci Kompilacja aplikacji: %s Wygląd @@ -362,7 +362,6 @@ Użyć bezpośredniego połączenia z Internetem\? Użyj hostów .onion Użyć proxy SOCKS\? - Użyj proxy SOCKS (port 9050) Wszystkie Twoje kontakty pozostaną połączone. Utwórz adres ID bazy danych i opcja izolacji transportu. diff --git a/apps/android/app/src/main/res/values-pt-rBR/strings.xml b/apps/android/app/src/main/res/values-pt-rBR/strings.xml index 10b1a1ab2f..4bb272cc6f 100644 --- a/apps/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/apps/android/app/src/main/res/values-pt-rBR/strings.xml @@ -154,7 +154,7 @@ Contato ainda não está conectado! Contribuir Criar - Acessar os servidores via proxy SOCKS na porta 9050\? O proxy deve ser iniciado antes de habilitar esta opção. + Acessar os servidores via proxy SOCKS na porta %d\? O proxy deve ser iniciado antes de habilitar esta opção. Permitir que seus contatos excluam de forma irreversível as mensagens enviadas. Adicionar a outro dispositivo Os administradores podem criar os links para ingressar em grupos. @@ -809,7 +809,6 @@ Configurações de conexão sem detalhes Link de convite de uso único - Usar proxy SOCKS (porta 9050) Seu endereço de servidor Suas configurações %s é verificado diff --git a/apps/android/app/src/main/res/values-ru/strings.xml b/apps/android/app/src/main/res/values-ru/strings.xml index ec80a7d96f..47996bfe7c 100644 --- a/apps/android/app/src/main/res/values-ru/strings.xml +++ b/apps/android/app/src/main/res/values-ru/strings.xml @@ -394,9 +394,8 @@ Сеть и серверы Настройки сети Настройки сети - Использовать SOCKS прокси (порт 9050) Использовать SOCKS прокси? - Соединяться с серверами через SOCKS прокси через порт 9050? Прокси должен быть запущен до включения этой опции. + Соединяться с серверами через SOCKS прокси через порт %d? Прокси должен быть запущен до включения этой опции. Использовать прямое соединение с Интернет? Если Вы подтвердите, серверы смогут видеть Ваш IP адрес, а провайдер - с какими серверами Вы соединяетесь. Обновить настройки .onion хостов? diff --git a/apps/android/app/src/main/res/values-zh-rCN/strings.xml b/apps/android/app/src/main/res/values-zh-rCN/strings.xml index 759422a3a6..579c4e51c6 100644 --- a/apps/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/apps/android/app/src/main/res/values-zh-rCN/strings.xml @@ -14,7 +14,7 @@ 色调 已接受通话 接受 - 通过 SOCKS 代理访问服务器在端口9050?允许该选项前必须开始代理。 + 通过 SOCKS 代理访问服务器在端口%d?允许该选项前必须开始代理。 添加服务器…… 添加另一设备 管理员 @@ -872,7 +872,6 @@ 当您的联系人设备在线时,您将可以连接,请稍等或稍后查看! 评价此应用程序 使用 SOCKS 代理? - 使用 SOCKS 代理(端口 9050) %d 个文件,总大小为 %s 您已加入此群组 您被邀请加入群组 diff --git a/apps/android/app/src/main/res/values-zh-rTW/strings.xml b/apps/android/app/src/main/res/values-zh-rTW/strings.xml index 2f8117f0df..908d4e7d1b 100644 --- a/apps/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/apps/android/app/src/main/res/values-zh-rTW/strings.xml @@ -522,7 +522,6 @@ 連接 網路 & 伺服器 網路設定 - 使用 SOCKS 代理伺服器 (端口 9050) 使用 SOCKS 代理伺服器 儲存並通知群組內的聯絡人 退出並且不儲存記錄 diff --git a/apps/android/app/src/main/res/values/strings.xml b/apps/android/app/src/main/res/values/strings.xml index e55407aadb..2eef854303 100644 --- a/apps/android/app/src/main/res/values/strings.xml +++ b/apps/android/app/src/main/res/values/strings.xml @@ -548,14 +548,13 @@ Network & servers Advanced network settings Network settings - Use SOCKS proxy (port 9050) SOCKS proxy settings Use SOCKS proxy port %d Host Port Use SOCKS proxy? - Access the servers via SOCKS proxy on port 9050? Proxy must be started before enabling this option. + Access the servers via SOCKS proxy on port %d? Proxy must be started before enabling this option. Use direct Internet connection? If you confirm, the messaging servers will be able to see your IP address, and your provider - which servers you are connecting to. Update .onion hosts setting?