tor-commits
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
December 2021
- 15 participants
- 1465 discussions
[orbot/master] removed bridge config from barebones orbot XML settings, bridges can be configured with more ease from our own interface
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 80e037095c1dd32ca7fbfcc40fd7a3e9219b5b63
Author: bim <dsnake(a)protonmail.com>
Date: Wed Feb 3 10:17:52 2021 -0500
removed bridge config from barebones orbot XML settings, bridges can be configured with more ease from our own interface
---
app/src/main/res/values-ar/strings.xml | 2 --
app/src/main/res/values-ay/strings.xml | 3 ---
app/src/main/res/values-az/strings.xml | 2 --
app/src/main/res/values-be/strings.xml | 3 ---
app/src/main/res/values-bg/strings.xml | 2 --
app/src/main/res/values-ca/strings.xml | 3 ---
app/src/main/res/values-cs-rCZ/strings.xml | 2 --
app/src/main/res/values-da/strings.xml | 2 --
app/src/main/res/values-de/strings.xml | 3 ---
app/src/main/res/values-el/strings.xml | 3 ---
app/src/main/res/values-eo/strings.xml | 3 +--
app/src/main/res/values-es-rAR/strings.xml | 3 ---
app/src/main/res/values-es/strings.xml | 3 ---
app/src/main/res/values-et/strings.xml | 2 --
app/src/main/res/values-eu/strings.xml | 3 ---
app/src/main/res/values-fa/strings.xml | 3 ---
app/src/main/res/values-fi/strings.xml | 3 ---
app/src/main/res/values-fr-rFR/strings.xml | 3 ---
app/src/main/res/values-fr/strings.xml | 3 ---
app/src/main/res/values-gl/strings.xml | 3 ---
app/src/main/res/values-he/strings.xml | 3 ---
app/src/main/res/values-hi/strings.xml | 3 ---
app/src/main/res/values-hr/strings.xml | 2 --
app/src/main/res/values-hu/strings.xml | 3 ---
app/src/main/res/values-id/strings.xml | 2 --
app/src/main/res/values-in-rID/strings.xml | 2 --
app/src/main/res/values-is/strings.xml | 3 ---
app/src/main/res/values-it/strings.xml | 3 ---
app/src/main/res/values-iw/strings.xml | 2 --
app/src/main/res/values-ja/strings.xml | 3 ---
app/src/main/res/values-ko/strings.xml | 2 --
app/src/main/res/values-lv/strings.xml | 2 --
app/src/main/res/values-mk/strings.xml | 3 ---
app/src/main/res/values-ms-rMY/strings.xml | 2 --
app/src/main/res/values-ms/strings.xml | 2 --
app/src/main/res/values-nb/strings.xml | 3 ---
app/src/main/res/values-nl/strings.xml | 3 ---
app/src/main/res/values-pl/strings.xml | 3 ---
app/src/main/res/values-pt-rBR/strings.xml | 3 ---
app/src/main/res/values-pt-rPT/strings.xml | 3 ---
app/src/main/res/values-pt/strings.xml | 3 ---
app/src/main/res/values-ro/strings.xml | 2 --
app/src/main/res/values-ru/strings.xml | 3 ---
app/src/main/res/values-si-rLK/strings.xml | 2 --
app/src/main/res/values-sk/strings.xml | 2 --
app/src/main/res/values-sr/strings.xml | 3 ---
app/src/main/res/values-sv/strings.xml | 3 ---
app/src/main/res/values-th/strings.xml | 3 ---
app/src/main/res/values-tl/strings.xml | 2 --
app/src/main/res/values-tr/strings.xml | 3 ---
app/src/main/res/values-uk/strings.xml | 3 ---
app/src/main/res/values-vi/strings.xml | 2 --
app/src/main/res/values-zh-rCN/strings.xml | 3 ---
app/src/main/res/values-zh-rTW/strings.xml | 3 ---
app/src/main/res/values/strings.xml | 3 ---
app/src/main/res/xml/preferences.xml | 16 ----------------
56 files changed, 1 insertion(+), 161 deletions(-)
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index ecc01ea3..55d46f5c 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">استخدم فقط تلك النقاط المحددة</string>
<string name="bridges">الجسور</string>
<string name="use_bridges">استخدم الجسور</string>
- <string name="ip_address_and_port_of_bridges">عنوان الانترنت و المنفذ للجسور</string>
- <string name="enter_bridge_addresses">أدخل عناوين الجسور</string>
<string name="relays">المرحلات</string>
<string name="relaying">يرحل</string>
<string name="enable_your_device_to_be_a_non_exit_relay">اسمح لجهازك ليكون مرحل غير نهائي</string>
diff --git a/app/src/main/res/values-ay/strings.xml b/app/src/main/res/values-ay/strings.xml
index 4345c554..94f23307 100644
--- a/app/src/main/res/values-ay/strings.xml
+++ b/app/src/main/res/values-ay/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Aka sutiñchat puriñawjanakak apnaqam</string>
<string name="bridges">Jalakipañanaka</string>
<string name="use_bridges">Jalakipañanak apnaqaña</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Tor llika manqhan yaqha mantañanak qhantayaña</string>
- <string name="ip_address_and_port_of_bridges">IP ukanakamp jalakipañ apayañ thakhinakampi</string>
- <string name="enter_bridge_addresses">Jalakipañanakan chiqawjanakap qillqantam</string>
<string name="relays">Ch\'iqiyirinaka</string>
<string name="relaying">Apayat ch\'iqiyaña</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Jan uñstir ch\'iqiyirïñapatak dispositivo aqtayam</string>
diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml
index 6d9dfc8c..81e8a670 100644
--- a/app/src/main/res/values-az/strings.xml
+++ b/app/src/main/res/values-az/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">*Yalnız* bu xüsusi kəsişmələri istifadə et</string>
<string name="bridges">Körpülər</string>
<string name="use_bridges">Körpü İstifadə Et</string>
- <string name="ip_address_and_port_of_bridges">Körpülərin IP ünvanı və portu</string>
- <string name="enter_bridge_addresses">Körpü Ünvanlarını Daxil et</string>
<string name="relays">Keçidlər</string>
<string name="relaying">Keçidləmə</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Cihazının son-keçid funksiyasını aktivləşdir</string>
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index 4e45235e..db227e13 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Выкарыстоўваць *толькі* гэтыя зададзеныя вузлы</string>
<string name="bridges">Масты</string>
<string name="use_bridges">Выкарыстоўваць масты</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Уключыць альтэрнатыўныя ўваходныя вузлы ў сетку Tor</string>
- <string name="ip_address_and_port_of_bridges">IP-адрасы і парты мастоў</string>
- <string name="enter_bridge_addresses">Увядзіце адрасы мастоў</string>
<string name="relays">Рэтранслятары</string>
<string name="relaying">Рэтрансляцыя</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Дазволіць вашай прыладзе быць невыходным рэтранслятарам</string>
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 843911ce..6892262d 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Използвай *само* изброените node-ве</string>
<string name="bridges">Бриджове</string>
<string name="use_bridges">Използвай Бриджове</string>
- <string name="ip_address_and_port_of_bridges">IP адрес и порт на бриджове</string>
- <string name="enter_bridge_addresses">Въведи адреси на бриджове</string>
<string name="relays">Препращачи(Relays)</string>
<string name="relaying">Препращане</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Разреши устройството ти да бъде не изходен препращач</string>
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 734b1619..01e1b3a4 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Utilitza *només* aquests nodes especificats</string>
<string name="bridges">Ponts</string>
<string name="use_bridges">Utilitza ponts</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activar entrades alternes a la xarxa Tor</string>
- <string name="ip_address_and_port_of_bridges">Adreça IP i port dels ponts</string>
- <string name="enter_bridge_addresses">Introduïu les adreces del pont</string>
<string name="relays">Reemissors</string>
<string name="relaying">Reemissió</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Activa el vostre dispositiu per ser un reemissor sense sortida</string>
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index 74ee8ca1..88f17543 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Použít *pouze* tyto specifické nody</string>
<string name="bridges">Bridge</string>
<string name="use_bridges">Použít bridge</string>
- <string name="ip_address_and_port_of_bridges">IP adresy a porty bridgů</string>
- <string name="enter_bridge_addresses">Zadejte adresy bridgů</string>
<string name="relays">Relé</string>
<string name="relaying">Používání relé</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Spuštění zařízení jako neodchozího relé</string>
diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml
index b80d5735..3d77ae62 100644
--- a/app/src/main/res/values-da/strings.xml
+++ b/app/src/main/res/values-da/strings.xml
@@ -65,8 +65,6 @@
<string name="use_only_these_specified_nodes">Brug *kun* disse specificerede punkter</string>
<string name="bridges">Broer</string>
<string name="use_bridges">Brug broer</string>
- <string name="ip_address_and_port_of_bridges">IP adresser og porte på broer</string>
- <string name="enter_bridge_addresses">Indtast bro-adresser</string>
<string name="relays">Relæer</string>
<string name="relaying">Relæfunktion</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Lad denne enhed være et ikke-udgangs relæ</string>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 1cfaf26f..06fb7220 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">*Nur* diese angegebenen Netzknoten nutzen</string>
<string name="bridges">Brücken</string>
<string name="use_bridges">Brücken benutzen</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Alternative Zugangswege ins Tor-Netzwerk aktivieren</string>
- <string name="ip_address_and_port_of_bridges">IP-Adresse und Port der Brücken</string>
- <string name="enter_bridge_addresses">Brückenadressen eingeben</string>
<string name="relays">Relais</string>
<string name="relaying">Weiterleitung</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Ihr Gerät als Nichtausgangsrelais aktivieren</string>
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 92e1fbf7..617fa00e 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Χρήση *μόνον* αυτών των συγκεκριμένων κόμβων</string>
<string name="bridges">Γέφυρες</string>
<string name="use_bridges">Χρήση γεφυρών</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ενεργοποίηση εναλλακτικών κόμβων εισόδου στο δίκτυο Tor</string>
- <string name="ip_address_and_port_of_bridges">Διεύθυνση ΙΡ και θύρα των γεφυρών</string>
- <string name="enter_bridge_addresses">Εισάγετε την διεύθυνση της γέφυρας</string>
<string name="relays">Αναμεταδότες</string>
<string name="relaying">Γίνεται αναμετάδοση</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Μετατρέψτε την συσκευή σας σε ένα αναμεταδότη μη-εξόδου</string>
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 4dd26485..c543030c 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -55,8 +55,7 @@
<string name="use_only_these_specified_nodes">Uzi *nur* tiujn ĉi nodojn</string>
<string name="bridges">Pontoj</string>
<string name="use_bridges">Uzi Pontojn</string>
- <string name="ip_address_and_port_of_bridges">IP-adresoj kaj pordoj de pontoj</string>
- <string name="enter_or_port">Entajpu OR-pordon</string>
+ <string name="enter_or_port">Entajpu OR-pordon</string>
<string name="relay_nickname">Kaŝnomo de la relajso</string>
<string name="the_nickname_for_your_tor_relay">Kaŝnomo por via Tor-relajso</string>
<string name="enter_a_custom_relay_nickname">Entajpu propran kaŝnomon de la relajso</string>
diff --git a/app/src/main/res/values-es-rAR/strings.xml b/app/src/main/res/values-es-rAR/strings.xml
index ad1fbc05..b3f1e95a 100644
--- a/app/src/main/res/values-es-rAR/strings.xml
+++ b/app/src/main/res/values-es-rAR/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">utilice *solo* estos nodos especificos </string>
<string name="bridges">puentes</string>
<string name="use_bridges">usar puentes</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilitar entradas alternativas en la red de Tor</string>
- <string name="ip_address_and_port_of_bridges">direccion IP y puerto de puentes</string>
- <string name="enter_bridge_addresses">introduzca las direcciones de puente</string>
<string name="relays">retransmitir</string>
<string name="relaying">retransmision </string>
<string name="enable_your_device_to_be_a_non_exit_relay">Habilite su dispositivo para que sea retransmision sin salida</string>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index d1ada60e..3a040826 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Usar *sólo* estos nodos especificados</string>
<string name="bridges">Bridges (repetidores puente) </string>
<string name="use_bridges">Usar bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Habilitar entradas alternativas hacia el interior de la red Tor</string>
- <string name="ip_address_and_port_of_bridges">Direcciones IP y puertos de los bridges</string>
- <string name="enter_bridge_addresses">Introduzca direcciones de bridge</string>
<string name="relays">Repetidores</string>
<string name="relaying">Repetición de tráfico</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Habilitar que su dispositivo no sea repetidor de salida (de la red Tor) </string>
diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml
index 22cadc69..a718a5a1 100644
--- a/app/src/main/res/values-et/strings.xml
+++ b/app/src/main/res/values-et/strings.xml
@@ -62,8 +62,6 @@
<string name="use_only_these_specified_nodes">Kasuta *ainult* neid märgitud sõlmi</string>
<string name="bridges">Sillad</string>
<string name="use_bridges">Kasuta sildu</string>
- <string name="ip_address_and_port_of_bridges">Sildade IP aadressid ja pordinumbrid</string>
- <string name="enter_bridge_addresses">Sisestage silla aadressid</string>
<string name="relays">Edastajad</string>
<string name="relaying">Edastamine</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Luba oma seadmel hakata mitte-väljund edastajaks</string>
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 49653869..8ae44b68 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Erabili *bakarrik* zehaztutako nodo hauek</string>
<string name="bridges">Zubiak</string>
<string name="use_bridges">Erabili zubiak</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Gaitu ordezko sarrerak Tor sarera</string>
- <string name="ip_address_and_port_of_bridges">Zubien IP helbidea eta ataka</string>
- <string name="enter_bridge_addresses">Sartu zubien helbideak</string>
<string name="relays">Erreleak</string>
<string name="relaying">Erreleatzea</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Gaitu zure gailua ez-irteerako errelea izatea</string>
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index a3d49674..2131daba 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">فقط * از این گره های مشخص شده استفاده کنید* </string>
<string name="bridges">Bridges</string>
<string name="use_bridges">از پل Bridges کن</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">ورودیهای جایگزین به شبکه تور را فعال کن</string>
- <string name="ip_address_and_port_of_bridges">آدرس آی پی و پورتِ پل ها</string>
- <string name="enter_bridge_addresses">آدرس Bridges را وارد کنید</string>
<string name="relays">بازپخش کننده ها</string>
<string name="relaying">درحال بازپخش</string>
<string name="enable_your_device_to_be_a_non_exit_relay">دستگاه خود را برای یک بازپخش کننده غیر-خروجی فعال کنید</string>
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index ead60538..035935e7 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Käytä *vain* näitä solmuja</string>
<string name="bridges">Sillat</string>
<string name="use_bridges">Käytä siltoja</string>
- <string name="ip_address_and_port_of_bridges">Siltojen IP-osoitteet ja portit</string>
- <string name="enter_bridge_addresses">Kirjoita siltaosoitteet</string>
<string name="relays">Releet</string>
<string name="relaying">Releytys</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Ota laitteesi käyttöön välireleenä</string>
@@ -128,7 +126,6 @@
<string name="disable">Poista käytöstä</string>
<string name="enable">Ota käyttöön</string>
<string name="wizard_details_msg">Orbot on avoimen lähdekoodin sovellus, joka sisältää Tor, Obfs4Proxy, BadVPN Tun2Socks, LibEvent ja Polipo. Se tarjoaa paikallisen HTTP-välityspalvelimen (8118) ja SOCKS-välityspalvelimen (9050) Tor-verkkoon. Orbotilla on myös ominaisuus, rootattulla laitteella, lähettää kaiken Internet-liikenteen Torin kautta.</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ota käyttöön vaihtoehtoiset sisäänkäynnit Tor-verkkoon</string>
<string name="obfsproxy_version">Obfs4proxy: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL: http://www.openssl.org</string>
<string name="hidden_service_request">Sovellus haluaa avata sipulipalvelimen portin %1$s Tor-verkkoon. Tämä on turvallista, jos luotat sovellukseen.</string>
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index 6f65958b..fe90952a 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">N’utiliser *que* ces nœuds précis</string>
<string name="bridges">Ponts</string>
<string name="use_bridges">Utiliser des ponts</string>
- <string name="ip_address_and_port_of_bridges">Adresse IP et port des ponts</string>
- <string name="enter_bridge_addresses">Saisir les adresses des ponts</string>
<string name="relays">Relais</string>
<string name="relaying">Relais</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Faire de votre appareil un relais de non-sortie</string>
@@ -122,7 +120,6 @@
<string name="name">Name</string>
<string name="please_restart_Orbot_to_enable_the_changes">Veuillez redémarrer Orbot pour activer les changements</string>
<string name="wizard_details_msg">Orbot est une application à code source ouvert qui comprend Tor, Obfs4Proxy, BadVPN Tun2Socks et LibEvent. Elle fournit un mandataire HTTP local (8118) et un mandataire SOCKS (9050) vers le réseau Tor. Sur un appareil débridé, Orbot peut aussi faire passer tout le trafic Internet par Tor.</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activer les entrées auxiliaires vers le réseau Tor</string>
<string name="obfsproxy_version">Obfs4proxy : https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL : http://www.openssl.org</string>
<string name="hidden_service_request">Une appli veut ouvrir le port %1$s du serveur onion vers le réseau Tor. Cette action est sûre si vous faites confiance à cette appli.</string>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index dbc39e3f..0b59592f 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Utiliser *uniquement * ces nœuds spécifiés</string>
<string name="bridges">Ponts</string>
<string name="use_bridges">Utiliser des ponts</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activer les entrées de remplacement vers le réseau Tor</string>
- <string name="ip_address_and_port_of_bridges">Adresse IP et port des ponts</string>
- <string name="enter_bridge_addresses">Saisir les adresses des ponts</string>
<string name="relays">Relais</string>
<string name="relaying">Relais</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Configurez votre appareil pour être un relais de non-sortie</string>
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 03e4e8c0..07e7bf3b 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Usar *só* este nodos específicos</string>
<string name="bridges">Pontes</string>
<string name="use_bridges">Usar Pontes</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Activar entradas alternativas a rede Tor</string>
- <string name="ip_address_and_port_of_bridges">Dirección IP e porto das pontes</string>
- <string name="enter_bridge_addresses">Introduza Direccións das Pontes</string>
<string name="relays">Reenvíos</string>
<string name="relaying">Reenvío</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Habilite o seu dispositivo para ser un reenvío non de saída</string>
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index 253b2b4e..4706ce98 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">השתמש *רק* בצמתים מצוינים אלו</string>
<string name="bridges">גשרים</string>
<string name="use_bridges">השתמש בגשרים</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">אפשר כניסות חלופיות לתוך רשת Tor</string>
- <string name="ip_address_and_port_of_bridges">כתובת IP ופתחה של גשרים</string>
- <string name="enter_bridge_addresses">הכנס כתובות גשר</string>
<string name="relays">ממסרים</string>
<string name="relaying">ממסור</string>
<string name="enable_your_device_to_be_a_non_exit_relay">אפשר למכשיר שלך להיות תחנת ממסר שאיננה יציאה</string>
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 79e4af38..2290a2b9 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -68,9 +68,6 @@
<string name="use_only_these_specified_nodes">* केवल * इन निर्दिष्ट नोड्स का उपयोग करें</string>
<string name="bridges">पुल</string>
<string name="use_bridges">पुल का उपयोग करें</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">टोरी नेटवर्क में वैकल्पिक प्रवेश द्वार सक्षम करें</string>
- <string name="ip_address_and_port_of_bridges">आईपी पता और पुल का बंदरगाह</string>
- <string name="enter_bridge_addresses">ब्रिज पते दर्ज करें</string>
<string name="relays">रिले</string>
<string name="relaying">रिलेइंग</string>
<string name="enable_your_device_to_be_a_non_exit_relay">अपने डिवाइस को गैर-बाहर निकलें रिले होने के लिए सक्षम करें</string>
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index 2299594f..ecd7321e 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Koristi *samo* ove navedene čvorove</string>
<string name="bridges">Mostovi</string>
<string name="use_bridges">Koristi Mostove</string>
- <string name="ip_address_and_port_of_bridges">IP adresa i port mostova</string>
- <string name="enter_bridge_addresses">Unesi Adrese Mostova</string>
<string name="relays">Releji</string>
<string name="relaying">Prenošenje</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Omogućite svom uređaju da bude ne-izlazni relej</string>
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index afd3a737..b567a4f2 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">*Csak* ezeknek a megadott csomópontoknak a használata</string>
<string name="bridges">Hidak</string>
<string name="use_bridges">Hidak használata</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">A Tor hálózat bejáratok váltogatásának engedélyezése </string>
- <string name="ip_address_and_port_of_bridges">A hidak IP címe és portja</string>
- <string name="enter_bridge_addresses">Add meg a híd címeit</string>
<string name="relays">Átjátszók</string>
<string name="relaying">Átjátszás</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Engedélyezd az eszközödnek, hogy nem-átjátszó elosztó legyen</string>
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 161b3590..550517cc 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Pakai *hanya* spesifik node</string>
<string name="bridges">Bridges</string>
<string name="use_bridges">Pakai Bridges</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan port bridges</string>
- <string name="enter_bridge_addresses">Memasuki Alamat Bridge</string>
<string name="relays">Relays</string>
<string name="relaying">Sedang me-Relay</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Nyalakan perangkat anda menjadi non-exit relay</string>
diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml
index ec6674b7..e77dfaf1 100644
--- a/app/src/main/res/values-in-rID/strings.xml
+++ b/app/src/main/res/values-in-rID/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Pakai *hanya* spesifik node</string>
<string name="bridges">Bridges</string>
<string name="use_bridges">Pakai Bridges</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan port bridges</string>
- <string name="enter_bridge_addresses">Memasuki Alamat Bridge</string>
<string name="relays">Relays</string>
<string name="relaying">Sedang me-Relay</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Nyalakan perangkat anda menjadi non-exit relay</string>
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index 929f15ae..a3577a1c 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Nota *aðeins* þessa tilteknu punkta</string>
<string name="bridges">Brýr</string>
<string name="use_bridges">Nota brýr</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Virkjaðu varaleiðir inn á Tor-netið</string>
- <string name="ip_address_and_port_of_bridges">IP-vistfang og brúargáttir</string>
- <string name="enter_bridge_addresses">Settu inn vistföng fyrir brýr</string>
<string name="relays">Endurvarpar</string>
<string name="relaying">Endurvörpun</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Leyfa tækinu þínu að vera útgangslaus endurvarpi</string>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 93a4c0e9..a63a8086 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Utilizza *solo* i nodi specificati</string>
<string name="bridges">Bridge</string>
<string name="use_bridges">Utilizza i bridge</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Attiva entrate alternate nella rete Tor</string>
- <string name="ip_address_and_port_of_bridges">Indirizzo IP e porta dei bridge</string>
- <string name="enter_bridge_addresses">Inserire gli indirizzi dei bridge</string>
<string name="relays">Relays (Inoltratori)</string>
<string name="relaying">Relaying (Inoltro)</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Abilita il tuo dispositivo per essere un relay non di uscita</string>
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index c772f2b7..b71b379e 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -59,8 +59,6 @@
<string name="use_only_these_specified_nodes">השתמש *רק* בצמתים מצוינים אלו</string>
<string name="bridges">גשרים</string>
<string name="use_bridges">השתמש בגשרים</string>
- <string name="ip_address_and_port_of_bridges">כתובת ה-IP ויציאה של הגשרים</string>
- <string name="enter_bridge_addresses">הכנס כתובות גשר</string>
<string name="relays">ממסרים</string>
<string name="relaying">ממסור</string>
<string name="enable_your_device_to_be_a_non_exit_relay">אפשר למכשיר שלך להיות תחנת ממסר שאיננה יציאה</string>
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 7e9d6f8f..df9a15a0 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">ここに指定したノードのみを使用</string>
<string name="bridges">ブリッジ</string>
<string name="use_bridges">ブリッジを使う</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Torネットワークへの代替入口を有効化</string>
- <string name="ip_address_and_port_of_bridges">ブリッジのIPアドレスとポート</string>
- <string name="enter_bridge_addresses">ブリッジのアドレスを入力</string>
<string name="relays">リレー</string>
<string name="relaying">リレー中</string>
<string name="enable_your_device_to_be_a_non_exit_relay">この端末を非出口リレーにする</string>
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 3d169dcd..75fb06bd 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">이 특정한 노드*만* 사용합니다.</string>
<string name="bridges">중계서버</string>
<string name="use_bridges">중계서버 사용</string>
- <string name="ip_address_and_port_of_bridges">중계서버의 IP 주소와 </string>
- <string name="enter_bridge_addresses">중게서버 주소 입력</string>
<string name="relays">중계서버</string>
<string name="relaying">중계</string>
<string name="enable_your_device_to_be_a_non_exit_relay">귀하의 장치를 출구가 아닌 중계서버로 활성화</string>
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
index 04117f3e..a28009ce 100644
--- a/app/src/main/res/values-lv/strings.xml
+++ b/app/src/main/res/values-lv/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Izmantojiet *vienīgi* šos norādītos mezglus</string>
<string name="bridges">Tilti</string>
<string name="use_bridges">Lietot tiltus</string>
- <string name="ip_address_and_port_of_bridges">Tiltu ports un IP addrese</string>
- <string name="enter_bridge_addresses">Ievadiet tiltu adreses</string>
<string name="relays">Retranslatori</string>
<string name="relaying">Retranslēšana</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Iespējot Jūsu iekārtu par bezapstājas retranslatoru</string>
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index b8371e62..39c4a3ed 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Користете ги *само* овие наведени јазли</string>
<string name="bridges">Мостови</string>
<string name="use_bridges">Користи мостови</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Овозможи алтернативен влезови на Tor мрежата</string>
- <string name="ip_address_and_port_of_bridges">IP-адреса и порта на мостовите</string>
- <string name="enter_bridge_addresses">Внесете адреси на мостовите</string>
<string name="relays">Релеи</string>
<string name="relaying">Препраќање</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Овозможи го уредот да биде реле без излез</string>
diff --git a/app/src/main/res/values-ms-rMY/strings.xml b/app/src/main/res/values-ms-rMY/strings.xml
index e6a87012..0a0ce49b 100644
--- a/app/src/main/res/values-ms-rMY/strings.xml
+++ b/app/src/main/res/values-ms-rMY/strings.xml
@@ -60,8 +60,6 @@
<string name="use_only_these_specified_nodes">Guna *hanya* nod-nod ini</string>
<string name="bridges">Jambatan</string>
<string name="use_bridges">Guna Jambatan</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan pelabuhan jambatan</string>
- <string name="enter_bridge_addresses">Masukkan Alamat Jambatan</string>
<string name="relays">Relays</string>
<string name="relaying">Relaying</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Membolehkan peranti anda untuk menjadi geganti bukan keluar</string>
diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml
index d018f812..01d411b4 100644
--- a/app/src/main/res/values-ms/strings.xml
+++ b/app/src/main/res/values-ms/strings.xml
@@ -52,8 +52,6 @@
<string name="use_only_these_specified_nodes">Guna *hanya* nod-nod ini</string>
<string name="bridges">Jambatan</string>
<string name="use_bridges">Guna Jambatan</string>
- <string name="ip_address_and_port_of_bridges">Alamat IP dan pelabuhan jambatan</string>
- <string name="enter_bridge_addresses">Masukkan Alamat Jambatan</string>
<string name="relays">Relays</string>
<string name="relaying">Relaying</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Membolehkan peranti anda untuk menjadi geganti bukan keluar</string>
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index b4b00835..22bfbb5f 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Bruk *bare* disse angitte nodene</string>
<string name="bridges">Broer</string>
<string name="use_bridges">Bruk broer</string>
- <string name="ip_address_and_port_of_bridges">IP-adresser og broporter</string>
- <string name="enter_bridge_addresses">Skriv inn broadresser</string>
<string name="relays">Reléer</string>
<string name="relaying">Videresending</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Aktiver enheten din som et rutingsstafettoppsett uten utgående trafikk</string>
@@ -155,7 +153,6 @@
<string name="full_device_vpn">VPN for hele enheten</string>
<string name="vpn_disabled">VPN Deaktivert</string>
<string name="wizard_details_msg">Orbot er et fritt program som inneholder Tor, Obfs4Proxy, BadVPN Tun2Socks, LibEvent og Polipo. Den gir en lokal HTTP-proxy (8118) og en SOCKS-mellomtjener (9050) inn i Tor-nettverket. Orbot har også muligheten til å sende all Internett-trafikk gjennom Tor på enheter med superbrukertilgang.</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Aktiver alternative innganger til Tor-nettverket</string>
<string name="hidden_service_request">Et program ønsker å åpne løktjenerport %1$s til Tor-nettverket. Dette er trygt såfremt du stoler på programmet.</string>
<string name="pref_open_proxy_on_all_interfaces_title">Åpne proxy på alle grensesnitt</string>
<string name="pref_http_title">Tor HTTP</string>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 68ab5930..53dec601 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Gebruik *enkel* deze opgegeven nodes</string>
<string name="bridges">Bridges</string>
<string name="use_bridges">Gebruik bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Alternatieve toegangen tot het Tor-netwerk inschakelen</string>
- <string name="ip_address_and_port_of_bridges">IP-adres en poort van bridges</string>
- <string name="enter_bridge_addresses">Voer bridge-adres in</string>
<string name="relays">Relays</string>
<string name="relaying">Relayen</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Stel je toestel in staat om een non-exit relay te zijn</string>
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index c1438138..7b21da06 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Użyj *tylko* tych określonych węzłów</string>
<string name="bridges">Mostki</string>
<string name="use_bridges">Użyj mostków</string>
- <string name="ip_address_and_port_of_bridges">Adres IP i port mostków</string>
- <string name="enter_bridge_addresses">Wpisz adresy mostków</string>
<string name="relays">Przekaźniki</string>
<string name="relaying">Przekazywanie</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Pozwól swojemu urządzeniu zostać bezwyjściowym przekaźnikiem</string>
@@ -130,7 +128,6 @@
<string name="please_restart_Orbot_to_enable_the_changes">Proszę zrestartować Orbot, aby zmiany mogły wejść w życie</string>
<string name="disable">Wyłącz</string>
<string name="enable">Włącz</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Włącz alternatywne wejścia do sieci Tor</string>
<string name="pref_open_proxy_on_all_interfaces_title">Otwórz serwer proxy na wszystkich interfejsach</string>
<string name="pref_http_dialog">Konfiguracja portu HTTP</string>
<string name="pref_http_title">Tor HTTP</string>
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 6208a885..01d46ec5 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Use *somente* estes nós específicos</string>
<string name="bridges">Pontes</string>
<string name="use_bridges">Usar Pontes</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ative as entradas alternativas para a Rede Tor</string>
- <string name="ip_address_and_port_of_bridges">Endereço IP e as porta das pontes</string>
- <string name="enter_bridge_addresses">Insira os Endereços das Pontes</string>
<string name="relays">Retransmissores</string>
<string name="relaying">Retransmitindo</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Ativar o seu dispositivo para não ser um retransmissor de saída</string>
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 246c52aa..1feb7f3b 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -111,7 +111,6 @@
<string name="bridges_updated">Pontes Atualizadas</string>
<string name="pref_proxy_host_title">Anfitrião Proxy de Saída</string>
<string name="pref_proxy_host_dialog">Inserir Hospedeiro Proxy</string>
- <string name="ip_address_and_port_of_bridges">Endereço de IP e porta das pontes</string>
<string name="pref_proxy_password_summary">Senha do Proxy (Opcional)</string>
<string name="project_home">Projeto Home(s):</string>
<string name="pref_proxy_type_title">Tipo de Proxy de Saída</string>
@@ -178,8 +177,6 @@
<string name="relay_port">Porta Retransmissora</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Ativar o seu aparelho para ser um retransmissor de sem saída</string>
<string name="relaying">Retransmitindo</string>
- <string name="enter_bridge_addresses">Insira os Endereços das Pontes</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ative as entradas alternativas para a Rede Tor</string>
<string name="strict_nodes">Nós Estritos</string>
<string name="fingerprints_nicks_countries_and_addresses_to_exclude">Impressões digitais, apelidos, países e endereços para excluir</string>
<string name="fingerprints_nicks_countries_and_addresses_for_the_last_hop">Impressões digitais, apelidos, países e endereços para a última etapa</string>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 66764a46..c4c6cf7d 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -47,7 +47,6 @@
<string name="error">Erro</string>
<string name="bridges">Pontes</string>
<string name="use_bridges">Usar Pontes</string>
- <string name="ip_address_and_port_of_bridges">Endereço de IP e porta das pontes</string>
<string name="enter_or_port">Inserir OU porta</string>
<string name="reachable_ports">Portas alcançáveis</string>
<string name="ports_reachable_behind_a_restrictive_firewall">Portas alcançáveis por detrás de uma Firewal restritiva</string>
@@ -169,8 +168,6 @@
<string name="enable_your_device_to_be_a_non_exit_relay">Ativar o seu aparelho para ser um retransmissor de sem saída</string>
<string name="relaying">Retransmitindo</string>
<string name="relays">Retransmissores</string>
- <string name="enter_bridge_addresses">Insira os Endereços das Pontes</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Ative as entradas alternativas para a Rede Tor</string>
<string name="use_only_these_specified_nodes">Use *somente* estes nós específicos</string>
<string name="strict_nodes">Nós Estritos</string>
<string name="enter_exclude_nodes">Digite Nós Excluídos</string>
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 082f971d..e7873128 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Foloseste *doar* nodurile specificate</string>
<string name="bridges">Punţi</string>
<string name="use_bridges">Foloseşte punţi</string>
- <string name="ip_address_and_port_of_bridges">Adresa IP şi port pentru punţi</string>
- <string name="enter_bridge_addresses">Introdu adresa pentru punte</string>
<string name="relays">Comutatoare</string>
<string name="relaying">Comutare</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Activeaza dispozitivul sa fie un comutator fara iesire</string>
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index d07bfe88..fe3fdab2 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Использовать *только* эти заданные узлы</string>
<string name="bridges">Мосты</string>
<string name="use_bridges">Использовать мосты</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Включить альтернативные входные узлы в сеть Tor</string>
- <string name="ip_address_and_port_of_bridges">IP-адреса и порты мостов</string>
- <string name="enter_bridge_addresses">Введите адреса мостов</string>
<string name="relays">Ретрансляторы</string>
<string name="relaying">Ретрансляция</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Разрешить вашему устройству быть невыходным ретранслятором</string>
diff --git a/app/src/main/res/values-si-rLK/strings.xml b/app/src/main/res/values-si-rLK/strings.xml
index c9eea93d..d36c0885 100644
--- a/app/src/main/res/values-si-rLK/strings.xml
+++ b/app/src/main/res/values-si-rLK/strings.xml
@@ -55,8 +55,6 @@
<string name="use_only_these_specified_nodes">ඉහත සදහන් නොඩු *පමණක්* භාවිතා කරන්න </string>
<string name="bridges">සේතු</string>
<string name="use_bridges">සේතු භාවිතා කරන්න </string>
- <string name="ip_address_and_port_of_bridges">IP ලිපිනය හා සේතුවල පෝට</string>
- <string name="enter_bridge_addresses">සේතු ලිපිනයන් ඇතුළු කරන්න </string>
<string name="relays">ප්රතියෝජකය</string>
<string name="relaying">ප්රතියෝජනය </string>
<string name="enable_your_device_to_be_a_non_exit_relay">ඔබේ උපාංගය නික්ම-නොයන ප්රතියෝජකයක් බවට සබල කරන්න </string>
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index a0dcbdeb..95117ec2 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">Použiť *len* tieto špecifikované uzly</string>
<string name="bridges">Premostenia</string>
<string name="use_bridges">Použiť premostenia</string>
- <string name="ip_address_and_port_of_bridges">IP adresy a porty premostení</string>
- <string name="enter_bridge_addresses">Vložiť adresy premostení</string>
<string name="relays">Relé</string>
<string name="relaying">Postúpenie relé</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Povoliť, aby nebolo vaše zariadenie východiskovým relé / non-exit</string>
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 7065d1db..5361a70e 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Користи САМО ове наведене чворове</string>
<string name="bridges">Мостови</string>
<string name="use_bridges">Користи bridge</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Омогућите алтернативне улазе у Тор мрежу</string>
- <string name="ip_address_and_port_of_bridges">IP адреса и порт bridge-а</string>
- <string name="enter_bridge_addresses">Унесите bridge адресу </string>
<string name="relays">Релеји</string>
<string name="relaying">Релејирање</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Омогућите вашем уређају да буде релеј без излаза</string>
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index e85aac53..0eca52c5 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Använd *enbart* dessa specificerade noder</string>
<string name="bridges">Broar</string>
<string name="use_bridges">Använd Broar</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Aktivera alternativa ingångar i Tor-nätverket</string>
- <string name="ip_address_and_port_of_bridges">IP adress och port för broar</string>
- <string name="enter_bridge_addresses">Skriv in Bro Adresser</string>
<string name="relays">Reläer</string>
<string name="relaying">Överföring</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Aktivera din enhet till att vara ett icke-utgångsrelä</string>
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index f4837520..f19efe27 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">ใช้ *เฉพาะ* โหนดที่ระบุเหล่านี้เท่านั้น</string>
<string name="bridges">Bridges</string>
<string name="use_bridges">ใช้งาน Bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">เปิดใช้งานทางเข้าอื่นเข้าสู่เครือข่าย Tor</string>
- <string name="ip_address_and_port_of_bridges">ที่อยู่ไอพีและพอร์ตของ Bridges</string>
- <string name="enter_bridge_addresses">ระบุที่อยู่ของ Bridge</string>
<string name="relays">รีเลย์</string>
<string name="relaying">การรีเลย์</string>
<string name="enable_your_device_to_be_a_non_exit_relay">ทำให้อุปกรณ์ของคุณทำงานเป็นรีเลย์แบบไม่ใช่ทางออก</string>
diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml
index 4102384f..13709dba 100644
--- a/app/src/main/res/values-tl/strings.xml
+++ b/app/src/main/res/values-tl/strings.xml
@@ -63,8 +63,6 @@
<string name="use_only_these_specified_nodes">Gumamit ng *only* sa mga ispesipikong nodes </string>
<string name="bridges">Bridges</string>
<string name="use_bridges">Gumamit ng Bridges</string>
- <string name="ip_address_and_port_of_bridges">IP address at port ng bridges</string>
- <string name="enter_bridge_addresses">Ilagay ang Bridge Addresses</string>
<string name="relays">Relays</string>
<string name="relaying">Relaying</string>
<string name="enable_your_device_to_be_a_non_exit_relay">I-enable ang iyong device na non-exit relay</string>
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index f68726b6..0fb7d35e 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">*Yalnız* bu düğümler kullanılsın</string>
<string name="bridges">Köprüler</string>
<string name="use_bridges">Köprüleri Kullan</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Alternatif Tor ağı girişleri kullanılabilsin</string>
- <string name="ip_address_and_port_of_bridges">Köprülerin IP adresleri ve bağlantı noktaları</string>
- <string name="enter_bridge_addresses">Köprü Adreslerini Girin</string>
<string name="relays">Aktarıcılar</string>
<string name="relaying">Aktarım</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Aygıtınız çıkış yapmayan bir aktarıcı olarak kullanılsın</string>
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 282f849f..24b3c0ee 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">Використовувати *тільки* ці задані вузли</string>
<string name="bridges">Мости</string>
<string name="use_bridges">Використати Мости</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Увімкніть альтернативні входи у мережу Tor</string>
- <string name="ip_address_and_port_of_bridges">IP адреси і порти мостів</string>
- <string name="enter_bridge_addresses">Введіть Адреси Мостів</string>
<string name="relays">Ретранслятори</string>
<string name="relaying">Ретрансляція</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Дозволити вашому пристрою бути невихідним ретранслятором</string>
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 2832e816..776c07dc 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">*Chỉ* dùng những nút được liệt kê</string>
<string name="bridges">Bridge</string>
<string name="use_bridges">Dùng bridge</string>
- <string name="ip_address_and_port_of_bridges">Địa chỉ IP và cổng của bridge</string>
- <string name="enter_bridge_addresses">Nhập địa chỉ bridge</string>
<string name="relays">Relay</string>
<string name="relaying">Chức năng relay</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Cho phép thiết bị bạn trở thành một nút relay (không phải nút cuối)</string>
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 18d95a37..c39790ff 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -66,8 +66,6 @@
<string name="use_only_these_specified_nodes">仅使用这些指定节点</string>
<string name="bridges">网桥</string>
<string name="use_bridges">使用网桥</string>
- <string name="ip_address_and_port_of_bridges">网桥的 IP 地址和端口</string>
- <string name="enter_bridge_addresses">输入网桥地址</string>
<string name="relays">中继</string>
<string name="relaying">中继转发</string>
<string name="enable_your_device_to_be_a_non_exit_relay">使您的设备成为非出口中继</string>
@@ -185,7 +183,6 @@
<string name="title_activity_hidden_services">洋葱服务</string>
<string name="hidden_services">洋葱服务</string>
<string name="hidden_service_request">一个应用程序想要打开洋葱服务器%1$s端口到Tor网络。如果你信任这个应用程序,这是安全的。</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">启用进入Tor网络的备用入口</string>
<string name="pref_connection_padding">连接填充</string>
<string name="hosted_services">托管的服务</string>
<string name="onion">.onion 地址</string>
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 0a67881b..27a23c4c 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -67,9 +67,6 @@
<string name="use_only_these_specified_nodes">「只」使用這些節點</string>
<string name="bridges">網橋(Bridges)</string>
<string name="use_bridges">使用網橋</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">啟動替代的入口來進入 Tor 網路</string>
- <string name="ip_address_and_port_of_bridges">網橋的 IP 位址與連接埠</string>
- <string name="enter_bridge_addresses">輸入網橋位址</string>
<string name="relays">中繼(Relays)</string>
<string name="relaying">中繼設定</string>
<string name="enable_your_device_to_be_a_non_exit_relay">啟用您的裝置成為 Tor 網路的中繼節點(非出口節點)</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c9fc00a6..90dde59a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -75,9 +75,6 @@
<string name="use_only_these_specified_nodes">Use *only* these specified nodes</string>
<string name="bridges">Bridges</string>
<string name="use_bridges">Use Bridges</string>
- <string name="enable_alternate_entrance_nodes_into_the_tor_network">Enable alternate entrances into the Tor Network</string>
- <string name="ip_address_and_port_of_bridges">IP address and port of bridges</string>
- <string name="enter_bridge_addresses">Enter Bridge Addresses</string>
<string name="relays">Relays</string>
<string name="relaying">Relaying</string>
<string name="enable_your_device_to_be_a_non_exit_relay">Enable your device to be a non-exit relay</string>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index a8c078bc..506e9d9b 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -115,22 +115,6 @@
android:summary="@string/use_only_these_specified_nodes"
android:title="@string/strict_nodes" />
- </PreferenceCategory>
- <PreferenceCategory android:title="@string/bridges">
-
- <CheckBoxPreference
- android:defaultValue="false"
- android:key="pref_bridges_enabled"
- android:summary="@string/enable_alternate_entrance_nodes_into_the_tor_network"
- android:title="@string/use_bridges" />
-
- <EditTextPreference
- android:dialogTitle="@string/enter_bridge_addresses"
- android:inputType="textMultiLine|textNoSuggestions"
- android:key="pref_bridges_list"
- android:summary="@string/ip_address_and_port_of_bridges"
- android:title="@string/bridges" />
-
</PreferenceCategory>
<PreferenceCategory android:title="@string/relays">
1
0
commit a8b3e167b369e525fb678698344e3d694d7e0d95
Author: bim <dsnake(a)protonmail.com>
Date: Wed Jan 27 20:00:11 2021 -0500
dialog for adding v3 base32 key hashes
---
app/src/main/AndroidManifest.xml | 8 +++
.../org/torproject/android/OrbotMainActivity.java | 3 +
.../ui/hiddenservices/ClientCookiesActivity.java | 3 +-
.../AddV3ClientAuthDialogFragment.java | 80 ++++++++++++++++++++++
.../ui/v3onionservice/V3ClientAuthActivity.java | 25 +++++++
app/src/main/res/layout/activity_v3auth.xml | 36 ++++++++++
.../main/res/layout/dialog_add_v3_client_auth.xml | 33 +++++++++
app/src/main/res/menu/orbot_main.xml | 7 +-
app/src/main/res/values/strings.xml | 2 +
9 files changed, 194 insertions(+), 3 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0f69c722..51fc720a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -103,6 +103,14 @@
android:value=".OrbotMainActivity" />
</activity>
+ <activity android:name=".ui.v3onionservice.V3ClientAuthActivity"
+ android:label="@string/v3_client_auth"
+ android:theme="@style/DefaultTheme">
+ <meta-data
+ android:name="android.support.PARENT_ACTIVITY"
+ android:value=".OrbotMainActivity"/>
+ </activity>
+
<activity
android:name=".ui.hiddenservices.ClientCookiesActivity"
android:label="@string/client_cookies"
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 773c7fa6..d58381d4 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -75,6 +75,7 @@ import org.torproject.android.ui.onboarding.BridgeWizardActivity;
import org.torproject.android.ui.onboarding.OnboardingActivity;
import org.torproject.android.ui.v3onionservice.OnionServiceContentProvider;
import org.torproject.android.ui.v3onionservice.OnionServicesActivity;
+import org.torproject.android.ui.v3onionservice.V3ClientAuthActivity;
import java.io.File;
import java.io.UnsupportedEncodingException;
@@ -468,6 +469,8 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
} else if (item.getItemId() == R.id.menu_v3_onion_services) {
startActivity(new Intent(this, OnionServicesActivity.class));
+ } else if (item.getItemId() == R.id.menu_v3_onion_client_auth) {
+ startActivity(new Intent(this, V3ClientAuthActivity.class));
} else if (item.getItemId() == R.id.menu_hidden_services) {
startActivity(new Intent(this, HiddenServicesActivity.class));
} else if (item.getItemId() == R.id.menu_client_cookies) {
diff --git a/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java b/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java
index 93443678..7ffe2b43 100644
--- a/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java
@@ -48,8 +48,7 @@ public class ClientCookiesActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_activity_client_cookies);
- Toolbar toolbar = findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
+ setSupportActionBar(findViewById(R.id.toolbar));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mResolver = getContentResolver();
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/AddV3ClientAuthDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/AddV3ClientAuthDialogFragment.java
new file mode 100644
index 00000000..a3efe0d6
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/AddV3ClientAuthDialogFragment.java
@@ -0,0 +1,80 @@
+package org.torproject.android.ui.v3onionservice;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.EditText;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.DialogFragment;
+
+import org.torproject.android.R;
+
+public class AddV3ClientAuthDialogFragment extends DialogFragment {
+
+ private EditText etOnionUrl, etKeyHash;
+ private TextWatcher inputValidator;
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final View dialogView = getActivity().getLayoutInflater().inflate(R.layout.dialog_add_v3_client_auth, null);
+ final AlertDialog ad = new AlertDialog.Builder(getActivity())
+ .setView(dialogView)
+ .setTitle(R.string.v3_client_auth)
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
+ .setPositiveButton(R.string.save, (dialog, which) -> doSave(getContext()))
+ .create();
+
+
+ etOnionUrl = dialogView.findViewById(R.id.cookie_onion);
+ etKeyHash = dialogView.findViewById(R.id.cookie_value);
+
+ inputValidator = new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ ad.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(checkInput());
+ }
+ };
+
+ etOnionUrl.addTextChangedListener(inputValidator);
+ etKeyHash.addTextChangedListener(inputValidator);
+
+ return ad;
+ }
+
+ private void doSave(Context context) {
+
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ inputValidator.afterTextChanged(null);
+ }
+
+ private boolean checkInput() {
+ String domain = ".onion";
+ String onion = etOnionUrl.getText().toString();
+ if (onion.endsWith(domain))
+ onion = onion.substring(0, onion.indexOf(domain));
+ if (!onion.matches("([a-z0-9]{56})")) return false;
+ String hash = etKeyHash.getText().toString();
+ return hash.matches("([A-Z2-7]{52})");
+ }
+
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/V3ClientAuthActivity.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/V3ClientAuthActivity.java
new file mode 100644
index 00000000..53a35f30
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/V3ClientAuthActivity.java
@@ -0,0 +1,25 @@
+package org.torproject.android.ui.v3onionservice;
+
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import org.torproject.android.R;
+
+public class V3ClientAuthActivity extends AppCompatActivity {
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_v3auth);
+
+ setSupportActionBar(findViewById(R.id.toolbar));
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ findViewById(R.id.fab).setOnClickListener(v -> {
+ new AddV3ClientAuthDialogFragment().show(getSupportFragmentManager(), "AddV3ClientAuthDialogFragment");
+ });
+
+
+ }
+}
diff --git a/app/src/main/res/layout/activity_v3auth.xml b/app/src/main/res/layout/activity_v3auth.xml
new file mode 100644
index 00000000..a0e66741
--- /dev/null
+++ b/app/src/main/res/layout/activity_v3auth.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fitsSystemWindows="true"
+ tools:context="org.torproject.android.ui.hiddenservices.ClientCookiesActivity">
+
+ <com.google.android.material.appbar.AppBarLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:theme="@style/DefaultTheme.AppBarOverlay">
+
+ <androidx.appcompat.widget.Toolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary"
+ app:popupTheme="@style/DefaultTheme.PopupOverlay" />
+
+ </com.google.android.material.appbar.AppBarLayout>
+
+ <include layout="@layout/layout_content_client_cookies" />
+
+ <com.google.android.material.floatingactionbutton.FloatingActionButton
+ android:id="@+id/fab"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom|end"
+ android:layout_margin="@dimen/fab_margin"
+ android:tint="@android:color/black"
+ app:backgroundTint="@android:color/darker_gray"
+ app:srcCompat="@android:drawable/ic_input_add" />
+
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
diff --git a/app/src/main/res/layout/dialog_add_v3_client_auth.xml b/app/src/main/res/layout/dialog_add_v3_client_auth.xml
new file mode 100644
index 00000000..ec310a0c
--- /dev/null
+++ b/app/src/main/res/layout/dialog_add_v3_client_auth.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:padding="?dialogPreferredPadding">
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/onion"
+ android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" />
+
+ <org.torproject.android.core.ui.NoPersonalizedLearningEditText
+ android:id="@+id/cookie_onion"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:inputType="text" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/auth_cookie"
+ android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" />
+
+ <org.torproject.android.core.ui.NoPersonalizedLearningEditText
+ android:id="@+id/cookie_value"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:inputType="text" />
+</LinearLayout>
diff --git a/app/src/main/res/menu/orbot_main.xml b/app/src/main/res/menu/orbot_main.xml
index c0133d44..1f96b968 100644
--- a/app/src/main/res/menu/orbot_main.xml
+++ b/app/src/main/res/menu/orbot_main.xml
@@ -38,7 +38,12 @@
<item
android:id="@+id/menu_v3_onion_services"
- android:title="@string/hosted_services"
+ android:title="@string/v3_hosted_services"
+ yourapp:showAsAction="never" />
+
+ <item
+ android:id="@+id/menu_v3_onion_client_auth"
+ android:title="@string/v3_client_auth"
yourapp:showAsAction="never" />
<item
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c888c856..a312d6da 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -170,6 +170,8 @@
<string name="vpn_default_world">Global (Auto)</string>
<string name="hidden_services">Onion Services</string>
<string name="v2_hidden_services">V2 Onion Services (Deprecated)</string>
+ <string name="v3_hosted_services">Hosted V3 Onion Services</string>
+ <string name="v3_client_auth">V3 Onion Service Client Authorization</string>
<string name="title_activity_hidden_services">Onion Services</string>
<string name="menu_hidden_services">Onion Services</string>
<string name="save">Save</string>
1
0
[orbot/master] UI For Create, Backing up Restoring, etc V3 Client Authorizations
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 64c4a4627c518862181685a6e5dff8bcbde9b2f5
Author: bim <dsnake(a)protonmail.com>
Date: Thu Jan 28 11:40:24 2021 -0500
UI For Create, Backing up Restoring, etc V3 Client Authorizations
---
app/src/main/AndroidManifest.xml | 11 +-
.../org/torproject/android/OrbotMainActivity.java | 8 +-
.../ui/hiddenservices/ClientCookiesActivity.java | 7 +-
.../ui/hiddenservices/backup/BackupUtils.java | 37 +++++-
.../ui/hiddenservices/dialogs/AddCookieDialog.java | 6 +-
.../OnionServiceActionsDialogFragment.java | 13 +-
...icesActivity.java => OnionServiceActivity.java} | 11 +-
.../OnionServiceContentProvider.java | 21 +--
....java => OnionServiceCreateDialogFragment.java} | 4 +-
.../ui/v3onionservice/OnionServiceDatabase.java | 3 +-
....java => OnionServiceDeleteDialogFragment.java} | 9 +-
.../ui/v3onionservice/OnionV3ListAdapter.java | 1 -
.../ui/v3onionservice/V3ClientAuthActivity.java | 25 ----
.../ClientAuthActionsDialogFragment.java | 42 ++++++
.../clientauth/ClientAuthActivity.java | 142 +++++++++++++++++++++
.../clientauth/ClientAuthBackupDialogFragment.java | 90 +++++++++++++
.../clientauth/ClientAuthContentProvider.java | 104 +++++++++++++++
.../ClientAuthCreateDialogFragment.java} | 27 +++-
.../clientauth/ClientAuthDatabase.java | 30 +++++
.../clientauth/ClientAuthDeleteDialogFragment.java | 36 ++++++
.../clientauth/ClientAuthListAdapter.java | 49 +++++++
app/src/main/res/layout/activity_v3auth.xml | 11 +-
.../main/res/layout/dialog_add_v3_client_auth.xml | 5 +-
app/src/main/res/values/dimens.xml | 1 +
app/src/main/res/values/strings.xml | 17 ++-
.../java/org/torproject/android/core/DiskUtils.kt | 2 +-
.../torproject/android/service/OrbotService.java | 81 +++++++++---
.../android/service/TorServiceConstants.java | 1 +
28 files changed, 679 insertions(+), 115 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 51fc720a..ae1a8be8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -95,7 +95,7 @@
</activity>
<activity
- android:name=".ui.v3onionservice.OnionServicesActivity"
+ android:name=".ui.v3onionservice.OnionServiceActivity"
android:label="@string/hidden_services"
android:theme="@style/DefaultTheme">
<meta-data
@@ -103,8 +103,8 @@
android:value=".OrbotMainActivity" />
</activity>
- <activity android:name=".ui.v3onionservice.V3ClientAuthActivity"
- android:label="@string/v3_client_auth"
+ <activity android:name=".ui.v3onionservice.clientauth.ClientAuthActivity"
+ android:label="@string/v3_client_auth_activity_title"
android:theme="@style/DefaultTheme">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -147,6 +147,11 @@
android:authorities="org.torproject.android.ui.v3onionservice"
android:exported="false" />
+ <provider
+ android:authorities="org.torproject.android.ui.v3onionservice.clientauth"
+ android:name=".ui.v3onionservice.clientauth.ClientAuthContentProvider"
+ android:exported="false"/>
+
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="org.torproject.android.ui.hiddenservices.storage"
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index d58381d4..bf36020b 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -74,8 +74,8 @@ import org.torproject.android.ui.hiddenservices.providers.HSContentProvider;
import org.torproject.android.ui.onboarding.BridgeWizardActivity;
import org.torproject.android.ui.onboarding.OnboardingActivity;
import org.torproject.android.ui.v3onionservice.OnionServiceContentProvider;
-import org.torproject.android.ui.v3onionservice.OnionServicesActivity;
-import org.torproject.android.ui.v3onionservice.V3ClientAuthActivity;
+import org.torproject.android.ui.v3onionservice.OnionServiceActivity;
+import org.torproject.android.ui.v3onionservice.clientauth.ClientAuthActivity;
import java.io.File;
import java.io.UnsupportedEncodingException;
@@ -468,9 +468,9 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
}
} else if (item.getItemId() == R.id.menu_v3_onion_services) {
- startActivity(new Intent(this, OnionServicesActivity.class));
+ startActivity(new Intent(this, OnionServiceActivity.class));
} else if (item.getItemId() == R.id.menu_v3_onion_client_auth) {
- startActivity(new Intent(this, V3ClientAuthActivity.class));
+ startActivity(new Intent(this, ClientAuthActivity.class));
} else if (item.getItemId() == R.id.menu_hidden_services) {
startActivity(new Intent(this, HiddenServicesActivity.class));
} else if (item.getItemId() == R.id.menu_client_cookies) {
diff --git a/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java b/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java
index 7ffe2b43..3e1b60a3 100644
--- a/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/hiddenservices/ClientCookiesActivity.java
@@ -15,7 +15,6 @@ import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
@@ -53,10 +52,8 @@ public class ClientCookiesActivity extends AppCompatActivity {
mResolver = getContentResolver();
- findViewById(R.id.fab).setOnClickListener(view -> {
- AddCookieDialog dialog = new AddCookieDialog();
- dialog.show(getSupportFragmentManager(), "AddCookieDialog");
- });
+ findViewById(R.id.fab).setOnClickListener(view ->
+ new AddCookieDialog().show(getSupportFragmentManager(), AddCookieDialog.class.getSimpleName()));
mAdapter = new ClientCookiesAdapter(this, mResolver.query(CookieContentProvider.CONTENT_URI, CookieContentProvider.PROJECTION, null, null, null), 0);
diff --git a/app/src/main/java/org/torproject/android/ui/hiddenservices/backup/BackupUtils.java b/app/src/main/java/org/torproject/android/ui/hiddenservices/backup/BackupUtils.java
index 1dbad3cb..af7f1333 100644
--- a/app/src/main/java/org/torproject/android/ui/hiddenservices/backup/BackupUtils.java
+++ b/app/src/main/java/org/torproject/android/ui/hiddenservices/backup/BackupUtils.java
@@ -12,10 +12,12 @@ import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
import org.torproject.android.R;
+import org.torproject.android.service.OrbotService;
import org.torproject.android.service.TorServiceConstants;
import org.torproject.android.ui.hiddenservices.providers.CookieContentProvider;
import org.torproject.android.ui.hiddenservices.providers.HSContentProvider;
import org.torproject.android.ui.v3onionservice.OnionServiceContentProvider;
+import org.torproject.android.ui.v3onionservice.clientauth.ClientAuthContentProvider;
import java.io.File;
import java.io.FileInputStream;
@@ -38,10 +40,6 @@ public class BackupUtils {
mResolver = mContext.getContentResolver();
}
- public static boolean isV2OnionAddressValid(String onionToTest) {
- return onionToTest.matches("([a-z0-9]{16}).onion");
- }
-
public String createV3ZipBackup(String port, Uri zipFile) {
String[] files = createFilesForZippingV3(port);
ZipUtilities zip = new ZipUtilities(files, zipFile, mResolver);
@@ -49,6 +47,20 @@ public class BackupUtils {
return zipFile.getPath();
}
+ public String createV3AuthBackup(String domain, String keyHash, Uri backupFile) {
+ String fileText = OrbotService.buildV3ClientAuthFile(domain, keyHash);
+ try {
+ ParcelFileDescriptor pfd = mContext.getContentResolver().openFileDescriptor(backupFile, "w");
+ FileOutputStream fos = new FileOutputStream(pfd.getFileDescriptor());
+ fos.write(fileText.getBytes());
+ fos.close();
+ pfd.close();
+ } catch (IOException ioe) {
+ return null;
+ }
+ return backupFile.getPath();
+ }
+
public String createV2ZipBackup(int port, Uri zipFile) {
String[] files = createFilesForZippingV2(port);
ZipUtilities zip = new ZipUtilities(files, zipFile, mResolver);
@@ -59,7 +71,7 @@ public class BackupUtils {
return zipFile.getPath();
}
- // todo also write out authorized clients...
+ // todo this doesn't export data for onions that orbot hosts which have authentication (not supported yet...)
private String[] createFilesForZippingV3(String port) {
final String v3BasePath = getV3BasePath() + "/v3" + port + "/";
final String hostnamePath = v3BasePath + "hostname",
@@ -304,7 +316,6 @@ public class BackupUtils {
Toast.makeText(mContext, R.string.error, Toast.LENGTH_LONG).show();
}
-
public void restoreKeyBackup(int hsPort, Uri hsKeyPath) {
File mHSBasePath = new File(
mContext.getFilesDir().getAbsolutePath(),
@@ -333,6 +344,20 @@ public class BackupUtils {
}
}
+
+ public void restoreClientAuthBackup(String authFileContents) {
+ ContentValues fields = new ContentValues();
+ String[] split = authFileContents.split(":");
+ if (split.length != 4) {
+ Toast.makeText(mContext, R.string.error, Toast.LENGTH_LONG).show();
+ return;
+ }
+ fields.put(ClientAuthContentProvider.V3ClientAuth.DOMAIN, split[0]);
+ fields.put(ClientAuthContentProvider.V3ClientAuth.HASH, split[3]);
+ mResolver.insert(ClientAuthContentProvider.CONTENT_URI, fields);
+ Toast.makeText(mContext, R.string.backup_restored, Toast.LENGTH_LONG).show();
+ }
+
public void restoreCookieBackup(String jString) {
try {
JSONObject savedValues = new JSONObject(jString);
diff --git a/app/src/main/java/org/torproject/android/ui/hiddenservices/dialogs/AddCookieDialog.java b/app/src/main/java/org/torproject/android/ui/hiddenservices/dialogs/AddCookieDialog.java
index a0e584c4..1da1d1e4 100644
--- a/app/src/main/java/org/torproject/android/ui/hiddenservices/dialogs/AddCookieDialog.java
+++ b/app/src/main/java/org/torproject/android/ui/hiddenservices/dialogs/AddCookieDialog.java
@@ -76,7 +76,11 @@ public class AddCookieDialog extends DialogFragment {
String onion = etOnion.getText().toString();
String cookie = etCookie.getText().toString();
if (TextUtils.isEmpty(onion.trim()) || TextUtils.isEmpty(cookie.trim())) return false;
- return BackupUtils.isV2OnionAddressValid(onion);
+ return isV2OnionAddressValid(onion);
+ }
+
+ private static boolean isV2OnionAddressValid(String onionToTest) {
+ return onionToTest.matches("([a-z0-9]{16}).onion");
}
private void saveData(String domain, String cookie) {
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActionsDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActionsDialogFragment.java
index 4d26270d..17ce59a7 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActionsDialogFragment.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActionsDialogFragment.java
@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.text.Html;
import android.widget.Toast;
import androidx.annotation.NonNull;
@@ -35,7 +36,7 @@ public class OnionServiceActionsDialogFragment extends DialogFragment {
AlertDialog ad = new AlertDialog.Builder(getActivity())
.setItems(new CharSequence[]{
getString(R.string.copy_address_to_clipboard),
- getString(R.string.backup_service),
+ Html.fromHtml(getString(R.string.backup_service)),
getString(R.string.delete_service)}, null)
.setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
.setTitle(R.string.hidden_services)
@@ -46,14 +47,14 @@ public class OnionServiceActionsDialogFragment extends DialogFragment {
if (position == 0) doCopy(arguments, getContext());
else if (position == 1) doBackup(arguments, getContext());
else if (position == 2)
- new DeleteOnionServiceDialogFragment(arguments).show(getFragmentManager(), DeleteOnionServiceDialogFragment.class.getSimpleName());
+ new OnionServiceDeleteDialogFragment(arguments).show(getFragmentManager(), OnionServiceDeleteDialogFragment.class.getSimpleName());
if (position != 1) dismiss();
});
return ad;
}
private void doCopy(Bundle arguments, Context context) {
- String onion = arguments.getString(OnionServicesActivity.BUNDLE_KEY_DOMAIN);
+ String onion = arguments.getString(OnionServiceActivity.BUNDLE_KEY_DOMAIN);
if (onion == null)
Toast.makeText(context, R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG).show();
else
@@ -61,8 +62,8 @@ public class OnionServiceActionsDialogFragment extends DialogFragment {
}
private void doBackup(Bundle arguments, Context context) {
- String filename = "onion_service" + arguments.getString(OnionServicesActivity.BUNDLE_KEY_PORT) + ".zip";
- if (arguments.getString(OnionServicesActivity.BUNDLE_KEY_DOMAIN) == null) {
+ String filename = "onion_service" + arguments.getString(OnionServiceActivity.BUNDLE_KEY_PORT) + ".zip";
+ if (arguments.getString(OnionServiceActivity.BUNDLE_KEY_DOMAIN) == null) {
Toast.makeText(context, R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG).show();
return;
}
@@ -85,7 +86,7 @@ public class OnionServiceActionsDialogFragment extends DialogFragment {
private void attemptToWriteBackup(Uri outputFile) {
BackupUtils backupUtils = new BackupUtils(getContext());
- String backup = backupUtils.createV3ZipBackup(getArguments().getString(OnionServicesActivity.BUNDLE_KEY_PORT), outputFile);
+ String backup = backupUtils.createV3ZipBackup(getArguments().getString(OnionServiceActivity.BUNDLE_KEY_PORT), outputFile);
Toast.makeText(getContext(), backup != null ? R.string.backup_saved_at_external_storage : R.string.error, Toast.LENGTH_LONG).show();
dismiss();
}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServicesActivity.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActivity.java
similarity index 94%
rename from app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServicesActivity.java
rename to app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActivity.java
index 64a014e4..39db0b10 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServicesActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceActivity.java
@@ -30,7 +30,7 @@ import org.torproject.android.ui.hiddenservices.permissions.PermissionManager;
import java.io.File;
-public class OnionServicesActivity extends AppCompatActivity {
+public class OnionServiceActivity extends AppCompatActivity {
static final String BUNDLE_KEY_ID = "id", BUNDLE_KEY_PORT = "port", BUNDLE_KEY_DOMAIN = "domain";
private static final String BASE_WHERE_SELECTION_CLAUSE = OnionServiceContentProvider.OnionService.CREATED_BY_USER + "=";
@@ -51,7 +51,7 @@ public class OnionServicesActivity extends AppCompatActivity {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
fab = findViewById(R.id.fab);
- fab.setOnClickListener(v -> new NewOnionServiceDialogFragment().show(getSupportFragmentManager(), NewOnionServiceDialogFragment.class.getSimpleName()));
+ fab.setOnClickListener(v -> new OnionServiceCreateDialogFragment().show(getSupportFragmentManager(), OnionServiceCreateDialogFragment.class.getSimpleName()));
mContentResolver = getContentResolver();
mAdapter = new OnionV3ListAdapter(this, mContentResolver.query(OnionServiceContentProvider.CONTENT_URI, OnionServiceContentProvider.PROJECTION, BASE_WHERE_SELECTION_CLAUSE + '1', null, null), 0);
@@ -123,8 +123,7 @@ public class OnionServicesActivity extends AppCompatActivity {
private void doRestoreLegacy() { // APIs 16, 17, 18
File backupDir = DiskUtils.getOrCreateLegacyBackupDir(getString(R.string.app_name));
File[] files = backupDir.listFiles(ZipUtilities.FILTER_ZIP_FILES);
- if (files == null) return;
- if (files.length == 0) {
+ if (files == null || files.length == 0) {
Toast.makeText(this, R.string.create_a_backup_first, Toast.LENGTH_LONG).show();
return;
}
@@ -168,9 +167,9 @@ public class OnionServicesActivity extends AppCompatActivity {
OnionServiceContentProvider.OnionService.ENABLED + "=1", null, null);
if (activeServices == null) return;
if (activeServices.getCount() > 0)
- PermissionManager.requestBatteryPermissions(OnionServicesActivity.this, getApplicationContext());
+ PermissionManager.requestBatteryPermissions(OnionServiceActivity.this, getApplicationContext());
else
- PermissionManager.requestDropBatteryPermissions(OnionServicesActivity.this, getApplicationContext());
+ PermissionManager.requestDropBatteryPermissions(OnionServiceActivity.this, getApplicationContext());
activeServices.close();
}
}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceContentProvider.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceContentProvider.java
index d61f7935..61b8540a 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceContentProvider.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceContentProvider.java
@@ -46,13 +46,10 @@ public class OnionServiceContentProvider extends ContentProvider {
@Nullable
@Override
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
- String where = selection;
- if (uriMatcher.match(uri) == ONION_ID) {
- where = "_id=" + uri.getLastPathSegment();
- }
-
+ if (uriMatcher.match(uri) == ONION_ID)
+ selection = "_id=" + uri.getLastPathSegment();
SQLiteDatabase db = mDatabase.getReadableDatabase();
- return db.query(OnionServiceDatabase.ONION_SERVICE_TABLE_NAME, projection, where, selectionArgs, null, null, sortOrder);
+ return db.query(OnionServiceDatabase.ONION_SERVICE_TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
}
@Nullable
@@ -80,9 +77,8 @@ public class OnionServiceContentProvider extends ContentProvider {
@Override
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
- if (uriMatcher.match(uri) == ONION_ID) {
+ if (uriMatcher.match(uri) == ONION_ID)
selection = "_id=" + uri.getLastPathSegment();
- }
SQLiteDatabase db = mDatabase.getWritableDatabase();
int rows = db.delete(OnionServiceDatabase.ONION_SERVICE_TABLE_NAME, selection, selectionArgs);
getContext().getContentResolver().notifyChange(CONTENT_URI, null);
@@ -92,12 +88,9 @@ public class OnionServiceContentProvider extends ContentProvider {
@Override
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
SQLiteDatabase db = mDatabase.getWritableDatabase();
- String where = selection;
- if (uriMatcher.match(uri) == ONION_ID) {
- where = "_id=" + uri.getLastPathSegment();
- }
-
- int rows = db.update(OnionServiceDatabase.ONION_SERVICE_TABLE_NAME, values, where, null);
+ if (uriMatcher.match(uri) == ONION_ID)
+ selection = "_id=" + uri.getLastPathSegment();
+ int rows = db.update(OnionServiceDatabase.ONION_SERVICE_TABLE_NAME, values, selection, null);
getContext().getContentResolver().notifyChange(CONTENT_URI, null);
return rows;
}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/NewOnionServiceDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceCreateDialogFragment.java
similarity index 96%
rename from app/src/main/java/org/torproject/android/ui/v3onionservice/NewOnionServiceDialogFragment.java
rename to app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceCreateDialogFragment.java
index 1929eb72..1d22ac6c 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/NewOnionServiceDialogFragment.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceCreateDialogFragment.java
@@ -19,7 +19,7 @@ import androidx.fragment.app.DialogFragment;
import org.torproject.android.R;
-public class NewOnionServiceDialogFragment extends DialogFragment {
+public class OnionServiceCreateDialogFragment extends DialogFragment {
private EditText etServer, etLocalPort, etOnionPort;
private TextWatcher inputValidator;
@@ -90,7 +90,7 @@ public class NewOnionServiceDialogFragment extends DialogFragment {
fields.put(OnionServiceContentProvider.OnionService.PORT, localPort);
fields.put(OnionServiceContentProvider.OnionService.ONION_PORT, onionPort);
fields.put(OnionServiceContentProvider.OnionService.CREATED_BY_USER, 1);
- ContentResolver cr = getContext().getContentResolver();
+ ContentResolver cr = context.getContentResolver();
cr.insert(OnionServiceContentProvider.CONTENT_URI, fields);
Toast.makeText(context, R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG).show();
}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDatabase.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDatabase.java
index f2a812e8..558babac 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDatabase.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDatabase.java
@@ -20,7 +20,7 @@ public class OnionServiceDatabase extends SQLiteOpenHelper {
"enabled INTEGER DEFAULT 1, " +
"port INTEGER);";
- public OnionServiceDatabase(Context context) {
+ OnionServiceDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@@ -31,7 +31,6 @@ public class OnionServiceDatabase extends SQLiteOpenHelper {
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-
}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/DeleteOnionServiceDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDeleteDialogFragment.java
similarity index 80%
rename from app/src/main/java/org/torproject/android/ui/v3onionservice/DeleteOnionServiceDialogFragment.java
rename to app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDeleteDialogFragment.java
index 5028e8f3..71111fe1 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/DeleteOnionServiceDialogFragment.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionServiceDeleteDialogFragment.java
@@ -12,12 +12,11 @@ import androidx.fragment.app.DialogFragment;
import org.torproject.android.R;
import org.torproject.android.core.DiskUtils;
import org.torproject.android.service.TorServiceConstants;
-import org.torproject.android.ui.hiddenservices.HiddenServicesActivity;
import java.io.File;
-public class DeleteOnionServiceDialogFragment extends DialogFragment {
- DeleteOnionServiceDialogFragment(Bundle arguments) {
+public class OnionServiceDeleteDialogFragment extends DialogFragment {
+ OnionServiceDeleteDialogFragment(Bundle arguments) {
super();
setArguments(arguments);
}
@@ -33,9 +32,9 @@ public class DeleteOnionServiceDialogFragment extends DialogFragment {
}
private void doDelete(Bundle arguments, Context context) {
- context.getContentResolver().delete(OnionServiceContentProvider.CONTENT_URI, OnionServiceContentProvider.OnionService._ID + '=' + arguments.getInt(OnionServicesActivity.BUNDLE_KEY_ID), null);
+ context.getContentResolver().delete(OnionServiceContentProvider.CONTENT_URI, OnionServiceContentProvider.OnionService._ID + '=' + arguments.getInt(OnionServiceActivity.BUNDLE_KEY_ID), null);
String base = context.getFilesDir().getAbsolutePath() + "/" + TorServiceConstants.ONION_SERVICES_DIR;
- DiskUtils.recursivelyDeleteDirectory(new File(base, "v3" + arguments.getString(OnionServicesActivity.BUNDLE_KEY_PORT)));
+ DiskUtils.recursivelyDeleteDirectory(new File(base, "v3" + arguments.getString(OnionServiceActivity.BUNDLE_KEY_PORT)));
}
}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionV3ListAdapter.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionV3ListAdapter.java
index c0489d3c..6a858a9a 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionV3ListAdapter.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/OnionV3ListAdapter.java
@@ -14,7 +14,6 @@ import android.widget.Toast;
import androidx.appcompat.widget.SwitchCompat;
import org.torproject.android.R;
-import org.torproject.android.ui.hiddenservices.providers.HSContentProvider;
public class OnionV3ListAdapter extends CursorAdapter {
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/V3ClientAuthActivity.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/V3ClientAuthActivity.java
deleted file mode 100644
index 53a35f30..00000000
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/V3ClientAuthActivity.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.torproject.android.ui.v3onionservice;
-
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-
-import org.torproject.android.R;
-
-public class V3ClientAuthActivity extends AppCompatActivity {
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_v3auth);
-
- setSupportActionBar(findViewById(R.id.toolbar));
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
-
- findViewById(R.id.fab).setOnClickListener(v -> {
- new AddV3ClientAuthDialogFragment().show(getSupportFragmentManager(), "AddV3ClientAuthDialogFragment");
- });
-
-
- }
-}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthActionsDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthActionsDialogFragment.java
new file mode 100644
index 00000000..af5c6844
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthActionsDialogFragment.java
@@ -0,0 +1,42 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+import android.text.Html;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.DialogFragment;
+
+import org.torproject.android.R;
+
+public class ClientAuthActionsDialogFragment extends DialogFragment {
+
+ public ClientAuthActionsDialogFragment() {}
+
+ public ClientAuthActionsDialogFragment(Bundle args) {
+ super();
+ setArguments(args);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog ad = new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.v3_client_auth)
+ .setItems(new CharSequence[]{
+ Html.fromHtml(getString(R.string.v3_backup_key)),
+ getString(R.string.v3_delete_client_authorization)
+ }, null)
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
+ .create();
+ ad.getListView().setOnItemClickListener((parent, view, position, id) -> {
+ if (position == 0)
+ new ClientAuthBackupDialogFragment(getArguments()).show(getActivity().getSupportFragmentManager(), ClientAuthBackupDialogFragment.class.getSimpleName());
+ else
+ new ClientAuthDeleteDialogFragment(getArguments()).show(getActivity().getSupportFragmentManager(), ClientAuthDeleteDialogFragment.class.getSimpleName());
+ ad.dismiss();
+ });
+ return ad;
+ }
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthActivity.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthActivity.java
new file mode 100644
index 00000000..b24b81f7
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthActivity.java
@@ -0,0 +1,142 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.ListView;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+
+import org.torproject.android.R;
+import org.torproject.android.core.DiskUtils;
+import org.torproject.android.core.LocaleHelper;
+import org.torproject.android.ui.hiddenservices.backup.BackupUtils;
+import org.torproject.android.ui.hiddenservices.backup.ZipUtilities;
+
+import java.io.File;
+import java.util.List;
+
+public class ClientAuthActivity extends AppCompatActivity {
+
+ public static final String BUNDLE_KEY_ID = "_id",
+ BUNDLE_KEY_DOMAIN = "domain",
+ BUNDLE_KEY_HASH = "key_hash_value";
+
+ private ContentResolver mResolver;
+ private ClientAuthListAdapter mAdapter;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_v3auth);
+
+ setSupportActionBar(findViewById(R.id.toolbar));
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ mResolver = getContentResolver();
+ mAdapter = new ClientAuthListAdapter(this, mResolver.query(ClientAuthContentProvider.CONTENT_URI, ClientAuthContentProvider.PROJECTION, null, null, null), 0);
+ mResolver.registerContentObserver(ClientAuthContentProvider.CONTENT_URI, true, new V3ClientAuthContentObserver(new Handler()));
+
+ findViewById(R.id.fab).setOnClickListener(v ->
+ new ClientAuthCreateDialogFragment().show(getSupportFragmentManager(), ClientAuthCreateDialogFragment.class.getSimpleName()));
+
+ ListView auths = findViewById(R.id.auth_hash_list);
+ auths.setAdapter(mAdapter);
+ auths.setOnItemClickListener((parent, view, position, id) -> {
+ Cursor item = (Cursor) parent.getItemAtPosition(position);
+ Bundle args = new Bundle();
+ args.putInt(BUNDLE_KEY_ID, item.getInt(item.getColumnIndex(ClientAuthContentProvider.V3ClientAuth._ID)));
+ args.putString(BUNDLE_KEY_DOMAIN, item.getString(item.getColumnIndex(ClientAuthContentProvider.V3ClientAuth.DOMAIN)));
+ args.putString(BUNDLE_KEY_HASH, item.getString(item.getColumnIndex(ClientAuthContentProvider.V3ClientAuth.HASH)));
+ new ClientAuthActionsDialogFragment(args).show(getSupportFragmentManager(), ClientAuthActionsDialogFragment.class.getSimpleName());
+ });
+ }
+
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQUEST_CODE_READ_ZIP_BACKUP && resultCode == RESULT_OK) {
+ Uri uri = data.getData();
+ if (uri != null) {
+ String authText = DiskUtils.readFileFromInputStream(getContentResolver(), uri);
+ new BackupUtils(this).restoreClientAuthBackup(authText);
+ }
+ } else {
+ super.onActivityResult(requestCode, resultCode, data);
+ List<Fragment> frags = getSupportFragmentManager().getFragments();
+ if (frags != null)
+ for (Fragment f : frags) f.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
+ @Override
+ protected void attachBaseContext(Context base) {
+ super.attachBaseContext(LocaleHelper.onAttach(base));
+ }
+
+ private class V3ClientAuthContentObserver extends ContentObserver {
+ V3ClientAuthContentObserver(Handler handler) {
+ super(handler);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ mAdapter.changeCursor(mResolver.query(ClientAuthContentProvider.CONTENT_URI, ClientAuthContentProvider.PROJECTION, null, null, null));
+ }
+
+ }
+
+ private static final int REQUEST_CODE_READ_ZIP_BACKUP = 12;
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == R.id.menu_restore_backup) {
+ if (DiskUtils.supportsStorageAccessFramework()) {
+ Intent readFileIntent = DiskUtils.createReadFileIntent("text/*");
+ startActivityForResult(readFileIntent, REQUEST_CODE_READ_ZIP_BACKUP);
+ } else { // APIs 16, 17, 18
+ doRestoreLegacy();
+ }
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void doRestoreLegacy() {
+ File backupDir = DiskUtils.getOrCreateLegacyBackupDir(getString(R.string.app_name));
+ File[] files = backupDir.listFiles((dir, name) -> name.toLowerCase().endsWith(".auth_private"));
+ if (files == null || files.length == 0) {
+ Toast.makeText(this, R.string.create_a_backup_first, Toast.LENGTH_LONG).show();
+ return;
+ }
+
+ CharSequence[] fileNames = new CharSequence[files.length];
+ for (int i = 0; i < files.length; i++) fileNames[i] = files[i].getName();
+
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.restore_backup)
+ .setItems(fileNames, (dialog, which) -> {
+ String authFileText = DiskUtils.readFile(getContentResolver(), files[which]);
+ new BackupUtils(this).restoreClientAuthBackup(authFileText);
+ })
+ .show();
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.hs_menu, menu);
+ return true;
+ }
+
+
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthBackupDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthBackupDialogFragment.java
new file mode 100644
index 00000000..c924fe0e
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthBackupDialogFragment.java
@@ -0,0 +1,90 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.DialogFragment;
+
+import org.torproject.android.R;
+import org.torproject.android.core.DiskUtils;
+import org.torproject.android.core.ui.NoPersonalizedLearningEditText;
+import org.torproject.android.ui.hiddenservices.backup.BackupUtils;
+
+import java.io.File;
+
+public class ClientAuthBackupDialogFragment extends DialogFragment {
+
+ private NoPersonalizedLearningEditText etFilename;
+
+ public ClientAuthBackupDialogFragment() {
+ }
+
+ public ClientAuthBackupDialogFragment(Bundle args) {
+ super();
+ setArguments(args);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog ad = new AlertDialog.Builder(getContext())
+ .setTitle(R.string.v3_backup_key)
+ .setMessage(R.string.v3_backup_key_warning)
+ .setPositiveButton(R.string.confirm, null)
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
+ .create();
+ ad.setOnShowListener(dialog -> ad.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> doBackup()));
+ FrameLayout container = new FrameLayout(ad.getContext());
+ FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ int margin = getResources().getDimensionPixelOffset(R.dimen.alert_dialog_margin);
+ params.leftMargin = margin;
+ params.rightMargin = margin;
+ etFilename = new NoPersonalizedLearningEditText(ad.getContext(), null);
+ etFilename.setSingleLine(true);
+ etFilename.setHint(R.string.v3_backup_name_hint);
+ etFilename.setLayoutParams(params);
+ container.addView(etFilename);
+ ad.setView(container);
+ return ad;
+ }
+
+ private void doBackup() {
+ String filename = etFilename.getText().toString().trim();
+ if (filename.equals("")) filename = "filename";
+ filename += ".auth_private";
+ if (DiskUtils.supportsStorageAccessFramework()) {
+ Intent createFileIntent = DiskUtils.createWriteFileIntent(filename, "text/*");
+ getActivity().startActivityForResult(createFileIntent, REQUEST_CODE_WRITE_FILE);
+ } else { // APIs 16, 17, 18
+ attemptToWriteBackup(Uri.fromFile(new File(DiskUtils.getOrCreateLegacyBackupDir("Orbot"), filename)));
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQUEST_CODE_WRITE_FILE && resultCode == Activity.RESULT_OK) {
+ if (data != null) {
+ attemptToWriteBackup(data.getData());
+ }
+ }
+ }
+
+ private void attemptToWriteBackup(Uri outputFile) {
+ BackupUtils backupUtils = new BackupUtils(getContext());
+ String domain = getArguments().getString(ClientAuthActivity.BUNDLE_KEY_DOMAIN);
+ String hash = getArguments().getString(ClientAuthActivity.BUNDLE_KEY_HASH);
+ String backup = backupUtils.createV3AuthBackup(domain, hash, outputFile);
+ Toast.makeText(getContext(), backup != null ? R.string.backup_saved_at_external_storage : R.string.error, Toast.LENGTH_LONG).show();
+ dismiss();
+ }
+
+ private static final int REQUEST_CODE_WRITE_FILE = 432;
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthContentProvider.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthContentProvider.java
new file mode 100644
index 00000000..549e776f
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthContentProvider.java
@@ -0,0 +1,104 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.content.ContentProvider;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.provider.BaseColumns;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+public class ClientAuthContentProvider extends ContentProvider {
+ public static final String[] PROJECTION = {
+ V3ClientAuth._ID,
+ V3ClientAuth.DOMAIN,
+ V3ClientAuth.HASH,
+ V3ClientAuth.ENABLED,
+ };
+ private static final String AUTH = "org.torproject.android.ui.v3onionservice.clientauth";
+ public static final Uri CONTENT_URI = Uri.parse("content://" + AUTH + "/v3auth");
+ private static final int V3AUTHS = 1, V3AUTH_ID = 2;
+
+ private static final UriMatcher uriMatcher;
+
+ static {
+ uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+ uriMatcher.addURI(AUTH, "v3auth", V3AUTHS);
+ uriMatcher.addURI(AUTH, "v3auth/#", V3AUTH_ID);
+ }
+
+ private ClientAuthDatabase mDatabase;
+
+ @Override
+ public boolean onCreate() {
+ mDatabase = new ClientAuthDatabase(getContext());
+ return true;
+ }
+
+ @Nullable
+ @Override
+ public String getType(@NonNull Uri uri) {
+ int match = uriMatcher.match(uri);
+ switch (match) {
+ case V3AUTHS:
+ return "vnd.android.cursor.dir/vnd.torproject.v3auths";
+ case V3AUTH_ID:
+ return "vnd.android.cursor.item/vnd.torproject.v3auth";
+ default:
+ return null;
+ }
+ }
+
+ @Nullable
+ @Override
+ public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
+ if (uriMatcher.match(uri) == V3AUTH_ID)
+ selection = "_id=" + uri.getLastPathSegment();
+ SQLiteDatabase db = mDatabase.getReadableDatabase();
+ return db.query(ClientAuthDatabase.DATABASE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
+ }
+
+ @Nullable
+ @Override
+ public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {
+ SQLiteDatabase db = mDatabase.getWritableDatabase();
+ long regId = db.insert(ClientAuthDatabase.DATABASE_NAME, null, values);
+ getContext().getContentResolver().notifyChange(CONTENT_URI, null);
+ return ContentUris.withAppendedId(CONTENT_URI, regId);
+ }
+
+ @Override
+ public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {
+ if (uriMatcher.match(uri) == V3AUTH_ID)
+ selection = "_id=" + uri.getLastPathSegment();
+ SQLiteDatabase db = mDatabase.getWritableDatabase();
+ int rows = db.delete(ClientAuthDatabase.DATABASE_NAME, selection, selectionArgs);
+ getContext().getContentResolver().notifyChange(CONTENT_URI, null);
+ return rows;
+ }
+
+ @Override
+ public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {
+ SQLiteDatabase db = mDatabase.getWritableDatabase();
+ if (uriMatcher.match(uri) == V3AUTH_ID)
+ selection = "id_=" + uri.getLastPathSegment();
+ int rows = db.update(ClientAuthDatabase.DATABASE_NAME, values, selection, null);
+ getContext().getContentResolver().notifyChange(CONTENT_URI, null);
+ return rows;
+ }
+
+ public static final class V3ClientAuth implements BaseColumns {
+ private V3ClientAuth() {
+ } // no-op
+
+ public static final String
+ DOMAIN = "domain",
+ HASH = "hash",
+ ENABLED = "enabled";
+ }
+
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/AddV3ClientAuthDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthCreateDialogFragment.java
similarity index 69%
rename from app/src/main/java/org/torproject/android/ui/v3onionservice/AddV3ClientAuthDialogFragment.java
rename to app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthCreateDialogFragment.java
index a3efe0d6..5ce4f491 100644
--- a/app/src/main/java/org/torproject/android/ui/v3onionservice/AddV3ClientAuthDialogFragment.java
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthCreateDialogFragment.java
@@ -1,20 +1,23 @@
-package org.torproject.android.ui.v3onionservice;
+package org.torproject.android.ui.v3onionservice.clientauth;
import android.app.AlertDialog;
import android.app.Dialog;
+import android.content.ContentResolver;
+import android.content.ContentValues;
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import org.torproject.android.R;
-public class AddV3ClientAuthDialogFragment extends DialogFragment {
+public class ClientAuthCreateDialogFragment extends DialogFragment {
private EditText etOnionUrl, etKeyHash;
private TextWatcher inputValidator;
@@ -58,7 +61,22 @@ public class AddV3ClientAuthDialogFragment extends DialogFragment {
}
private void doSave(Context context) {
+ String onionName = sanitizeOnionDomainTextField();
+ String hash = etKeyHash.getText().toString();
+ ContentValues fields = new ContentValues();
+ fields.put(ClientAuthContentProvider.V3ClientAuth.DOMAIN, onionName);
+ fields.put(ClientAuthContentProvider.V3ClientAuth.HASH, hash);
+ ContentResolver cr = context.getContentResolver();
+ cr.insert(ClientAuthContentProvider.CONTENT_URI, fields);
+ Toast.makeText(context, R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG).show();
+ }
+ private String sanitizeOnionDomainTextField() {
+ String domain = ".onion";
+ String onion = etOnionUrl.getText().toString();
+ if (onion.endsWith(domain))
+ return onion.substring(0, onion.indexOf(domain));
+ return onion;
}
@Override
@@ -68,10 +86,7 @@ public class AddV3ClientAuthDialogFragment extends DialogFragment {
}
private boolean checkInput() {
- String domain = ".onion";
- String onion = etOnionUrl.getText().toString();
- if (onion.endsWith(domain))
- onion = onion.substring(0, onion.indexOf(domain));
+ String onion = sanitizeOnionDomainTextField();
if (!onion.matches("([a-z0-9]{56})")) return false;
String hash = etKeyHash.getText().toString();
return hash.matches("([A-Z2-7]{52})");
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthDatabase.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthDatabase.java
new file mode 100644
index 00000000..50b04bc6
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthDatabase.java
@@ -0,0 +1,30 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+public class ClientAuthDatabase extends SQLiteOpenHelper {
+ static final String DATABASE_NAME = "v3_client_auths";
+ private static final int DATABASE_VERSION = 1;
+
+ private static final String V3_AUTHS_CREATE_SQL =
+ "CREATE TABLE " + DATABASE_NAME + " (" +
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
+ "domain TEXT, " +
+ "hash TEXT, " +
+ "enabled INTEGER DEFAULT 1);";
+
+ ClientAuthDatabase(Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL(V3_AUTHS_CREATE_SQL);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ }
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthDeleteDialogFragment.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthDeleteDialogFragment.java
new file mode 100644
index 00000000..6a349f8e
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthDeleteDialogFragment.java
@@ -0,0 +1,36 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.DialogFragment;
+
+import org.torproject.android.R;
+
+public class ClientAuthDeleteDialogFragment extends DialogFragment {
+
+ public ClientAuthDeleteDialogFragment() {}
+ public ClientAuthDeleteDialogFragment(Bundle args) {
+ super();
+ setArguments(args);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
+ return new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.v3_delete_client_authorization)
+ .setPositiveButton(R.string.v3_delete_client_authorization_confirm, (dialog, which) -> doDelete())
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> dialog.dismiss())
+ .create();
+ }
+
+ private void doDelete() {
+ int id = getArguments().getInt(ClientAuthActivity.BUNDLE_KEY_ID);
+ getContext().getContentResolver().delete(ClientAuthContentProvider.CONTENT_URI, ClientAuthContentProvider.V3ClientAuth._ID + "=" + id, null);
+ }
+
+}
diff --git a/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthListAdapter.java b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthListAdapter.java
new file mode 100644
index 00000000..8f08225d
--- /dev/null
+++ b/app/src/main/java/org/torproject/android/ui/v3onionservice/clientauth/ClientAuthListAdapter.java
@@ -0,0 +1,49 @@
+package org.torproject.android.ui.v3onionservice.clientauth;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CursorAdapter;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.appcompat.widget.SwitchCompat;
+
+import org.torproject.android.R;
+
+public class ClientAuthListAdapter extends CursorAdapter {
+ private final LayoutInflater mLayoutInflator;
+
+ ClientAuthListAdapter(Context context, Cursor cursor, int flags) {
+ super(context, cursor, flags);
+ mLayoutInflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ }
+
+ @Override
+ public View newView(Context context, Cursor cursor, ViewGroup parent) {
+ return mLayoutInflator.inflate(R.layout.layout_client_cookie_list_item, null);
+ }
+
+ @Override
+ public void bindView(View view, Context context, Cursor cursor) {
+ int id = cursor.getInt(cursor.getColumnIndex(ClientAuthContentProvider.V3ClientAuth._ID));
+ final String where = ClientAuthContentProvider.V3ClientAuth._ID + "=" + id;
+ TextView domain = view.findViewById(R.id.cookie_onion);
+ String url = cursor.getString(cursor.getColumnIndex(ClientAuthContentProvider.V3ClientAuth.DOMAIN)) + ".onion";
+ domain.setText(url);
+ SwitchCompat enabled = view.findViewById(R.id.cookie_switch);
+ enabled.setChecked(cursor.getInt(cursor.getColumnIndex(ClientAuthContentProvider.V3ClientAuth.ENABLED)) == 1);
+ enabled.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ ContentResolver resolver = context.getContentResolver();
+ ContentValues fields = new ContentValues();
+ fields.put(ClientAuthContentProvider.V3ClientAuth.ENABLED, isChecked);
+ resolver.update(ClientAuthContentProvider.CONTENT_URI, fields, where, null);
+ Toast.makeText(context, R.string.please_restart_Orbot_to_enable_the_changes, Toast.LENGTH_LONG).show();
+ });
+ }
+}
+
diff --git a/app/src/main/res/layout/activity_v3auth.xml b/app/src/main/res/layout/activity_v3auth.xml
index a0e66741..647976c8 100644
--- a/app/src/main/res/layout/activity_v3auth.xml
+++ b/app/src/main/res/layout/activity_v3auth.xml
@@ -21,7 +21,16 @@
</com.google.android.material.appbar.AppBarLayout>
- <include layout="@layout/layout_content_client_cookies" />
+ <FrameLayout
+ app:layout_behavior="@string/appbar_scrolling_view_behavior"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <ListView
+ android:id="@+id/auth_hash_list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+ </FrameLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
diff --git a/app/src/main/res/layout/dialog_add_v3_client_auth.xml b/app/src/main/res/layout/dialog_add_v3_client_auth.xml
index ec310a0c..9502da01 100644
--- a/app/src/main/res/layout/dialog_add_v3_client_auth.xml
+++ b/app/src/main/res/layout/dialog_add_v3_client_auth.xml
@@ -8,7 +8,8 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/onion"
+ android:text="@string/v3_onion"
+ android:hint="@string/onion"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" />
<org.torproject.android.core.ui.NoPersonalizedLearningEditText
@@ -21,7 +22,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:text="@string/auth_cookie"
+ android:text="@string/v3_key_hash"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small" />
<org.torproject.android.core.ui.NoPersonalizedLearningEditText
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index c1ac42e8..1ad03b32 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -238,4 +238,5 @@
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen>
+ <dimen name="alert_dialog_margin">20dp</dimen>
</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a312d6da..e812a3c2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -169,9 +169,18 @@
<string name="vpn_default_world">Global (Auto)</string>
<string name="hidden_services">Onion Services</string>
- <string name="v2_hidden_services">V2 Onion Services (Deprecated)</string>
- <string name="v3_hosted_services">Hosted V3 Onion Services</string>
- <string name="v3_client_auth">V3 Onion Service Client Authorization</string>
+ <string name="v2_hidden_services">v2 Onion Services (Deprecated)</string>
+ <string name="v3_hosted_services">Hosted v3 Onion Services</string>
+ <string name="v3_client_auth">v3 Onion Service Client Authorization</string>
+ <string name="v3_client_auth_activity_title">v3 Client Authorization</string>
+ <string name="v3_key_hash">X25519 Private Key in Base 32</string>
+ <string name="v3_onion">v3 .onion Domain</string>
+ <string name="v3_backup_key">Backup Client Authorization Key</string>
+ <string name="v3_backup_key_warning">Warning: This Could Expose Your Key to Other Apps</string>
+ <string name="v3_delete_client_authorization">Delete Client Authorization Key</string>
+ <string name="v3_delete_client_authorization_confirm">Delete Client Authorization</string>
+ <string name="v3_backup_name_hint">Backup filename…</string>
+ <string name="confirm">Confirm</string>
<string name="title_activity_hidden_services">Onion Services</string>
<string name="menu_hidden_services">Onion Services</string>
<string name="save">Save</string>
@@ -181,7 +190,7 @@
<string name="done">Done!</string>
<string name="copy_address_to_clipboard">Copy address to clipboard</string>
<string name="show_auth_cookie">Show auth cookie</string>
- <string name="backup_service">Backup Service</string>
+ <string name="backup_service">Backup Service <i>(Warning: This Could Expose Your Service Configuration to Other Apps)</i></string>
<string name="delete_service">Delete Service</string>
<string name="backup_saved_at_external_storage">Backup saved at external storage</string>
<string name="backup_restored">Backup restored</string>
diff --git a/appcore/src/main/java/org/torproject/android/core/DiskUtils.kt b/appcore/src/main/java/org/torproject/android/core/DiskUtils.kt
index 8ac067b7..f473297c 100644
--- a/appcore/src/main/java/org/torproject/android/core/DiskUtils.kt
+++ b/appcore/src/main/java/org/torproject/android/core/DiskUtils.kt
@@ -72,7 +72,7 @@ object DiskUtils {
}
@JvmStatic
- fun recursivelyDeleteDirectory(directory: File) : Boolean {
+ fun recursivelyDeleteDirectory(directory: File): Boolean {
val contents = directory.listFiles()
contents?.forEach { recursivelyDeleteDirectory(it) }
return directory.delete()
diff --git a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
index b9dd34a1..9a401ac6 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
@@ -58,6 +58,7 @@ import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
@@ -89,6 +90,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private static final Uri V2_HS_CONTENT_URI = Uri.parse("content://org.torproject.android.ui.hiddenservices.providers/hs");
private static final Uri V3_ONION_SERVICES_CONTENT_URI = Uri.parse("content://org.torproject.android.ui.v3onionservice/v3");
private static final Uri COOKIE_CONTENT_URI = Uri.parse("content://org.torproject.android.ui.hiddenservices.providers.cookie/cookie");
+ private static final Uri V3_CLIENT_AUTH_URI = Uri.parse("content://org.torproject.android.ui.v3onionservice.clientauth/v3auth");
private final static String NOTIFICATION_CHANNEL_ID = "orbot_channel_1";
private static final String[] LEGACY_V2_ONION_SERVICE_PROJECTION = new String[]{
OnionService._ID,
@@ -112,6 +114,12 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
ClientCookie.DOMAIN,
ClientCookie.AUTH_COOKIE_VALUE,
ClientCookie.ENABLED};
+ private static final String[] V3_CLIENT_AUTH_PROJECTION = new String[]{
+ V3ClientAuth._ID,
+ V3ClientAuth.DOMAIN,
+ V3ClientAuth.HASH,
+ V3ClientAuth.ENABLED
+ };
public static int mPortSOCKS = -1;
public static int mPortHTTP = -1;
public static int mPortDns = TOR_DNS_PORT_DEFAULT;
@@ -135,7 +143,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private NotificationManager mNotificationManager = null;
private NotificationCompat.Builder mNotifyBuilder;
private boolean mNotificationShowing = false;
- private File mHSBasePath, mV3OnionBasePath;
+ private File mHSBasePath, mV3OnionBasePath, mV3AuthBasePath;
private ArrayList<Bridge> alBridges = null;
/**
@@ -305,17 +313,17 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private void stopTorAsync() {
- new Thread(() ->{
+ new Thread(() -> {
Log.i("OrbotService", "stopTor");
try {
sendCallbackStatus(STATUS_STOPPING);
sendCallbackLogMessage(getString(R.string.status_shutting_down));
- if (useIPtObfsMeekProxy())
- IPtProxy.stopObfs4Proxy();
+ if (useIPtObfsMeekProxy())
+ IPtProxy.stopObfs4Proxy();
- if (useIPtSnowflakeProxy())
- IPtProxy.stopSnowflake();
+ if (useIPtSnowflakeProxy())
+ IPtProxy.stopSnowflake();
stopTorDaemon(true);
@@ -333,21 +341,19 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
}).start();
}
- private static boolean useIPtObfsMeekProxy ()
- {
+ private static boolean useIPtObfsMeekProxy() {
String bridgeList = Prefs.getBridgesList();
- return bridgeList.contains("obfs")||bridgeList.contains("meek");
+ return bridgeList.contains("obfs") || bridgeList.contains("meek");
}
- private static boolean useIPtSnowflakeProxy ()
- {
+ private static boolean useIPtSnowflakeProxy() {
String bridgeList = Prefs.getBridgesList();
return bridgeList.contains("snowflake");
}
- private void startSnowflakeProxy () {
+ private void startSnowflakeProxy() {
//this is using the current, default Tor snowflake infrastructure
- IPtProxy.startSnowflake( "stun:stun.l.google.com:19302", "https://snowflake-broker.azureedge.net/",
+ IPtProxy.startSnowflake("stun:stun.l.google.com:19302", "https://snowflake-broker.azureedge.net/",
"ajax.aspnetcdn.com", null, true, false, true, 3);
}
@@ -448,6 +454,10 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if (!mV3OnionBasePath.isDirectory())
mV3OnionBasePath.mkdirs();
+ mV3AuthBasePath = new File(getFilesDir().getAbsolutePath(), TorServiceConstants.V3_CLIENT_AUTH_DIR);
+ if (!mV3AuthBasePath.isDirectory())
+ mV3AuthBasePath.mkdirs();
+
mEventHandler = new TorEventHandler(this);
if (mNotificationManager == null) {
@@ -780,6 +790,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
}
}
+
private void updateV3OnionNames() throws SecurityException {
ContentResolver contentResolver = getApplicationContext().getContentResolver();
Cursor onionServices = contentResolver.query(V3_ONION_SERVICES_CONTENT_URI, null, null, null, null);
@@ -1309,8 +1320,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if (!TextUtils.isEmpty(builtInBridgeType))
getBridges(builtInBridgeType, extraLines);
- else
- {
+ else {
String[] bridgeListLines = parseBridgesFromSettings(bridgeList);
int bridgeIdx = (int) Math.floor(Math.random() * ((double) bridgeListLines.length));
String bridgeLine = bridgeListLines[bridgeIdx];
@@ -1370,6 +1380,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
ContentResolver contentResolver = getApplicationContext().getContentResolver();
addV3OnionServicesToTorrc(extraLines, contentResolver);
+ addV3ClientAuthToTorrc(extraLines, contentResolver);
addV2HiddenServicesToTorrc(extraLines, contentResolver);
addV2ClientCookiesToTorrc(extraLines, contentResolver);
return extraLines;
@@ -1428,6 +1439,34 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
}
}
+ public static String buildV3ClientAuthFile(String domain, String keyHash) {
+ return domain + ":descriptor:x25519:" + keyHash;
+ }
+
+ private void addV3ClientAuthToTorrc(StringBuffer torrc, ContentResolver contentResolver) {
+ Cursor v3auths = contentResolver.query(V3_CLIENT_AUTH_URI, V3_CLIENT_AUTH_PROJECTION, V3ClientAuth.ENABLED + "=1", null, null);
+ if (v3auths != null) {
+ for (File file : mV3AuthBasePath.listFiles()) {
+ if (!file.isDirectory())
+ file.delete(); // todo the adapter should maybe just write these files and not do this in service...
+ }
+ torrc.append("ClientOnionAuthDir " + mV3AuthBasePath.getAbsolutePath()).append('\n');
+ try {
+ while (v3auths.moveToNext()) {
+ String domain = v3auths.getString(v3auths.getColumnIndex(V3ClientAuth.DOMAIN));
+ String hash = v3auths.getString(v3auths.getColumnIndex(V3ClientAuth.HASH));
+ File authFile = new File(mV3AuthBasePath, domain + ".auth_private");
+ authFile.createNewFile();
+ FileOutputStream fos = new FileOutputStream(authFile);
+ fos.write(buildV3ClientAuthFile(domain, hash).getBytes());
+ fos.close();
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "error adding v3 client auth...");
+ }
+ }
+ }
+
private void addV2ClientCookiesToTorrc(StringBuffer torrc, ContentResolver contentResolver) {
try {
Cursor client_cookies = contentResolver.query(COOKIE_CONTENT_URI, LEGACY_COOKIE_PROJECTION, ClientCookie.ENABLED + "=1", null, null);
@@ -1617,18 +1656,18 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
public static final String AUTH_COOKIE = "auth_cookie";
public static final String AUTH_COOKIE_VALUE = "auth_cookie_value";
public static final String ENABLED = "enabled";
+ }
- private OnionService() {
- }
+ public static final class V3ClientAuth implements BaseColumns {
+ public static final String DOMAIN = "domain";
+ public static final String HASH = "hash";
+ public static final String ENABLED = "enabled";
}
public static final class ClientCookie implements BaseColumns {
public static final String DOMAIN = "domain";
public static final String AUTH_COOKIE_VALUE = "auth_cookie_value";
public static final String ENABLED = "enabled";
-
- private ClientCookie() {
- }
}
// for bridge loading from the assets default bridges.txt file
@@ -1654,7 +1693,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
IPtProxy.startObfs4Proxy("DEBUG", false, false);
if (useIPtSnowflakeProxy())
- startSnowflakeProxy();
+ startSnowflakeProxy();
startTor();
diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java
index 915f149d..e69d8ba6 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java
@@ -113,5 +113,6 @@ public interface TorServiceConstants {
String HIDDEN_SERVICES_DIR = "hidden_services";
String ONION_SERVICES_DIR = "v3_onion_services";
+ String V3_CLIENT_AUTH_DIR = "v3_client_auth";
}
1
0
[orbot/master] Merge pull request #432 from bitmold/unmeterd_vpn_androidQ
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 8bfad5e37ee4116595dd68b0e72810b1f4c889ef
Merge: 75bebd89 729bffd2
Author: Nathan Freitas <nathan(a)guardianproject.info>
Date: Thu Feb 4 16:40:59 2021 -0500
Merge pull request #432 from bitmold/unmeterd_vpn_androidQ
Fixes #431 unmetered VpnService on Android Q+
.../torproject/android/service/vpn/OrbotVpnManager.java | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
1
0
[orbot/master] Merge branch 'master' of github.com:guardianproject/orbot
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 2fb2ed69a007b25d1535817d798d382cbdef29f2
Merge: db7dd6d5 fe69a315
Author: n8fr8 <nathan(a)guardianproject.info>
Date: Thu Feb 4 16:29:33 2021 -0500
Merge branch 'master' of github.com:guardianproject/orbot
app/src/main/AndroidManifest.xml | 11 ++--
.../torproject/android/ui/AppManagerActivity.java | 1 -
.../ui/hiddenservices/HiddenServicesActivity.java | 13 ++--
.../ui/hiddenservices/backup/BackupUtils.java | 6 +-
.../ui/hiddenservices/dialogs/AddCookieDialog.java | 2 +-
.../ui/onboarding/BridgeWizardActivity.java | 2 -
.../ui/onboarding/CustomBridgesActivity.java | 77 ++++++++--------------
.../android/ui/onboarding/MoatActivity.java | 2 -
8 files changed, 40 insertions(+), 74 deletions(-)
1
0
[orbot/master] When tor stops, stop sohwing wrong bandwidth stats
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 50c411f1dd5ebf075318f90bfd79d8cf7d32c4e5
Author: bim <dsnake(a)protonmail.com>
Date: Tue Feb 2 20:17:09 2021 -0500
When tor stops, stop sohwing wrong bandwidth stats
---
.../main/java/org/torproject/android/OrbotMainActivity.java | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 1ee58106..a53fb4c9 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -308,9 +308,7 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
downloadText = findViewById(R.id.trafficDown);
uploadText = findViewById(R.id.trafficUp);
- String zero = String.format("%s / %s", formatCount(0), formatTotal(0));
- downloadText.setText(zero);
- uploadText.setText(zero);
+ resetBandwidthStatTextviews();
mBtnStart = findViewById(R.id.btnStart);
mBtnStart.setOnClickListener(v -> toggleTor());
@@ -340,6 +338,12 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
mPulsator = findViewById(R.id.pulsator);
}
+ private void resetBandwidthStatTextviews() {
+ String zero = String.format("%s / %s", formatCount(0), formatTotal(0));
+ downloadText.setText(zero);
+ uploadText.setText(zero);
+ }
+
private void toggleTor() { // UI entry point for (dis)connecting to Tor
if (torStatus.equals(TorServiceConstants.STATUS_OFF)) {
lblStatus.setText(getString(R.string.status_starting_up));
@@ -1033,6 +1037,7 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
lblStatus.setText(String.format("Tor v%s", OrbotService.BINARY_TOR_VERSION));
mBtnStart.setText(R.string.menu_start);
mPulsator.start();
+ resetBandwidthStatTextviews();
break;
}
1
0
[orbot/master] Fixes #431 unmetered VpnService on Android Q+ - removed small warnings in OrbotVpnManager.java
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 729bffd2529c4349a99c443d3066600855e99ea0
Author: bim <dsnake(a)protonmail.com>
Date: Wed Jan 27 15:20:01 2021 -0500
Fixes #431 unmetered VpnService on Android Q+ - removed small warnings in OrbotVpnManager.java
---
.../torproject/android/service/vpn/OrbotVpnManager.java | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java
index 89e351c4..df7cf087 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/vpn/OrbotVpnManager.java
@@ -69,15 +69,15 @@ public class OrbotVpnManager implements Handler.Callback {
boolean isStarted = false;
File filePdnsPid;
private Thread mThreadVPN;
- private String mSessionName = "OrbotVPN";
+ private final static String mSessionName = "OrbotVPN";
private ParcelFileDescriptor mInterface;
private int mTorSocks = -1;
private int mTorDns = -1;
private int pdnsdPort = 8091;
private ProxyServer mSocksProxyServer;
- private File filePdnsd;
+ private final File filePdnsd;
private boolean isRestart = false;
- private VpnService mService;
+ private final VpnService mService;
public OrbotVpnManager(VpnService service) throws IOException, TimeoutException {
mService = service;
@@ -291,6 +291,11 @@ public class OrbotVpnManager implements Handler.Callback {
if (mIsLollipop)
doLollipopAppRouting(builder);
+ // https://developer.android.com/reference/android/net/VpnService.Builder#setM…
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ builder.setMetered(false);
+ }
+
// Create a new interface using the builder and save the parameters.
ParcelFileDescriptor newInterface = builder.setSession(mSessionName)
.setConfigureIntent(null) // previously this was set to a null member variable
@@ -380,7 +385,7 @@ public class OrbotVpnManager implements Handler.Callback {
}
- private boolean stopDns() {
+ private void stopDns() {
if (filePdnsPid != null && filePdnsPid.exists()) {
List<String> lines;
try {
@@ -393,7 +398,6 @@ public class OrbotVpnManager implements Handler.Callback {
Log.e("OrbotVPN", "error killing dns process", e);
}
}
- return false;
}
public boolean isStarted() {
1
0
[orbot/master] Merge branch 'v3onions' of https://github.com/bitmold/orbot into bitmold-v3onions
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit ecb5a930ae0b5624be76ba2f1adb259168669d34
Merge: 2fb2ed69 f13b53b8
Author: n8fr8 <nathan(a)guardianproject.info>
Date: Thu Feb 4 16:30:30 2021 -0500
Merge branch 'v3onions' of https://github.com/bitmold/orbot into bitmold-v3onions
app/src/main/AndroidManifest.xml | 33 +-
.../java/org/torproject/android/MainConstants.java | 15 -
.../org/torproject/android/OrbotMainActivity.java | 153 ++++---
.../ui/hiddenservices/ClientCookiesActivity.java | 12 +-
.../ui/hiddenservices/HiddenServicesActivity.java | 24 +-
.../hiddenservices/adapters/OnionListAdapter.java | 7 +-
.../ui/hiddenservices/backup/BackupUtils.java | 175 +++++++-
.../backup/{ZipIt.java => ZipUtilities.java} | 14 +-
.../ui/hiddenservices/dialogs/AddCookieDialog.java | 6 +-
.../dialogs/CookieActionsDialog.java | 2 +-
.../ui/hiddenservices/dialogs/HSActionsDialog.java | 4 +-
.../ui/hiddenservices/dialogs/HSDeleteDialog.java | 6 +-
.../permissions/PermissionManager.java | 14 +-
.../providers/HSContentProvider.java | 6 +-
.../ui/onboarding/CustomBridgesActivity.java | 6 +-
.../OnionServiceActionsDialogFragment.java | 94 ++++
.../ui/v3onionservice/OnionServiceActivity.java | 178 ++++++++
.../OnionServiceContentProvider.java | 110 +++++
.../OnionServiceCreateDialogFragment.java | 98 +++++
.../ui/v3onionservice/OnionServiceDatabase.java | 37 ++
.../OnionServiceDeleteDialogFragment.java | 40 ++
.../ui/v3onionservice/OnionV3ListAdapter.java | 53 +++
.../ClientAuthActionsDialogFragment.java | 42 ++
.../clientauth/ClientAuthActivity.java | 142 ++++++
.../clientauth/ClientAuthBackupDialogFragment.java | 90 ++++
.../clientauth/ClientAuthContentProvider.java | 104 +++++
.../clientauth/ClientAuthCreateDialogFragment.java | 95 ++++
.../clientauth/ClientAuthDatabase.java | 30 ++
.../clientauth/ClientAuthDeleteDialogFragment.java | 36 ++
.../clientauth/ClientAuthListAdapter.java | 49 +++
app/src/main/res/layout/activity_v3auth.xml | 45 ++
.../main/res/layout/dialog_add_v3_client_auth.xml | 34 ++
app/src/main/res/menu/orbot_main.xml | 137 +++---
app/src/main/res/values/dimens.xml | 1 +
app/src/main/res/values/strings.xml | 18 +-
.../java/org/torproject/android/core/DiskUtils.kt | 11 +-
.../torproject/android/service/OrbotService.java | 486 +++++++++------------
.../android/service/TorServiceConstants.java | 3 +-
38 files changed, 1884 insertions(+), 526 deletions(-)
1
0
[orbot/master] removed QR Codes from main screen, all bridge QR scanning/sharing happens in bridge wizard
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 2380ed07c587b4b9712c65e23dbd1ddbb20139be
Author: bim <dsnake(a)protonmail.com>
Date: Wed Feb 3 12:07:11 2021 -0500
removed QR Codes from main screen, all bridge QR scanning/sharing happens in bridge wizard
---
app-mini/src/main/res/values-ar/strings.xml | 3 +-
app-mini/src/main/res/values-ay/strings.xml | 3 +-
app-mini/src/main/res/values-az/strings.xml | 3 +-
app-mini/src/main/res/values-be/strings.xml | 3 +-
app-mini/src/main/res/values-bg/strings.xml | 3 +-
app-mini/src/main/res/values-ca/strings.xml | 3 +-
app-mini/src/main/res/values-cs-rCZ/strings.xml | 3 +-
app-mini/src/main/res/values-de/strings.xml | 3 +-
app-mini/src/main/res/values-el/strings.xml | 3 +-
app-mini/src/main/res/values-es/strings.xml | 3 +-
app-mini/src/main/res/values-eu/strings.xml | 3 +-
app-mini/src/main/res/values-fa/strings.xml | 3 +-
app-mini/src/main/res/values-fi/strings.xml | 3 +-
app-mini/src/main/res/values-fr-rFR/strings.xml | 3 +-
app-mini/src/main/res/values-fr/strings.xml | 3 +-
app-mini/src/main/res/values-gl/strings.xml | 3 +-
app-mini/src/main/res/values-he/strings.xml | 3 +-
app-mini/src/main/res/values-hi/strings.xml | 3 +-
app-mini/src/main/res/values-hr/strings.xml | 3 +-
app-mini/src/main/res/values-hu/strings.xml | 3 +-
app-mini/src/main/res/values-id/strings.xml | 3 +-
app-mini/src/main/res/values-in-rID/strings.xml | 3 +-
app-mini/src/main/res/values-is/strings.xml | 3 +-
app-mini/src/main/res/values-it/strings.xml | 3 +-
app-mini/src/main/res/values-iw/strings.xml | 3 +-
app-mini/src/main/res/values-ja/strings.xml | 3 +-
app-mini/src/main/res/values-ko/strings.xml | 3 +-
app-mini/src/main/res/values-lv/strings.xml | 3 +-
app-mini/src/main/res/values-mk/strings.xml | 3 +-
app-mini/src/main/res/values-nb/strings.xml | 3 +-
app-mini/src/main/res/values-nl/strings.xml | 3 +-
app-mini/src/main/res/values-pl/strings.xml | 3 +-
app-mini/src/main/res/values-pt-rBR/strings.xml | 3 +-
app-mini/src/main/res/values-pt-rPT/strings.xml | 3 +-
app-mini/src/main/res/values-pt/strings.xml | 3 +-
app-mini/src/main/res/values-ro/strings.xml | 3 +-
app-mini/src/main/res/values-ru/strings.xml | 3 +-
app-mini/src/main/res/values-sk/strings.xml | 3 +-
app-mini/src/main/res/values-sr/strings.xml | 3 +-
app-mini/src/main/res/values-sv/strings.xml | 3 +-
app-mini/src/main/res/values-th/strings.xml | 3 +-
app-mini/src/main/res/values-tr/strings.xml | 3 +-
app-mini/src/main/res/values-uk/strings.xml | 3 +-
app-mini/src/main/res/values-vi/strings.xml | 3 +-
app-mini/src/main/res/values-zh-rCN/strings.xml | 3 +-
app-mini/src/main/res/values-zh-rTW/strings.xml | 3 +-
app-mini/src/main/res/values/strings.xml | 2 -
.../org/torproject/android/OrbotMainActivity.java | 67 ----------------
app/src/main/res/layout/layout_apps_item.xml | 1 -
app/src/main/res/menu/orbot_main.xml | 93 ++++++++--------------
app/src/main/res/values-ar/strings.xml | 1 -
app/src/main/res/values-ay/strings.xml | 3 +-
app/src/main/res/values-az/strings.xml | 3 +-
app/src/main/res/values-be/strings.xml | 3 +-
app/src/main/res/values-bg/strings.xml | 3 +-
app/src/main/res/values-ca/strings.xml | 1 -
app/src/main/res/values-cs-rCZ/strings.xml | 3 +-
app/src/main/res/values-de/strings.xml | 1 -
app/src/main/res/values-el/strings.xml | 1 -
app/src/main/res/values-es/strings.xml | 1 -
app/src/main/res/values-eu/strings.xml | 1 -
app/src/main/res/values-fa/strings.xml | 1 -
app/src/main/res/values-fi/strings.xml | 1 -
app/src/main/res/values-fr-rFR/strings.xml | 1 -
app/src/main/res/values-fr/strings.xml | 3 +-
app/src/main/res/values-gl/strings.xml | 1 -
app/src/main/res/values-he/strings.xml | 1 -
app/src/main/res/values-hi/strings.xml | 1 -
app/src/main/res/values-hr/strings.xml | 3 +-
app/src/main/res/values-hu/strings.xml | 1 -
app/src/main/res/values-id/strings.xml | 3 +-
app/src/main/res/values-in-rID/strings.xml | 3 +-
app/src/main/res/values-is/strings.xml | 1 -
app/src/main/res/values-it/strings.xml | 1 -
app/src/main/res/values-iw/strings.xml | 3 +-
app/src/main/res/values-ja/strings.xml | 1 -
app/src/main/res/values-ko/strings.xml | 3 +-
app/src/main/res/values-lv/strings.xml | 3 +-
app/src/main/res/values-mk/strings.xml | 1 -
app/src/main/res/values-nb/strings.xml | 1 -
app/src/main/res/values-nl/strings.xml | 1 -
app/src/main/res/values-pl/strings.xml | 1 -
app/src/main/res/values-pt-rBR/strings.xml | 1 -
app/src/main/res/values-pt-rPT/strings.xml | 1 -
app/src/main/res/values-pt/strings.xml | 1 -
app/src/main/res/values-ro/strings.xml | 3 +-
app/src/main/res/values-ru/strings.xml | 1 -
app/src/main/res/values-sk/strings.xml | 3 +-
app/src/main/res/values-sr/strings.xml | 3 +-
app/src/main/res/values-sv/strings.xml | 1 -
app/src/main/res/values-th/strings.xml | 1 -
app/src/main/res/values-tr/strings.xml | 1 -
app/src/main/res/values-uk/strings.xml | 1 -
app/src/main/res/values-vi/strings.xml | 1 -
app/src/main/res/values-zh-rCN/strings.xml | 1 -
app/src/main/res/values-zh-rTW/strings.xml | 3 +-
app/src/main/res/values/strings.xml | 2 -
97 files changed, 93 insertions(+), 288 deletions(-)
diff --git a/app-mini/src/main/res/values-ar/strings.xml b/app-mini/src/main/res/values-ar/strings.xml
index a8dbc404..1c7d7033 100644
--- a/app-mini/src/main/res/values-ar/strings.xml
+++ b/app-mini/src/main/res/values-ar/strings.xml
@@ -120,8 +120,7 @@
<string name="mb">ميغابايت</string>
<string name="bridges_updated">تم تحديث الجسور</string>
<string name="restart_orbot_to_use_this_bridge_">الرجاء إعادة تشغيل أوربوت لتفعيل التعديلات</string>
- <string name="menu_qr">رمز كيو آر</string>
- <string name="get_bridges_email">البريد الإلكتروني</string>
+ <string name="get_bridges_email">البريد الإلكتروني</string>
<string name="activate">تفعيل</string>
<string name="apps_mode">وضع الـ VPN</string>
<string name="send_email">أرسل بريد الكتروني</string>
diff --git a/app-mini/src/main/res/values-ay/strings.xml b/app-mini/src/main/res/values-ay/strings.xml
index ca0481a8..3c716a32 100644
--- a/app-mini/src/main/res/values-ay/strings.xml
+++ b/app-mini/src/main/res/values-ay/strings.xml
@@ -123,8 +123,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Jichhaptayat jalakipañanaka</string>
<string name="restart_orbot_to_use_this_bridge_">Mayjt\'ayatanak aqtayañatak Orbot mayamp qhant\'ayam, amp suma</string>
- <string name="menu_qr">QR chimpunaka</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Jawsañ apnaqirinakax Tor jark\'antañ yatipk ukjax \'Jalakipañ yanapiri\' mantañatak apnaqarakismawa. Yant\'añataki, mayjt\'ayañatakix AJLLT\'AM...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Jawsañ apnaqirinakax Tor jark\'antañ yatipk ukjax \'Jalakipañ yanapiri\' mantañatak apnaqarakismawa. Yant\'añataki, mayjt\'ayañatakix AJLLT\'AM...</string>
<string name="get_bridges_email">Imaylu (Email)</string>
<string name="activate">Qhantayaña</string>
<string name="apps_mode">VPN</string>
diff --git a/app-mini/src/main/res/values-az/strings.xml b/app-mini/src/main/res/values-az/strings.xml
index 5f50bf33..10f315a7 100644
--- a/app-mini/src/main/res/values-az/strings.xml
+++ b/app-mini/src/main/res/values-az/strings.xml
@@ -120,8 +120,7 @@ LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="mb">MB</string>
<string name="bridges_updated">Körpülər yeniləndi</string>
<string name="restart_orbot_to_use_this_bridge_">Lütfən, Orbotu söndürün və yenidən yandırın ki, dəyişikliklər tətbiq edilsin.</string>
- <string name="menu_qr">QR kodlar</string>
- <string name="get_bridges_email">Emeyl</string>
+ <string name="get_bridges_email">Emeyl</string>
<string name="activate">Aktivləşdir</string>
<string name="send_email">Emeyl göndərin</string>
<string name="save">Saxla</string>
diff --git a/app-mini/src/main/res/values-be/strings.xml b/app-mini/src/main/res/values-be/strings.xml
index 462ce5fc..7f3816ce 100644
--- a/app-mini/src/main/res/values-be/strings.xml
+++ b/app-mini/src/main/res/values-be/strings.xml
@@ -123,8 +123,7 @@
<string name="mb">МБ</string>
<string name="bridges_updated">Масты абноўлены</string>
<string name="restart_orbot_to_use_this_bridge_">Калі ласка, перазапусціце Orbot для ўступу змены ў сілу</string>
- <string name="menu_qr">QR-коды</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Калі ваша мабільная сетка актыўна блакуе Tor, вы можаце выкарыстоўваць масты Tor для доступу да сеткі. Абярыце адзін з варыянтаў для налады і тэставання:</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Калі ваша мабільная сетка актыўна блакуе Tor, вы можаце выкарыстоўваць масты Tor для доступу да сеткі. Абярыце адзін з варыянтаў для налады і тэставання:</string>
<string name="get_bridges_email">Эл. пошта</string>
<string name="activate">Актывацыя</string>
<string name="apps_mode">VPN-рэжым</string>
diff --git a/app-mini/src/main/res/values-bg/strings.xml b/app-mini/src/main/res/values-bg/strings.xml
index 90da19be..ad2b7339 100644
--- a/app-mini/src/main/res/values-bg/strings.xml
+++ b/app-mini/src/main/res/values-bg/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Мостове включени!</string>
<string name="restart_orbot_to_use_this_bridge_">Моля, рестартирай Orbot, за да влязат в действие промените</string>
- <string name="menu_qr">QR Кодове</string>
- <string name="get_bridges_email">Имейл</string>
+ <string name="get_bridges_email">Имейл</string>
<string name="activate">Активирай</string>
<string name="send_email">Изпрати имейл</string>
<string name="hidden_services">Скрити услуги</string>
diff --git a/app-mini/src/main/res/values-ca/strings.xml b/app-mini/src/main/res/values-ca/strings.xml
index 36e2a1d2..e1b695fd 100644
--- a/app-mini/src/main/res/values-ca/strings.xml
+++ b/app-mini/src/main/res/values-ca/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">S\'han actualitzat els ponts</string>
<string name="restart_orbot_to_use_this_bridge_">Reinicieu l\'Orbot per aplicar els canvis</string>
- <string name="menu_qr">Codis QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si la teva xarxa mòbil boqueja activament Tor, pots utilitzar un \'Servidor pont\' com a via alternativa. SELECCIONA una de les opcions per configurar i provar.</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si la teva xarxa mòbil boqueja activament Tor, pots utilitzar un \'Servidor pont\' com a via alternativa. SELECCIONA una de les opcions per configurar i provar.</string>
<string name="get_bridges_email">Correu-e</string>
<string name="activate">Activa</string>
<string name="apps_mode">Mode VPN</string>
diff --git a/app-mini/src/main/res/values-cs-rCZ/strings.xml b/app-mini/src/main/res/values-cs-rCZ/strings.xml
index e9269469..3af1cf91 100644
--- a/app-mini/src/main/res/values-cs-rCZ/strings.xml
+++ b/app-mini/src/main/res/values-cs-rCZ/strings.xml
@@ -118,8 +118,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridge aktualizovány</string>
<string name="restart_orbot_to_use_this_bridge_">Pro projevení změn restartujte Orbot</string>
- <string name="menu_qr">QR kódy</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Aktivovat</string>
<string name="send_email">Pošli email</string>
<string name="save">Uložit</string>
diff --git a/app-mini/src/main/res/values-de/strings.xml b/app-mini/src/main/res/values-de/strings.xml
index 48ec58f3..ef54116a 100644
--- a/app-mini/src/main/res/values-de/strings.xml
+++ b/app-mini/src/main/res/values-de/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Brücken Aktualisiert</string>
<string name="restart_orbot_to_use_this_bridge_">Bitte Tor Erneut Starten um die Änderungen wirksam werden zu lassen</string>
- <string name="menu_qr">QR Codes</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Wenn Ihr mobiles Netzwerk Tor blockiert, können Sie einen \"Brücken-Server\" als alternativen Weg verwenden. Wählen Sie eine der Optionen zum Konfigurieren und Testen ..,.</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Wenn Ihr mobiles Netzwerk Tor blockiert, können Sie einen \"Brücken-Server\" als alternativen Weg verwenden. Wählen Sie eine der Optionen zum Konfigurieren und Testen ..,.</string>
<string name="get_bridges_email">E-Mail</string>
<string name="activate">Aktivieren</string>
<string name="apps_mode">VPN Modus</string>
diff --git a/app-mini/src/main/res/values-el/strings.xml b/app-mini/src/main/res/values-el/strings.xml
index cfff37a8..f2606b40 100644
--- a/app-mini/src/main/res/values-el/strings.xml
+++ b/app-mini/src/main/res/values-el/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Οι γέφυρες ενημερώθηκαν</string>
<string name="restart_orbot_to_use_this_bridge_">Παρακαλούμε επανεκκινήστε το Orbot για να ενεργοποιήσετε τις αλλαγές</string>
- <string name="menu_qr">Κώδικες QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Αν το δίκτυο κινητής τηλεφωνίας σας μπλοκάρει ενεργά το Tor, μπορείτε να χρησιμοποιήσετε μια γέφυρα για να έχετε πρόσβαση στο δίκτυο. ΕΠΙΛΕΞΤΕ έναν από τους παραπάνω τύπους γέφυρας για να ενεργοποιήσετε τις γέφυρες.</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Αν το δίκτυο κινητής τηλεφωνίας σας μπλοκάρει ενεργά το Tor, μπορείτε να χρησιμοποιήσετε μια γέφυρα για να έχετε πρόσβαση στο δίκτυο. ΕΠΙΛΕΞΤΕ έναν από τους παραπάνω τύπους γέφυρας για να ενεργοποιήσετε τις γέφυρες.</string>
<string name="get_bridges_email">Email</string>
<string name="activate">Ενεργοποίηση</string>
<string name="apps_mode">Λειτουργία VPN</string>
diff --git a/app-mini/src/main/res/values-es/strings.xml b/app-mini/src/main/res/values-es/strings.xml
index 21b80b75..be58295d 100644
--- a/app-mini/src/main/res/values-es/strings.xml
+++ b/app-mini/src/main/res/values-es/strings.xml
@@ -125,8 +125,7 @@ direcciones (o rangos). No prevalecen sobre las configuraciones de exclusión de
<string name="mb">MB</string>
<string name="bridges_updated">Bridges actualizados</string>
<string name="restart_orbot_to_use_this_bridge_">Por favor, reinicie Orbot para habilitar los cambios</string>
- <string name="menu_qr">Códigos QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si su red móvil bloquea Tor activamente, puede usar un \'Servidor Puente\' como alternativa para acceder. SELECCIONE una de las opciones a configurar y probar...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si su red móvil bloquea Tor activamente, puede usar un \'Servidor Puente\' como alternativa para acceder. SELECCIONE una de las opciones a configurar y probar...</string>
<string name="get_bridges_email">Correo electrónico</string>
<string name="activate">Activar</string>
<string name="apps_mode">Modo VPN</string>
diff --git a/app-mini/src/main/res/values-eu/strings.xml b/app-mini/src/main/res/values-eu/strings.xml
index c1d362ad..784d55f3 100644
--- a/app-mini/src/main/res/values-eu/strings.xml
+++ b/app-mini/src/main/res/values-eu/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Zubiak eguneratuta</string>
<string name="restart_orbot_to_use_this_bridge_">Berrabiarazi Orbot aldaketak aplikatzeko</string>
- <string name="menu_qr">QR Kodeak</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Zure sare mugikorrak Tor nahita blokeatzen badu, \'Zubi zerbitzaria\' erabili dezakezu ordezko sarbide gisa. HAUTATU konfiguratzeko aukera bat eta probatu...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Zure sare mugikorrak Tor nahita blokeatzen badu, \'Zubi zerbitzaria\' erabili dezakezu ordezko sarbide gisa. HAUTATU konfiguratzeko aukera bat eta probatu...</string>
<string name="get_bridges_email">E-mail</string>
<string name="activate">Aktibatu</string>
<string name="apps_mode">VPN modua</string>
diff --git a/app-mini/src/main/res/values-fa/strings.xml b/app-mini/src/main/res/values-fa/strings.xml
index 9078e6b5..5549d9a4 100644
--- a/app-mini/src/main/res/values-fa/strings.xml
+++ b/app-mini/src/main/res/values-fa/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridges به روز شدند</string>
<string name="restart_orbot_to_use_this_bridge_">برای فعال کردن تغییرات لطفا Orbot را راه اندازی مجدد کنید</string>
- <string name="menu_qr">کدهای QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">اگر شبکه همراهتان به صورت مرتب تور را مسدود میکند، میتوانید از یک «کارساز پل» به عنوان راهی جایگزین برای ورود استفاده کنید. برای پیکربندی و تست، یکی از گزینهها را انتخاب کنید…</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">اگر شبکه همراهتان به صورت مرتب تور را مسدود میکند، میتوانید از یک «کارساز پل» به عنوان راهی جایگزین برای ورود استفاده کنید. برای پیکربندی و تست، یکی از گزینهها را انتخاب کنید…</string>
<string name="get_bridges_email">ایمیل</string>
<string name="activate">فعال</string>
<string name="apps_mode">حالت VPN</string>
diff --git a/app-mini/src/main/res/values-fi/strings.xml b/app-mini/src/main/res/values-fi/strings.xml
index 73ceb3ac..cdc55e39 100644
--- a/app-mini/src/main/res/values-fi/strings.xml
+++ b/app-mini/src/main/res/values-fi/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">Mt</string>
<string name="bridges_updated">Sillat päivitetty</string>
<string name="restart_orbot_to_use_this_bridge_">Käynnistä Orbot uudelleen ottaaksesi muutokset käyttöön</string>
- <string name="menu_qr">QR-koodit</string>
- <string name="get_bridges_email">Sähköposti</string>
+ <string name="get_bridges_email">Sähköposti</string>
<string name="activate">Ota käyttöön</string>
<string name="send_email">Lähetä sähköpostia</string>
<string name="hidden_services">Piilopalvelut</string>
diff --git a/app-mini/src/main/res/values-fr-rFR/strings.xml b/app-mini/src/main/res/values-fr-rFR/strings.xml
index 601b244c..d6b24e93 100644
--- a/app-mini/src/main/res/values-fr-rFR/strings.xml
+++ b/app-mini/src/main/res/values-fr-rFR/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">Mo</string>
<string name="bridges_updated">Ponts mis à jour</string>
<string name="restart_orbot_to_use_this_bridge_">Veuillez redémarrer Orbot pour activer les changements</string>
- <string name="menu_qr">Codes QR</string>
- <string name="get_bridges_email">Courriel</string>
+ <string name="get_bridges_email">Courriel</string>
<string name="activate">Activer</string>
<string name="send_email">Envoyer un courriel</string>
<string name="save">Enregistrer</string>
diff --git a/app-mini/src/main/res/values-fr/strings.xml b/app-mini/src/main/res/values-fr/strings.xml
index d5b8edca..b7864916 100644
--- a/app-mini/src/main/res/values-fr/strings.xml
+++ b/app-mini/src/main/res/values-fr/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">Mo</string>
<string name="bridges_updated">Ponts mis à jour</string>
<string name="restart_orbot_to_use_this_bridge_">Veuillez redémarrer Orbot pour activer les changements</string>
- <string name="menu_qr">Codes QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si votre réseau mobile bloque Tor activement, vous pouvez utiliser un serveur-pont comme moyen de remplacement. CHOISIR une des options pour configurer et tester…</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si votre réseau mobile bloque Tor activement, vous pouvez utiliser un serveur-pont comme moyen de remplacement. CHOISIR une des options pour configurer et tester…</string>
<string name="get_bridges_email">Courriel</string>
<string name="activate">Activer</string>
<string name="apps_mode">Mode RPV</string>
diff --git a/app-mini/src/main/res/values-gl/strings.xml b/app-mini/src/main/res/values-gl/strings.xml
index afa33369..5af10811 100644
--- a/app-mini/src/main/res/values-gl/strings.xml
+++ b/app-mini/src/main/res/values-gl/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Pontes actualizadas</string>
<string name="restart_orbot_to_use_this_bridge_">Por favor, reinicie Orbot para activar os cambios</string>
- <string name="menu_qr">Códigod QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si a súa rede móbil bloquea Tor de xeito activo, pode utilizar un \'Servidor Ponte\' como modo alternativo. ESCOLL unha das opcións para configurar e probar...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si a súa rede móbil bloquea Tor de xeito activo, pode utilizar un \'Servidor Ponte\' como modo alternativo. ESCOLL unha das opcións para configurar e probar...</string>
<string name="get_bridges_email">Email</string>
<string name="activate">Activar</string>
<string name="apps_mode">Modo VPN</string>
diff --git a/app-mini/src/main/res/values-he/strings.xml b/app-mini/src/main/res/values-he/strings.xml
index 2e388a24..28552309 100644
--- a/app-mini/src/main/res/values-he/strings.xml
+++ b/app-mini/src/main/res/values-he/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">מ\"ב</string>
<string name="bridges_updated">גשרים עודכנו</string>
<string name="restart_orbot_to_use_this_bridge_">אנא הפעל מחדש את Orbot כדי לאפשר את השינויים</string>
- <string name="menu_qr">קודי QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">אם פעילות הרשת הניידת שלך חוסמת את Tor, אתה יכול להשתמש ב\'שרת גשר\' כדרך חלופית להיכנס. בחר אחת מאפשרויות כדי להגדיר ולבחון...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">אם פעילות הרשת הניידת שלך חוסמת את Tor, אתה יכול להשתמש ב\'שרת גשר\' כדרך חלופית להיכנס. בחר אחת מאפשרויות כדי להגדיר ולבחון...</string>
<string name="get_bridges_email">דוא\"ל</string>
<string name="activate">הפעל</string>
<string name="apps_mode">מצב VPN</string>
diff --git a/app-mini/src/main/res/values-hi/strings.xml b/app-mini/src/main/res/values-hi/strings.xml
index 5fbee296..8d683307 100644
--- a/app-mini/src/main/res/values-hi/strings.xml
+++ b/app-mini/src/main/res/values-hi/strings.xml
@@ -125,8 +125,7 @@
<string name="mb">मब </string>
<string name="bridges_updated">पुल अपडेटेड </string>
<string name="restart_orbot_to_use_this_bridge_">परिवर्तन सक्षम करने के लिए Orbot पुनः प्रारंभ करें</string>
- <string name="menu_qr">QR कोड</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">यदि आपका मोबाइल नेटवर्क सक्रिय रूप से टो को ब्लॉक करता है, तो आप \'पुल सर्वर\' को एक वैकल्पिक तरीके से उपयोग कर सकते हैं। कॉन्फ़िगर और परीक्षण करने के लिए विकल्पों में से एक का चयन करें ..,।</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">यदि आपका मोबाइल नेटवर्क सक्रिय रूप से टो को ब्लॉक करता है, तो आप \'पुल सर्वर\' को एक वैकल्पिक तरीके से उपयोग कर सकते हैं। कॉन्फ़िगर और परीक्षण करने के लिए विकल्पों में से एक का चयन करें ..,।</string>
<string name="get_bridges_email">ईमेल</string>
<string name="activate">सक्रिय</string>
<string name="apps_mode">वीपीएन मोड</string>
diff --git a/app-mini/src/main/res/values-hr/strings.xml b/app-mini/src/main/res/values-hr/strings.xml
index 6b096e51..ff0f3a6e 100644
--- a/app-mini/src/main/res/values-hr/strings.xml
+++ b/app-mini/src/main/res/values-hr/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Mostova ažurirano</string>
<string name="restart_orbot_to_use_this_bridge_">Ponovno pokrenite Orbot da bi omogućili promjene</string>
- <string name="menu_qr">QR kodovi</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Aktiviraj</string>
<string name="send_email">Pošalji email</string>
<string name="save">Spremi</string>
diff --git a/app-mini/src/main/res/values-hu/strings.xml b/app-mini/src/main/res/values-hu/strings.xml
index 7650c8be..7fea2a90 100644
--- a/app-mini/src/main/res/values-hu/strings.xml
+++ b/app-mini/src/main/res/values-hu/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Hidak frissítve</string>
<string name="restart_orbot_to_use_this_bridge_">Kérlek indítsd újra az Orbot-ot a változások engedélyezéséhez</string>
- <string name="menu_qr">QR kódok</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ha a mobil hálózata aktívan blokkolja a Tor-t, akkor választhatja a \'Híd szerver\'-t, mint alternatív utat. VÁLASSZON egyet a lehetőségek közül és tesztelje....</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ha a mobil hálózata aktívan blokkolja a Tor-t, akkor választhatja a \'Híd szerver\'-t, mint alternatív utat. VÁLASSZON egyet a lehetőségek közül és tesztelje....</string>
<string name="get_bridges_email">Email</string>
<string name="activate">Aktiválás</string>
<string name="apps_mode">VPN Mód</string>
diff --git a/app-mini/src/main/res/values-id/strings.xml b/app-mini/src/main/res/values-id/strings.xml
index 5f3dcb8a..80affe87 100644
--- a/app-mini/src/main/res/values-id/strings.xml
+++ b/app-mini/src/main/res/values-id/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridge Telah Diperbarui</string>
<string name="restart_orbot_to_use_this_bridge_">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
- <string name="menu_qr">Kode QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Aktivasi</string>
<string name="send_email">Kirim Email</string>
<string name="save">Simpan</string>
diff --git a/app-mini/src/main/res/values-in-rID/strings.xml b/app-mini/src/main/res/values-in-rID/strings.xml
index 00d78343..5b65f011 100644
--- a/app-mini/src/main/res/values-in-rID/strings.xml
+++ b/app-mini/src/main/res/values-in-rID/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridge Telah Diperbarui</string>
<string name="restart_orbot_to_use_this_bridge_">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
- <string name="menu_qr">Kode QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Aktivasi</string>
<string name="send_email">Kirim Email</string>
<string name="please_restart_Orbot_to_enable_the_changes">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
diff --git a/app-mini/src/main/res/values-is/strings.xml b/app-mini/src/main/res/values-is/strings.xml
index 7db32d11..be6ead32 100644
--- a/app-mini/src/main/res/values-is/strings.xml
+++ b/app-mini/src/main/res/values-is/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Brýr uppfærðar</string>
<string name="restart_orbot_to_use_this_bridge_">Endurræstu Orbot til að breytingarnar taki gildi</string>
- <string name="menu_qr">QR-kóðar</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ef farsímanetið þitt er virkt í að loka á Tor, geturðu notað \'Brúarþjón\' sem varaleið inn. VELDU einn af valkostunum til að setja upp og prófa...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ef farsímanetið þitt er virkt í að loka á Tor, geturðu notað \'Brúarþjón\' sem varaleið inn. VELDU einn af valkostunum til að setja upp og prófa...</string>
<string name="get_bridges_email">Tölvupóstur</string>
<string name="activate">Virkja</string>
<string name="apps_mode">VPN-hamur</string>
diff --git a/app-mini/src/main/res/values-it/strings.xml b/app-mini/src/main/res/values-it/strings.xml
index 46394b42..d09baf0a 100644
--- a/app-mini/src/main/res/values-it/strings.xml
+++ b/app-mini/src/main/res/values-it/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridge attivati</string>
<string name="restart_orbot_to_use_this_bridge_">Per favore riavvia Orbot per rendere effettive le modifiche</string>
- <string name="menu_qr">Codici QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se la tua rete mobile blocca attivamente Tor, puoi usare un \'Server Bridge\' come via alternativa. SELEZIONA una delle opzioni per configurare e testare...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se la tua rete mobile blocca attivamente Tor, puoi usare un \'Server Bridge\' come via alternativa. SELEZIONA una delle opzioni per configurare e testare...</string>
<string name="get_bridges_email">Email</string>
<string name="activate">Attiva</string>
<string name="apps_mode">Modalità VPN</string>
diff --git a/app-mini/src/main/res/values-iw/strings.xml b/app-mini/src/main/res/values-iw/strings.xml
index 3534083b..0306a3e0 100644
--- a/app-mini/src/main/res/values-iw/strings.xml
+++ b/app-mini/src/main/res/values-iw/strings.xml
@@ -96,8 +96,7 @@
<string name="pref_dnsport_title">Tor DNS Port</string>
<string name="kb">KB</string>
<string name="mb">MB</string>
- <string name="menu_qr">קוד QR</string>
- <string name="get_bridges_email">דוא\"ל</string>
+ <string name="get_bridges_email">דוא\"ל</string>
<string name="activate">הפעל</string>
<string name="send_email">שלח דוא\"ל</string>
</resources>
diff --git a/app-mini/src/main/res/values-ja/strings.xml b/app-mini/src/main/res/values-ja/strings.xml
index b3c7ea44..9a64bac2 100644
--- a/app-mini/src/main/res/values-ja/strings.xml
+++ b/app-mini/src/main/res/values-ja/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">ブリッジを更新しました</string>
<string name="restart_orbot_to_use_this_bridge_">変更を有効にするにはOrbotを再起動してください</string>
- <string name="menu_qr">QRコード</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">モバイルネットワークが頻繁にTorをブロックする場合、別の方法として \'ブリッジサーバー\'を使用することができます。オプションを1つ選択して、設定とテストを行ってください。</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">モバイルネットワークが頻繁にTorをブロックする場合、別の方法として \'ブリッジサーバー\'を使用することができます。オプションを1つ選択して、設定とテストを行ってください。</string>
<string name="get_bridges_email">メール</string>
<string name="activate">アクティブ化</string>
<string name="apps_mode">VPN モード</string>
diff --git a/app-mini/src/main/res/values-ko/strings.xml b/app-mini/src/main/res/values-ko/strings.xml
index b99be824..0b05bbbc 100644
--- a/app-mini/src/main/res/values-ko/strings.xml
+++ b/app-mini/src/main/res/values-ko/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">브릿지가 업데이트되었습니다</string>
<string name="restart_orbot_to_use_this_bridge_">변경을 완료하려면 Orbot을 재시작하세요</string>
- <string name="menu_qr">QR 코드</string>
- <string name="get_bridges_email">이메일</string>
+ <string name="get_bridges_email">이메일</string>
<string name="activate">활성화</string>
<string name="send_email">이메일 보내기</string>
<string name="save">저장</string>
diff --git a/app-mini/src/main/res/values-lv/strings.xml b/app-mini/src/main/res/values-lv/strings.xml
index cc9ec1d8..de3c20dc 100644
--- a/app-mini/src/main/res/values-lv/strings.xml
+++ b/app-mini/src/main/res/values-lv/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Tilti ir atjaunināti</string>
<string name="restart_orbot_to_use_this_bridge_">Lūdzu pārstartējiet Orbot, lai iespējotu izmaiņas</string>
- <string name="menu_qr">QR kodi</string>
- <string name="get_bridges_email">E-pasts</string>
+ <string name="get_bridges_email">E-pasts</string>
<string name="activate">Aktivizēt</string>
<string name="send_email">Nosūtīt e-pastu</string>
<string name="hidden_services">Slēptie pakalpojumi</string>
diff --git a/app-mini/src/main/res/values-mk/strings.xml b/app-mini/src/main/res/values-mk/strings.xml
index 50a7b299..271f5f7a 100644
--- a/app-mini/src/main/res/values-mk/strings.xml
+++ b/app-mini/src/main/res/values-mk/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Ажурирани мостови</string>
<string name="restart_orbot_to_use_this_bridge_">Ве молиме повторно стартувајте го Orbot за да се овозможат промените</string>
- <string name="menu_qr">QR-кодови</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако вашата мобилна мрежа активно го блокира Tor, можете да користите „Мост сервер“ како алтернативен пристап. ОДБЕРЕТЕ една од опциите за поставување и тестирање...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако вашата мобилна мрежа активно го блокира Tor, можете да користите „Мост сервер“ како алтернативен пристап. ОДБЕРЕТЕ една од опциите за поставување и тестирање...</string>
<string name="get_bridges_email">Е-пошта</string>
<string name="activate">Активирај</string>
<string name="apps_mode">VPN мод</string>
diff --git a/app-mini/src/main/res/values-nb/strings.xml b/app-mini/src/main/res/values-nb/strings.xml
index d9854d16..d1218888 100644
--- a/app-mini/src/main/res/values-nb/strings.xml
+++ b/app-mini/src/main/res/values-nb/strings.xml
@@ -121,8 +121,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Broer oppdatert</string>
<string name="restart_orbot_to_use_this_bridge_">Gjør omstart av Orbot før endringer trer i kraft</string>
- <string name="menu_qr">QR-koder</string>
- <string name="get_bridges_email">E-post</string>
+ <string name="get_bridges_email">E-post</string>
<string name="activate">Aktiver</string>
<string name="apps_mode">VPN-modus</string>
<string name="send_email">Send e-post</string>
diff --git a/app-mini/src/main/res/values-nl/strings.xml b/app-mini/src/main/res/values-nl/strings.xml
index db5cb256..f9c88a6f 100644
--- a/app-mini/src/main/res/values-nl/strings.xml
+++ b/app-mini/src/main/res/values-nl/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridges bijgewerkt</string>
<string name="restart_orbot_to_use_this_bridge_">Herstart Orbot om de wijzigingen in te schakelen</string>
- <string name="menu_qr">QR-codes</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Als je mobiele netwerk Tor actief blokkeert, kan je een \'bridge-server\' gebruiken als alternatieve toegang. SELECTEER een van de opties om te configureren en te testen..,.</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Als je mobiele netwerk Tor actief blokkeert, kan je een \'bridge-server\' gebruiken als alternatieve toegang. SELECTEER een van de opties om te configureren en te testen..,.</string>
<string name="get_bridges_email">E-mail</string>
<string name="activate">Activeren</string>
<string name="apps_mode">VPN-modus</string>
diff --git a/app-mini/src/main/res/values-pl/strings.xml b/app-mini/src/main/res/values-pl/strings.xml
index 77020281..9a847de1 100644
--- a/app-mini/src/main/res/values-pl/strings.xml
+++ b/app-mini/src/main/res/values-pl/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Zaktualizowane Bridges</string>
<string name="restart_orbot_to_use_this_bridge_">Proszę zrestartować Orbot, aby zmiany mogły wejść w życie</string>
- <string name="menu_qr">Kody QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Aktywuj</string>
<string name="apps_mode">Tryb VPN</string>
<string name="send_email">Wyślij Email</string>
diff --git a/app-mini/src/main/res/values-pt-rBR/strings.xml b/app-mini/src/main/res/values-pt-rBR/strings.xml
index c9139bbf..e7140d4a 100644
--- a/app-mini/src/main/res/values-pt-rBR/strings.xml
+++ b/app-mini/src/main/res/values-pt-rBR/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Pontes Atualizadas</string>
<string name="restart_orbot_to_use_this_bridge_">Por favor reinicie Orbot para habilitar as mundanças</string>
- <string name="menu_qr">QR Codes</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se sua rede de dados bloqueia o Tor, você pode utilizar um \'Servidor Bridge\' como alternativa contra o bloqueio. SELECIONE umas das opções para configurar e testar..,.</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se sua rede de dados bloqueia o Tor, você pode utilizar um \'Servidor Bridge\' como alternativa contra o bloqueio. SELECIONE umas das opções para configurar e testar..,.</string>
<string name="get_bridges_email">Email</string>
<string name="activate">Atvar</string>
<string name="apps_mode">Modo VPN</string>
diff --git a/app-mini/src/main/res/values-pt-rPT/strings.xml b/app-mini/src/main/res/values-pt-rPT/strings.xml
index 06d7e7d8..d58eb9d3 100644
--- a/app-mini/src/main/res/values-pt-rPT/strings.xml
+++ b/app-mini/src/main/res/values-pt-rPT/strings.xml
@@ -49,8 +49,7 @@
<string name="pref_dnsport_title">Porta DNS do Tor</string>
<string name="kb">KB</string>
<string name="mb">MB</string>
- <string name="menu_qr">Códigos QR</string>
- <string name="get_bridges_email">E-mail</string>
+ <string name="get_bridges_email">E-mail</string>
<string name="activate">Ativar</string>
<string name="send_email">Enviar Mensagem</string>
<string name="save">Guardar</string>
diff --git a/app-mini/src/main/res/values-pt/strings.xml b/app-mini/src/main/res/values-pt/strings.xml
index ccf4cf0f..5091485e 100644
--- a/app-mini/src/main/res/values-pt/strings.xml
+++ b/app-mini/src/main/res/values-pt/strings.xml
@@ -73,8 +73,7 @@
<string name="kb">KB</string>
<string name="mb">MB</string>
<string name="bridges_updated">Pontes Atualizadas</string>
- <string name="menu_qr">Códigos QR</string>
- <string name="get_bridges_email">Correio Eletrônico</string>
+ <string name="get_bridges_email">Correio Eletrônico</string>
<string name="activate">Ativar</string>
<string name="send_email">Enviar Mensagem</string>
<string name="hidden_services">Serviços ocultos</string>
diff --git a/app-mini/src/main/res/values-ro/strings.xml b/app-mini/src/main/res/values-ro/strings.xml
index ed16bea2..a6d94164 100644
--- a/app-mini/src/main/res/values-ro/strings.xml
+++ b/app-mini/src/main/res/values-ro/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Punţi activate</string>
<string name="restart_orbot_to_use_this_bridge_">Vă rugăm reporniţi Orbot pentru a aplica modificările</string>
- <string name="menu_qr">Coduri QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Activează</string>
<string name="send_email">Trimite email</string>
<string name="hidden_services">Servicii ascunse</string>
diff --git a/app-mini/src/main/res/values-ru/strings.xml b/app-mini/src/main/res/values-ru/strings.xml
index 0cd94d2c..57a05107 100644
--- a/app-mini/src/main/res/values-ru/strings.xml
+++ b/app-mini/src/main/res/values-ru/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">МБ</string>
<string name="bridges_updated">Мосты обновлены</string>
<string name="restart_orbot_to_use_this_bridge_">Пожалуйста, перезапустите Orbot для вступления изменения в силу</string>
- <string name="menu_qr">QR-коды</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Если ваша мобильная сеть активно блокирует Tor, вы можете использовать мосты Tor для доступа к сети. Выберите один из вариантов для настройки и тестирования:</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Если ваша мобильная сеть активно блокирует Tor, вы можете использовать мосты Tor для доступа к сети. Выберите один из вариантов для настройки и тестирования:</string>
<string name="get_bridges_email">Эл. почта</string>
<string name="activate">Активация</string>
<string name="apps_mode">VPN-режим</string>
diff --git a/app-mini/src/main/res/values-sk/strings.xml b/app-mini/src/main/res/values-sk/strings.xml
index 7f1fec5a..be0c4394 100644
--- a/app-mini/src/main/res/values-sk/strings.xml
+++ b/app-mini/src/main/res/values-sk/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Premostenia aktualizované</string>
<string name="restart_orbot_to_use_this_bridge_">Prosím reštartujte Orbot, aby sa aktivovali zmeny</string>
- <string name="menu_qr">QR kódy</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Aktivovať</string>
<string name="send_email">Poslať email</string>
<string name="save">Uložiť</string>
diff --git a/app-mini/src/main/res/values-sr/strings.xml b/app-mini/src/main/res/values-sr/strings.xml
index f745b39b..6a7d0ce0 100644
--- a/app-mini/src/main/res/values-sr/strings.xml
+++ b/app-mini/src/main/res/values-sr/strings.xml
@@ -122,8 +122,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridges Ажурирање</string>
<string name="restart_orbot_to_use_this_bridge_">Молимо покрените поново Орбот ради примењивања промена</string>
- <string name="menu_qr">QR Кодови</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако ваша мобилна мрежа активно блокира Тор, можете премошћивати сервером као алтернативни начин уласка.ОДАБЕРИ једну од опција за конфигурацију и тестирање....</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако ваша мобилна мрежа активно блокира Тор, можете премошћивати сервером као алтернативни начин уласка.ОДАБЕРИ једну од опција за конфигурацију и тестирање....</string>
<string name="get_bridges_email">Е-пошта</string>
<string name="activate">Активирати</string>
<string name="apps_mode">VPN Мод</string>
diff --git a/app-mini/src/main/res/values-sv/strings.xml b/app-mini/src/main/res/values-sv/strings.xml
index 80518ff2..64e40df6 100644
--- a/app-mini/src/main/res/values-sv/strings.xml
+++ b/app-mini/src/main/res/values-sv/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bryggor uppdaterade</string>
<string name="restart_orbot_to_use_this_bridge_">Vänligen starta om Orbot för att aktivera ändringarna</string>
- <string name="menu_qr">QR-koder</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Om ditt mobilnät aktivt blockerar Tor kan du använda en \"Bridge Server\" som ett alternativt sätt. VÄLJ ett av alternativen att konfigurera och testa.,.</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Om ditt mobilnät aktivt blockerar Tor kan du använda en \"Bridge Server\" som ett alternativt sätt. VÄLJ ett av alternativen att konfigurera och testa.,.</string>
<string name="get_bridges_email">E-post</string>
<string name="activate">Aktivera</string>
<string name="apps_mode">VPN-läge</string>
diff --git a/app-mini/src/main/res/values-th/strings.xml b/app-mini/src/main/res/values-th/strings.xml
index 36996761..4e06787b 100644
--- a/app-mini/src/main/res/values-th/strings.xml
+++ b/app-mini/src/main/res/values-th/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">เมกะไบต์</string>
<string name="bridges_updated">ปรับปรุง Bridges แล้ว</string>
<string name="restart_orbot_to_use_this_bridge_">กรุณาเริ่ม Orbot ใหม่เพื่อให้การเปลี่ยนแปลงใช้งานได้</string>
- <string name="menu_qr">รหัสคิวอาร์</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">หากเครือข่ายโทรศัพท์ของคุณปิดกั้น Tor คุณสามารถใช้ \'เซิร์ฟเวอร์ Bridge\' เป็นตัวเลือกในการเข้าถึงได้ เลือกตัวเลือกหนึ่งเพื่อกำหนดค่าและทดสอบ...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">หากเครือข่ายโทรศัพท์ของคุณปิดกั้น Tor คุณสามารถใช้ \'เซิร์ฟเวอร์ Bridge\' เป็นตัวเลือกในการเข้าถึงได้ เลือกตัวเลือกหนึ่งเพื่อกำหนดค่าและทดสอบ...</string>
<string name="get_bridges_email">อีเมล</string>
<string name="activate">เปิดใช้งาน</string>
<string name="apps_mode">โหมด VPN</string>
diff --git a/app-mini/src/main/res/values-tr/strings.xml b/app-mini/src/main/res/values-tr/strings.xml
index aff7c371..83146a18 100644
--- a/app-mini/src/main/res/values-tr/strings.xml
+++ b/app-mini/src/main/res/values-tr/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Köprüler Güncellendi</string>
<string name="restart_orbot_to_use_this_bridge_">Değişiklikleri etkinleştirmek için Orbot uygulamasını yeniden başlatın</string>
- <string name="menu_qr">QR Kodları</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Tor kullanımı mobil ağınızda etkin olarak engelleniyorsa, Tor ağına erişmek için bir \'Köprü Sunucusu\' kullanabilirsiniz. Yapılandırmak ve denemek için aşağıdaki seçeneklerden birini seçin...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Tor kullanımı mobil ağınızda etkin olarak engelleniyorsa, Tor ağına erişmek için bir \'Köprü Sunucusu\' kullanabilirsiniz. Yapılandırmak ve denemek için aşağıdaki seçeneklerden birini seçin...</string>
<string name="get_bridges_email">E-posta</string>
<string name="activate">Etkinleştir</string>
<string name="apps_mode">VPN Kipi</string>
diff --git a/app-mini/src/main/res/values-uk/strings.xml b/app-mini/src/main/res/values-uk/strings.xml
index 6d079faf..253fa225 100644
--- a/app-mini/src/main/res/values-uk/strings.xml
+++ b/app-mini/src/main/res/values-uk/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Мости оновлено</string>
<string name="restart_orbot_to_use_this_bridge_">Будь ласка, перезапустіть Orbot, щоб зміни ввійшли в силу</string>
- <string name="menu_qr">QR-коди</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Якщо ваша мобільна мережа активно блокує Tor, ви можете використовувати \'Bridge Server\' як альтернативний спосіб входу. ВИБЕРИ один із параметрів для налаштування та тестування...</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Якщо ваша мобільна мережа активно блокує Tor, ви можете використовувати \'Bridge Server\' як альтернативний спосіб входу. ВИБЕРИ один із параметрів для налаштування та тестування...</string>
<string name="get_bridges_email">Email</string>
<string name="activate">Активувати</string>
<string name="apps_mode">VPN Спосіб</string>
diff --git a/app-mini/src/main/res/values-vi/strings.xml b/app-mini/src/main/res/values-vi/strings.xml
index ca6d5626..f72cc35a 100644
--- a/app-mini/src/main/res/values-vi/strings.xml
+++ b/app-mini/src/main/res/values-vi/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">Bridge được cập nhật</string>
<string name="restart_orbot_to_use_this_bridge_">Vui lòng khởi động lại Orbot để áp dụng thay đổi</string>
- <string name="menu_qr">Mã QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="activate">Kích hoạt</string>
<string name="send_email">Gửi email</string>
<string name="save">Lưu</string>
diff --git a/app-mini/src/main/res/values-zh-rCN/strings.xml b/app-mini/src/main/res/values-zh-rCN/strings.xml
index 8fb6a562..d95c9e5a 100644
--- a/app-mini/src/main/res/values-zh-rCN/strings.xml
+++ b/app-mini/src/main/res/values-zh-rCN/strings.xml
@@ -119,8 +119,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">网桥已更新</string>
<string name="restart_orbot_to_use_this_bridge_">请重启 Orbot 以使变更生效</string>
- <string name="menu_qr">QR码</string>
- <string name="get_bridges_email">电子邮件</string>
+ <string name="get_bridges_email">电子邮件</string>
<string name="activate">激活</string>
<string name="apps_mode">VPN 模式</string>
<string name="send_email">发送电子邮件</string>
diff --git a/app-mini/src/main/res/values-zh-rTW/strings.xml b/app-mini/src/main/res/values-zh-rTW/strings.xml
index 40724ef2..62bae828 100644
--- a/app-mini/src/main/res/values-zh-rTW/strings.xml
+++ b/app-mini/src/main/res/values-zh-rTW/strings.xml
@@ -124,8 +124,7 @@
<string name="mb">MB</string>
<string name="bridges_updated">網橋已更新</string>
<string name="restart_orbot_to_use_this_bridge_">請重新啟動 Orbot 來讓設定生效。</string>
- <string name="menu_qr">QR 碼</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">如果行動網路主動地封鎖 Tor 可以使用\"橋接伺服器\"作為替代方式.選擇一個選項作設定和測試</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">如果行動網路主動地封鎖 Tor 可以使用\"橋接伺服器\"作為替代方式.選擇一個選項作設定和測試</string>
<string name="get_bridges_email">Email</string>
<string name="activate">啟用</string>
<string name="apps_mode">VPN 模式</string>
diff --git a/app-mini/src/main/res/values/strings.xml b/app-mini/src/main/res/values/strings.xml
index 9d4af5fa..4267588b 100644
--- a/app-mini/src/main/res/values/strings.xml
+++ b/app-mini/src/main/res/values/strings.xml
@@ -155,8 +155,6 @@
<string name="restart_orbot_to_use_this_bridge_">Please restart Orbot to enable the changes</string>
- <string name="menu_qr">QR Codes</string>
-
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">If your mobile network actively blocks Tor, you can use a \'Bridge Server\' as an alternate way in. SELECT one of the options to configure and test...</string>
<string name="get_bridges_email">Email</string>
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 1ee58106..ab88c737 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -51,10 +51,6 @@ import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
-import com.google.zxing.integration.android.IntentIntegrator;
-import com.google.zxing.integration.android.IntentResult;
-
-import org.json.JSONArray;
import org.torproject.android.core.Languages;
import org.torproject.android.core.LocaleHelper;
import org.torproject.android.core.ui.Rotate3dAnimation;
@@ -79,7 +75,6 @@ import java.io.File;
import java.io.UnsupportedEncodingException;
import java.lang.ref.WeakReference;
import java.net.URLDecoder;
-import java.net.URLEncoder;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -421,10 +416,6 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
super.attachBaseContext(LocaleHelper.onAttach(base));
}
- /*
- * Create the UI Options Menu (non-Javadoc)
- * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
- */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
@@ -444,25 +435,6 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
doExit(); // exit app
} else if (item.getItemId() == R.id.menu_about) {
new AboutDialogFragment().show(getSupportFragmentManager(), AboutDialogFragment.TAG);
- } else if (item.getItemId() == R.id.menu_scan) {
- IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
- integrator.initiateScan();
- } else if (item.getItemId() == R.id.menu_share_bridge) {
-
- String bridges = Prefs.getBridgesList();
-
- if (bridges != null && bridges.length() > 0) {
- try {
- bridges = "bridge://" + URLEncoder.encode(bridges, "UTF-8");
-
- IntentIntegrator integrator = new IntentIntegrator(OrbotMainActivity.this);
- integrator.shareText(bridges);
-
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
-
} else if (item.getItemId() == R.id.menu_hidden_services) {
startActivity(new Intent(this, HiddenServicesActivity.class));
} else if (item.getItemId() == R.id.menu_client_cookies) {
@@ -807,45 +779,6 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
} else if (request == REQUEST_VPN && response == RESULT_CANCELED) {
mBtnVPN.setChecked(false);
}
-
- IntentResult scanResult = IntentIntegrator.parseActivityResult(request, response, data);
- if (scanResult != null) {
- // handle scan result
-
- String results = scanResult.getContents();
-
- if (results != null && results.length() > 0) {
- try {
-
- int urlIdx = results.indexOf("://");
-
- if (urlIdx != -1) {
- results = URLDecoder.decode(results, "UTF-8");
- results = results.substring(urlIdx + 3);
-
- showAlert(getString(R.string.bridges_updated), getString(R.string.restart_orbot_to_use_this_bridge_) + results, false);
-
- setNewBridges(results);
- } else {
- JSONArray bridgeJson = new JSONArray(results);
- StringBuilder bridgeLines = new StringBuilder();
-
- for (int i = 0; i < bridgeJson.length(); i++) {
- String bridgeLine = bridgeJson.getString(i);
- bridgeLines.append(bridgeLine).append("\n");
- }
-
- setNewBridges(bridgeLines.toString());
- }
-
-
- } catch (Exception e) {
- Log.e(TAG, "unsupported", e);
- }
- }
-
- }
-
}
public void promptSetupBridges() {
diff --git a/app/src/main/res/layout/layout_apps_item.xml b/app/src/main/res/layout/layout_apps_item.xml
index ef188b3e..d4c504ad 100644
--- a/app/src/main/res/layout/layout_apps_item.xml
+++ b/app/src/main/res/layout/layout_apps_item.xml
@@ -20,7 +20,6 @@
android:maxLines="2"
android:minLines="2"
android:scrollHorizontally="false"
- android:text="uid:packages"
android:textAlignment="center"
android:textSize="12sp" />
diff --git a/app/src/main/res/menu/orbot_main.xml b/app/src/main/res/menu/orbot_main.xml
index 6359ebdc..5e4cbfb8 100644
--- a/app/src/main/res/menu/orbot_main.xml
+++ b/app/src/main/res/menu/orbot_main.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
/*
* Copyright (C) 2008 Esmertec AG.
* Copyright (C) 2008 The Android Open Source Project
@@ -18,77 +17,47 @@
*/
-->
<menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:yourapp="http://schemas.android.com/apk/res-auto"
- >
+ xmlns:yourapp="http://schemas.android.com/apk/res-auto">
-
- <item android:id="@+id/menu_newnym"
- android:title="@string/menu_new_identity"
+ <item
+ android:id="@+id/menu_newnym"
android:icon="@drawable/ic_refresh_white_24dp"
- yourapp:showAsAction="always"
- />
+ android:title="@string/menu_new_identity"
+ yourapp:showAsAction="always" />
- <item android:id="@+id/menu_settings"
+ <item
+ android:id="@+id/menu_settings"
+ android:icon="@drawable/ic_action_settings"
android:title="@string/menu_settings"
- android:icon="@drawable/ic_action_settings"
- yourapp:showAsAction="never"
- />
-
- <item
- android:title="@string/menu_qr"
- yourapp:showAsAction="never"
- >
- <menu>
- <item android:id="@+id/menu_scan"
- android:title="@string/menu_scan"
- yourapp:showAsAction="never"
- />
-
- <item android:id="@+id/menu_share_bridge"
- android:title="@string/menu_share_bridge"
- yourapp:showAsAction="never"
- />
- </menu>
- </item>
+ yourapp:showAsAction="never" />
<item
android:title="@string/menu_hidden_services"
yourapp:showAsAction="never">
- <menu>
- <item android:id="@+id/menu_hidden_services"
- android:title="@string/hosted_services"
- yourapp:showAsAction="never"
- />
+ <menu>
+ <item
+ android:id="@+id/menu_hidden_services"
+ android:title="@string/hosted_services"
+ yourapp:showAsAction="never" />
- <item android:id="@+id/menu_client_cookies"
- android:title="@string/client_cookies"
- yourapp:showAsAction="never"
- />
- </menu>
+ <item
+ android:id="@+id/menu_client_cookies"
+ android:title="@string/client_cookies"
+ yourapp:showAsAction="never" />
+ </menu>
</item>
-
- <!--
- <item android:id="@+id/menu_promo_apps"
- android:title="@string/menu_promo_apps"
- android:icon="@drawable/ic_menu_goto"
- yourapp:showAsAction="never"
-
- />
- -->
-
- <item android:id="@+id/menu_about"
+
+ <item
+ android:id="@+id/menu_about"
+ android:icon="@drawable/ic_menu_about"
android:title="@string/menu_about"
- android:icon="@drawable/ic_menu_about"
- yourapp:showAsAction="never"
-
- />
-
- <item android:id="@+id/menu_exit"
+ yourapp:showAsAction="never" />
+
+ <item
+ android:id="@+id/menu_exit"
+ android:icon="@drawable/ic_menu_exit"
android:title="@string/menu_exit"
- android:icon="@drawable/ic_menu_exit"
- yourapp:showAsAction="never"
-
- />
-
+ yourapp:showAsAction="never" />
+
</menu>
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index 55d46f5c..a9904933 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -115,7 +115,6 @@
<string name="pref_torrc_dialog">torrc خاص</string>
<string name="bridges_updated">تم تحديث الجسور</string>
<string name="restart_orbot_to_use_this_bridge_">الرجاء إعادة تشغيل أوربوت لتفعيل التعديلات</string>
- <string name="menu_qr">رمز كيو آر</string>
<string name="get_bridges_email">البريد الإلكتروني</string>
<string name="apps_mode">وضع الـ VPN</string>
<string name="send_email">أرسل بريد الكتروني</string>
diff --git a/app/src/main/res/values-ay/strings.xml b/app/src/main/res/values-ay/strings.xml
index 94f23307..71ec20aa 100644
--- a/app/src/main/res/values-ay/strings.xml
+++ b/app/src/main/res/values-ay/strings.xml
@@ -117,8 +117,7 @@
<string name="pref_torrc_dialog">Maynipachpatak Torrc kuttayaña</string>
<string name="bridges_updated">Jichhaptayat jalakipañanaka</string>
<string name="restart_orbot_to_use_this_bridge_">Mayjt\'ayatanak aqtayañatak Orbot mayamp qhant\'ayam, amp suma</string>
- <string name="menu_qr">QR chimpunaka</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Jawsañ apnaqirinakax Tor jark\'antañ yatipk ukjax \'Jalakipañ yanapiri\' mantañatak apnaqarakismawa. Yant\'añataki, mayjt\'ayañatakix AJLLT\'AM…</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Jawsañ apnaqirinakax Tor jark\'antañ yatipk ukjax \'Jalakipañ yanapiri\' mantañatak apnaqarakismawa. Yant\'añataki, mayjt\'ayañatakix AJLLT\'AM…</string>
<string name="get_bridges_email">Imaylu (Email)</string>
<string name="apps_mode">VPN</string>
<string name="send_email">Qillqat apayaña</string>
diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml
index 81e8a670..516b26ea 100644
--- a/app/src/main/res/values-az/strings.xml
+++ b/app/src/main/res/values-az/strings.xml
@@ -115,8 +115,7 @@ LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="pref_torrc_dialog">Custom Torrc</string>
<string name="bridges_updated">Körpülər yeniləndi</string>
<string name="restart_orbot_to_use_this_bridge_">Lütfən, Orbotu söndürün və yenidən yandırın ki, dəyişikliklər tətbiq edilsin.</string>
- <string name="menu_qr">QR kodlar</string>
- <string name="get_bridges_email">Emeyl</string>
+ <string name="get_bridges_email">Emeyl</string>
<string name="send_email">Emeyl göndərin</string>
<string name="save">Saxla</string>
<string name="name">Ad</string>
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index db227e13..03b2c9dd 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -117,8 +117,7 @@
<string name="pref_torrc_dialog">Карыстальніцкі Torrc</string>
<string name="bridges_updated">Масты абноўлены</string>
<string name="restart_orbot_to_use_this_bridge_">Калі ласка, перазапусціце Orbot для ўступу змены ў сілу</string>
- <string name="menu_qr">QR-коды</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Калі ваша мабільная сетка актыўна блакуе Tor, вы можаце выкарыстоўваць масты Tor для доступу да сеткі. Абярыце адзін з варыянтаў для налады і тэставання:</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Калі ваша мабільная сетка актыўна блакуе Tor, вы можаце выкарыстоўваць масты Tor для доступу да сеткі. Абярыце адзін з варыянтаў для налады і тэставання:</string>
<string name="get_bridges_email">Эл. пошта</string>
<string name="apps_mode">VPN-рэжым</string>
<string name="send_email">Адправіць ліст</string>
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index 6892262d..a01815a8 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Ръчно настроен Torrc</string>
<string name="bridges_updated">Мостове включени!</string>
<string name="restart_orbot_to_use_this_bridge_">Моля, рестартирай Orbot, за да влязат в действие промените</string>
- <string name="menu_qr">QR Кодове</string>
- <string name="get_bridges_email">Имейл</string>
+ <string name="get_bridges_email">Имейл</string>
<string name="send_email">Изпрати имейл</string>
<string name="hidden_services">Скрити услуги</string>
<string name="title_activity_hidden_services">Скрити услуги</string>
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 01e1b3a4..607cb861 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc personalitzat</string>
<string name="bridges_updated">S\'han actualitzat els ponts</string>
<string name="restart_orbot_to_use_this_bridge_">Reinicieu l\'Orbot per aplicar els canvis</string>
- <string name="menu_qr">Codis QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si la teva xarxa mòbil boqueja activament Tor, pots utilitzar un \'Servidor pont\' com a via alternativa. SELECCIONA una de les opcions per configurar i provar.</string>
<string name="get_bridges_email">Correu-e</string>
<string name="apps_mode">Mode VPN</string>
diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml
index 88f17543..d53df5ee 100644
--- a/app/src/main/res/values-cs-rCZ/strings.xml
+++ b/app/src/main/res/values-cs-rCZ/strings.xml
@@ -112,8 +112,7 @@
<string name="pref_torrc_dialog">Vlastní Torrs</string>
<string name="bridges_updated">Bridge aktualizovány</string>
<string name="restart_orbot_to_use_this_bridge_">Pro projevení změn restartujte Orbot</string>
- <string name="menu_qr">QR kódy</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="send_email">Pošli email</string>
<string name="save">Uložit</string>
<string name="name">Jméno</string>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 06fb7220..5bc1b7a3 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Benutzerdefinierter Torrc</string>
<string name="bridges_updated">Brücken Aktualisiert</string>
<string name="restart_orbot_to_use_this_bridge_">Bitte Orbot neu starten, damit die Änderungen wirksam werden</string>
- <string name="menu_qr">QR-Codes</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Wenn Ihr mobiles Netzwerk Tor blockiert, können Sie einen \"Brücken-Server\" als alternativen Weg verwenden. Wählen Sie eine der Optionen zum Konfigurieren und Testen…</string>
<string name="get_bridges_email">E-Mail</string>
<string name="apps_mode">VPN-Modus</string>
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 617fa00e..97024b0f 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Προσαρμογή Torrc</string>
<string name="bridges_updated">Οι γέφυρες ενημερώθηκαν</string>
<string name="restart_orbot_to_use_this_bridge_">Παρακαλούμε επανεκκινήστε το Orbot για να ενεργοποιήσετε τις αλλαγές</string>
- <string name="menu_qr">Κώδικες QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Αν το δίκτυο κινητής τηλεφωνίας σας μπλοκάρει ενεργά το Tor, μπορείτε να χρησιμοποιήσετε μια γέφυρα για να έχετε πρόσβαση στο δίκτυο. ΕΠΙΛΕΞΤΕ έναν από τους παραπάνω τύπους γέφυρας για να ενεργοποιήσετε τις γέφυρες.</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">Λειτουργία VPN</string>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 3a040826..8f46c1e5 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">torrc personalizado</string>
<string name="bridges_updated">Bridges actualizados</string>
<string name="restart_orbot_to_use_this_bridge_">Por favor, reinicie Orbot para habilitar los cambios</string>
- <string name="menu_qr">Códigos QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si su red móvil bloquea Tor activamente, puede usar un \'Servidor Puente\' como alternativa para acceder. SELECCIONE una de las opciones a configurar y probar…</string>
<string name="get_bridges_email">Correo electrónico</string>
<string name="apps_mode">Modo VPN</string>
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index 8ae44b68..c423c9e3 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc pertsonalizatua</string>
<string name="bridges_updated">Zubiak eguneratuta</string>
<string name="restart_orbot_to_use_this_bridge_">Berrabiarazi Orbot aldaketak aplikatzeko</string>
- <string name="menu_qr">QR Kodeak</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Zure sare mugikorrak Tor nahita blokeatzen badu, \'Zubi zerbitzaria\' erabili dezakezu ordezko sarbide gisa. HAUTATU konfiguratzeko aukera bat eta probatu…</string>
<string name="get_bridges_email">E-mail</string>
<string name="apps_mode">VPN modua</string>
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 2131daba..21c93880 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">سفارشی Torrc</string>
<string name="bridges_updated">Bridges به روز شدند</string>
<string name="restart_orbot_to_use_this_bridge_">برای فعال کردن تغییرات لطفا Orbot را راه اندازی مجدد کنید</string>
- <string name="menu_qr">کدهای QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">اگر شبکه همراهتان به صورت مرتب تور را مسدود میکند، میتوانید از یک «کارساز پل» به عنوان راهی جایگزین برای ورود استفاده کنید. برای پیکربندی و تست، یکی از گزینهها را انتخاب کنید…</string>
<string name="get_bridges_email">ایمیل</string>
<string name="apps_mode">حالت VPN</string>
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 035935e7..3700b6af 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -113,7 +113,6 @@
<string name="pref_torrc_dialog">Mukautettu torrc</string>
<string name="bridges_updated">Sillat päivitetty</string>
<string name="restart_orbot_to_use_this_bridge_">Käynnistä Orbot uudelleen ottaaksesi muutokset käyttöön</string>
- <string name="menu_qr">QR-koodit</string>
<string name="get_bridges_email">Sähköposti</string>
<string name="send_email">Lähetä sähköpostia</string>
<string name="hidden_services">Piilopalvelut</string>
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index fe90952a..31b6d76d 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -113,7 +113,6 @@
<string name="pref_torrc_dialog">Torrc personnalisé</string>
<string name="bridges_updated">Ponts mis à jour</string>
<string name="restart_orbot_to_use_this_bridge_">Veuillez redémarrer Orbot pour activer les changements</string>
- <string name="menu_qr">Codes QR</string>
<string name="get_bridges_email">Courriel</string>
<string name="send_email">Envoyer un courriel</string>
<string name="save">Enregistrer</string>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 0b59592f..61b8c708 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -117,8 +117,7 @@
<string name="pref_torrc_dialog">Personnaliser Torrc </string>
<string name="bridges_updated">Ponts mis à jour</string>
<string name="restart_orbot_to_use_this_bridge_">Veuillez redémarrer Orbot pour activer les changements</string>
- <string name="menu_qr">Codes QR</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si votre réseau mobile bloque Tor activement, vous pouvez utiliser un serveur-pont comme moyen de remplacement. CHOISIR une des options pour configurer et tester…</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si votre réseau mobile bloque Tor activement, vous pouvez utiliser un serveur-pont comme moyen de remplacement. CHOISIR une des options pour configurer et tester…</string>
<string name="get_bridges_email">Courriel</string>
<string name="apps_mode">Mode RPV</string>
<string name="send_email">Envoyer un courriel</string>
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 07e7bf3b..2be73e6d 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc personalizado</string>
<string name="bridges_updated">Pontes actualizadas</string>
<string name="restart_orbot_to_use_this_bridge_">Por favor, reinicie Orbot para activar os cambios</string>
- <string name="menu_qr">Códigod QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Si a súa rede móbil bloquea Tor de xeito activo, pode utilizar un \'Servidor Ponte\' como modo alternativo. ESCOLL unha das opcións para configurar e probar…</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">Modo VPN</string>
diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml
index 4706ce98..14e5794d 100644
--- a/app/src/main/res/values-he/strings.xml
+++ b/app/src/main/res/values-he/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc מותאם אישית</string>
<string name="bridges_updated">גשרים עודכנו</string>
<string name="restart_orbot_to_use_this_bridge_">אנא הפעל מחדש את Orbot כדי לאפשר את השינויים</string>
- <string name="menu_qr">קודי QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">אם פעילות הרשת הניידת שלך חוסמת את Tor, אפשר להשתמש ב‚שרת גישור’ כדרך חלופית להיכנס. יש לבחור באחת האפשרויות כדי להגדיר ולבחון…</string>
<string name="get_bridges_email">דוא\"ל</string>
<string name="apps_mode">מצב VPN</string>
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 2290a2b9..ab88c619 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -118,7 +118,6 @@
<string name="pref_torrc_dialog">कस्टम टोररक</string>
<string name="bridges_updated">पुल अपडेटेड </string>
<string name="restart_orbot_to_use_this_bridge_">परिवर्तन सक्षम करने के लिए Orbot पुनः प्रारंभ करें</string>
- <string name="menu_qr">QR कोड</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">यदि आपका मोबाइल नेटवर्क सक्रिय रूप से टो को ब्लॉक करता है, तो आप \'पुल सर्वर\' को एक वैकल्पिक तरीके से उपयोग कर सकते हैं। कॉन्फ़िगर और परीक्षण करने के लिए विकल्पों में से एक का चयन करें ..,।</string>
<string name="get_bridges_email">ईमेल</string>
<string name="apps_mode">वीपीएन मोड</string>
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index ecd7321e..d61ec60b 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Prilagođeni Torrc</string>
<string name="bridges_updated">Mostova ažurirano</string>
<string name="restart_orbot_to_use_this_bridge_">Ponovno pokrenite Orbot da bi omogućili promjene</string>
- <string name="menu_qr">QR kodovi</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="send_email">Pošalji email</string>
<string name="save">Spremi</string>
<string name="name">Ime</string>
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index b567a4f2..a3ca7c0d 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Egyedi Torrc</string>
<string name="bridges_updated">Hidak frissítve</string>
<string name="restart_orbot_to_use_this_bridge_">Kérlek indítsd újra az Orbot-ot a változások engedélyezéséhez</string>
- <string name="menu_qr">QR kódok</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ha a mobil hálózata aktívan blokkolja a Tor-t, akkor választhatja a \'Híd szerver\'-t, mint alternatív utat. VÁLASSZON egyet a lehetőségek közül és tesztelje….</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">VPN Mód</string>
diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml
index 550517cc..7feb7ebc 100644
--- a/app/src/main/res/values-id/strings.xml
+++ b/app/src/main/res/values-id/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Torrc Custom</string>
<string name="bridges_updated">Bridge Telah Diperbarui</string>
<string name="restart_orbot_to_use_this_bridge_">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
- <string name="menu_qr">Kode QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="send_email">Kirim Email</string>
<string name="save">Simpan</string>
<string name="name">Nama</string>
diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml
index e77dfaf1..3f3b6e40 100644
--- a/app/src/main/res/values-in-rID/strings.xml
+++ b/app/src/main/res/values-in-rID/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Torrc Custom</string>
<string name="bridges_updated">Bridge Telah Diperbarui</string>
<string name="restart_orbot_to_use_this_bridge_">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
- <string name="menu_qr">Kode QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="send_email">Kirim Email</string>
<string name="please_restart_Orbot_to_enable_the_changes">Silakan start ulang Orbot untuk mengaktifkan perubahan</string>
</resources>
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index a3577a1c..02ada7be 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Sérsniðið Torrc</string>
<string name="bridges_updated">Brýr uppfærðar</string>
<string name="restart_orbot_to_use_this_bridge_">Endurræstu Orbot til að breytingarnar taki gildi</string>
- <string name="menu_qr">QR-kóðar</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ef farsímanetið þitt er virkt í að loka á Tor, geturðu notað \'Brúarþjón\' sem varaleið inn. VELDU einn af valkostunum til að setja upp og prófa…</string>
<string name="get_bridges_email">Tölvupóstur</string>
<string name="apps_mode">VPN-hamur</string>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index a63a8086..8193a110 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc personalizzate</string>
<string name="bridges_updated">Bridge attivati</string>
<string name="restart_orbot_to_use_this_bridge_">Per favore riavvia Orbot per rendere effettive le modifiche</string>
- <string name="menu_qr">Codici QR</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se la tua rete mobile blocca attivamente Tor, puoi usare un \'Server Bridge\' come via alternativa. SELEZIONA una delle opzioni per configurare e testare…</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">Modalità VPN</string>
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index b71b379e..cee0e9d0 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -90,7 +90,6 @@
<string name="pref_transport_title">Tor TransProxy Port</string>
<string name="pref_transport_dialog">הגדרת הפורט של TransProxy</string>
<string name="pref_dnsport_title">Tor DNS Port</string>
- <string name="menu_qr">קוד QR</string>
- <string name="get_bridges_email">דוא\"ל</string>
+ <string name="get_bridges_email">דוא\"ל</string>
<string name="send_email">שלח דוא\"ל</string>
</resources>
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index df9a15a0..10c86ee0 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrcをカスタム</string>
<string name="bridges_updated">ブリッジを更新しました</string>
<string name="restart_orbot_to_use_this_bridge_">変更を有効にするにはOrbotを再起動してください</string>
- <string name="menu_qr">QRコード</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">モバイルネットワークが頻繁にTorをブロックする場合、別の方法として \'ブリッジサーバー\'を使用することができます。オプションを1つ選択して、設定とテストを行ってください。</string>
<string name="get_bridges_email">メール</string>
<string name="apps_mode">VPN モード</string>
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
index 75fb06bd..cfd5a59b 100644
--- a/app/src/main/res/values-ko/strings.xml
+++ b/app/src/main/res/values-ko/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">나만의 Torrc</string>
<string name="bridges_updated">브릿지가 업데이트되었습니다</string>
<string name="restart_orbot_to_use_this_bridge_">변경을 완료하려면 Orbot을 재시작하세요</string>
- <string name="menu_qr">QR 코드</string>
- <string name="get_bridges_email">이메일</string>
+ <string name="get_bridges_email">이메일</string>
<string name="send_email">이메일 보내기</string>
<string name="save">저장</string>
<string name="name">Name</string>
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
index a28009ce..fb007f45 100644
--- a/app/src/main/res/values-lv/strings.xml
+++ b/app/src/main/res/values-lv/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Pielāgot Torrc</string>
<string name="bridges_updated">Tilti ir atjaunināti</string>
<string name="restart_orbot_to_use_this_bridge_">Lūdzu pārstartējiet Orbot, lai iespējotu izmaiņas</string>
- <string name="menu_qr">QR kodi</string>
- <string name="get_bridges_email">E-pasts</string>
+ <string name="get_bridges_email">E-pasts</string>
<string name="send_email">Nosūtīt e-pastu</string>
<string name="hidden_services">Slēptie pakalpojumi</string>
<string name="title_activity_hidden_services">Slēptie pakalpojumi</string>
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index 39c4a3ed..e1d0fc21 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Прилагоден torrc</string>
<string name="bridges_updated">Ажурирани мостови</string>
<string name="restart_orbot_to_use_this_bridge_">Ве молиме повторно стартувајте го Orbot за да се овозможат промените</string>
- <string name="menu_qr">QR-кодови</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако вашата мобилна мрежа активно го блокира Tor, можете да користите „Мост сервер“ како алтернативен пристап. ОДБЕРЕТЕ една од опциите за поставување и тестирање…</string>
<string name="get_bridges_email">Е-пошта</string>
<string name="apps_mode">VPN мод</string>
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 22bfbb5f..f4d68e84 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -115,7 +115,6 @@
<string name="pref_torrc_dialog">Egendefinert torrc</string>
<string name="bridges_updated">Broer oppdatert</string>
<string name="restart_orbot_to_use_this_bridge_">Gjør omstart av Orbot før endringer trer i kraft</string>
- <string name="menu_qr">QR-koder</string>
<string name="get_bridges_email">E-post</string>
<string name="apps_mode">VPN-modus</string>
<string name="send_email">Send e-post</string>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 53dec601..509a2003 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Aangepaste Torrc</string>
<string name="bridges_updated">Bridges bijgewerkt</string>
<string name="restart_orbot_to_use_this_bridge_">Herstart Orbot om de wijzigingen in te schakelen</string>
- <string name="menu_qr">QR-codes</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Als je mobiele netwerk Tor actief blokkeert, kan je een \'bridge-server\' gebruiken als alternatieve toegang. SELECTEER een van de opties om te configureren en te testen..,.</string>
<string name="get_bridges_email">E-mail</string>
<string name="apps_mode">VPN-modus</string>
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 7b21da06..299f7f6f 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -113,7 +113,6 @@
<string name="pref_torrc_dialog">Torrc klienta</string>
<string name="bridges_updated">Zaktualizowane Bridges</string>
<string name="restart_orbot_to_use_this_bridge_">Proszę zrestartować Orbot, aby zmiany mogły wejść w życie</string>
- <string name="menu_qr">Kody QR</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">Tryb VPN</string>
<string name="send_email">Wyślij Email</string>
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 01d46ec5..6151444f 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc Personalizado</string>
<string name="bridges_updated">Pontes Atualizadas</string>
<string name="restart_orbot_to_use_this_bridge_">Por favor reinicie Orbot para habilitar as mundanças</string>
- <string name="menu_qr">QR Codes</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Se sua rede de dados bloqueia o Tor, você pode utilizar um \'Servidor Bridge\' como alternativa contra o bloqueio. SELECIONE umas das opções para configurar e testar…</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">Modo VPN</string>
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index 1feb7f3b..e0221764 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -43,7 +43,6 @@
<string name="set_locale_title">Idioma</string>
<string name="pref_socks_title">SOCKS Tor</string>
<string name="pref_dnsport_title">Porta DNS Tor</string>
- <string name="menu_qr">Códigos QR</string>
<string name="get_bridges_email">Correio Eletrônico</string>
<string name="send_email">Enviar Mensagem</string>
<string name="save">Guardar</string>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index c4c6cf7d..4d497c77 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -68,7 +68,6 @@
<string name="pref_socks_title">SOCKS Tor</string>
<string name="pref_dnsport_title">Porta DNS Tor</string>
<string name="bridges_updated">Pontes Atualizadas</string>
- <string name="menu_qr">Códigos QR</string>
<string name="get_bridges_email">Correio Eletrônico</string>
<string name="send_email">Enviar Mensagem</string>
<string name="hidden_services">Serviços ocultos</string>
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index e7873128..8ca87116 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Torrc Personalizat</string>
<string name="bridges_updated">Punţi activate</string>
<string name="restart_orbot_to_use_this_bridge_">Vă rugăm reporniţi Orbot pentru a aplica modificările</string>
- <string name="menu_qr">Coduri QR</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="send_email">Trimite email</string>
<string name="hidden_services">Servicii ascunse</string>
<string name="title_activity_hidden_services">Servicii ascunse</string>
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index fe3fdab2..f1b8469e 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Пользовательский Torrc</string>
<string name="bridges_updated">Мосты обновлены</string>
<string name="restart_orbot_to_use_this_bridge_">Пожалуйста, перезапустите Orbot для вступления изменения в силу</string>
- <string name="menu_qr">QR-коды</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Если ваша мобильная сеть активно блокирует Tor, вы можете использовать мосты Tor для доступа к сети. Выберите один из вариантов для настройки и тестирования:</string>
<string name="get_bridges_email">Эл. почта</string>
<string name="apps_mode">VPN-режим</string>
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 95117ec2..e99fcfad 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -113,8 +113,7 @@
<string name="pref_torrc_dialog">Vlasné Torrc</string>
<string name="bridges_updated">Premostenia aktualizované</string>
<string name="restart_orbot_to_use_this_bridge_">Prosím reštartujte Orbot, aby sa aktivovali zmeny</string>
- <string name="menu_qr">QR kódy</string>
- <string name="get_bridges_email">Email</string>
+ <string name="get_bridges_email">Email</string>
<string name="send_email">Poslať email</string>
<string name="save">Uložiť</string>
<string name="name">Meno</string>
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 5361a70e..580458fc 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -115,8 +115,7 @@
<string name="pref_torrc_dialog">Подеси Torrc</string>
<string name="bridges_updated">Bridges Ажурирање</string>
<string name="restart_orbot_to_use_this_bridge_">Молимо покрените поново Орбот ради примењивања промена</string>
- <string name="menu_qr">QR Кодови</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако ваша мобилна мрежа активно блокира Тор, можете премошћивати сервером као алтернативни начин уласка.ОДАБЕРИ једну од опција за конфигурацију и тестирање….</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Ако ваша мобилна мрежа активно блокира Тор, можете премошћивати сервером као алтернативни начин уласка.ОДАБЕРИ једну од опција за конфигурацију и тестирање….</string>
<string name="get_bridges_email">Е-пошта</string>
<string name="apps_mode">VPN Мод</string>
<string name="send_email">Пошаљи Е-пошту</string>
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 0eca52c5..d4ed952d 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Anpassad Torrc</string>
<string name="bridges_updated">Bryggor uppdaterade</string>
<string name="restart_orbot_to_use_this_bridge_">Vänligen starta om Orbot för att aktivera ändringarna</string>
- <string name="menu_qr">QR-koder</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Om ditt mobilnät aktivt blockerar Tor kan du använda en \"Bridge Server\" som ett alternativt sätt. VÄLJ ett av alternativen att konfigurera och testa.,.</string>
<string name="get_bridges_email">E-post</string>
<string name="apps_mode">VPN-läge</string>
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index f19efe27..7de29016 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Torrc ที่กำหนดเอง</string>
<string name="bridges_updated">Bridges อัพเดตแล้ว</string>
<string name="restart_orbot_to_use_this_bridge_">กรุณาเริ่ม Orbot ใหม่เพื่อให้การเปลี่ยนแปลงใช้งานได้</string>
- <string name="menu_qr">รหัสคิวอาร์</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">หากเครือข่ายโทรศัพท์ของคุณปิดกั้น Tor คุณสามารถใช้ \'เซิร์ฟเวอร์ Bridge\' เป็นตัวเลือกในการเข้าถึงได้ เลือกตัวเลือกหนึ่งเพื่อกำหนดค่าและทดสอบ…</string>
<string name="get_bridges_email">อีเมล</string>
<string name="apps_mode">โหมด VPN</string>
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 0fb7d35e..ae3e32a9 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Özel Torrc Ayarları</string>
<string name="bridges_updated">Köprüler Güncellendi</string>
<string name="restart_orbot_to_use_this_bridge_">Değişiklikleri etkinleştirmek için Orbot uygulamasını yeniden başlatın</string>
- <string name="menu_qr">QR Kodları</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Tor kullanımı mobil ağınızda etkin olarak engelleniyorsa, Tor ağına erişmek için bir \'Köprü Sunucusu\' kullanabilirsiniz. Yapılandırmak ve denemek için aşağıdaki seçeneklerden birini seçin…</string>
<string name="get_bridges_email">E-posta</string>
<string name="apps_mode">VPN Kipi</string>
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 24b3c0ee..60e9adbf 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -117,7 +117,6 @@
<string name="pref_torrc_dialog">Додаткове у Torrc</string>
<string name="bridges_updated">Мости оновлено</string>
<string name="restart_orbot_to_use_this_bridge_">Будь ласка, перезапустіть Orbot, щоб зміни ввійшли в силу</string>
- <string name="menu_qr">QR-коди</string>
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">Якщо ваша мобільна мережа активно блокує Tor, ви можете використовувати \'Bridge Server\' як альтернативний спосіб входу. ВИБЕРИ один із параметрів для налаштування та тестування…</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">VPN Спосіб</string>
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 776c07dc..57f00cb3 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -113,7 +113,6 @@
<string name="pref_torrc_dialog">Torrc tùy chỉnh</string>
<string name="bridges_updated">Bridge được cập nhật</string>
<string name="restart_orbot_to_use_this_bridge_">Vui lòng khởi động lại Orbot để áp dụng thay đổi</string>
- <string name="menu_qr">Mã QR</string>
<string name="get_bridges_email">Email</string>
<string name="send_email">Gửi email</string>
<string name="save">Lưu</string>
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index c39790ff..e3f1a710 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -113,7 +113,6 @@
<string name="pref_torrc_dialog">自定义 Torrc</string>
<string name="bridges_updated">网桥已更新</string>
<string name="restart_orbot_to_use_this_bridge_">请重启 Orbot 以使变更生效</string>
- <string name="menu_qr">QR码</string>
<string name="get_bridges_email">电子邮件</string>
<string name="apps_mode">VPN 模式</string>
<string name="send_email">发送电子邮件</string>
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 27a23c4c..5b047569 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -117,8 +117,7 @@
<string name="pref_torrc_dialog">自訂 Torrc</string>
<string name="bridges_updated">網橋已更新</string>
<string name="restart_orbot_to_use_this_bridge_">請重新啟動 Orbot 來讓設定生效。</string>
- <string name="menu_qr">QR 碼</string>
- <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">如果行動網路主動地封鎖 Tor 可以使用\"橋接伺服器\"作為替代方式.選擇一個選項作設定和測試</string>
+ <string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">如果行動網路主動地封鎖 Tor 可以使用\"橋接伺服器\"作為替代方式.選擇一個選項作設定和測試</string>
<string name="get_bridges_email">Email</string>
<string name="apps_mode">VPN 模式</string>
<string name="send_email">寄送電子信件</string>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 90dde59a..e7eda021 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -151,8 +151,6 @@
<string name="restart_orbot_to_use_this_bridge_">Please restart Orbot to enable the changes</string>
- <string name="menu_qr">QR Codes</string>
-
<string name="if_your_mobile_network_actively_blocks_tor_you_can_use_a_tor_bridge_to_access_the_network_another_way_to_get_bridges_is_to_send_an_email_to_bridges_torproject_org_please_note_that_you_must_send_the_email_using_an_address_from_one_of_the_following_email_providers_riseup_gmail_or_yahoo_">If your mobile network actively blocks Tor, you can use a \'Bridge Server\' as an alternate way in. SELECT one of the options to configure and test…</string>
<string name="get_bridges_email">Email</string>
1
0
[orbot/master] Merge branch 'no_bridge_in_settings' of https://github.com/bitmold/orbot into bitmold-no_bridge_in_settings
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit 2fd6da45deceb321cb5a9b6038e55471defbd1bd
Merge: 37d7388e 2380ed07
Author: n8fr8 <nathan(a)guardianproject.info>
Date: Thu Feb 4 16:47:57 2021 -0500
Merge branch 'no_bridge_in_settings' of https://github.com/bitmold/orbot into bitmold-no_bridge_in_settings
app-mini/src/main/res/values-ar/strings.xml | 3 +-
app-mini/src/main/res/values-ay/strings.xml | 3 +-
app-mini/src/main/res/values-az/strings.xml | 3 +-
app-mini/src/main/res/values-be/strings.xml | 3 +-
app-mini/src/main/res/values-bg/strings.xml | 3 +-
app-mini/src/main/res/values-ca/strings.xml | 3 +-
app-mini/src/main/res/values-cs-rCZ/strings.xml | 3 +-
app-mini/src/main/res/values-de/strings.xml | 3 +-
app-mini/src/main/res/values-el/strings.xml | 3 +-
app-mini/src/main/res/values-es/strings.xml | 3 +-
app-mini/src/main/res/values-eu/strings.xml | 3 +-
app-mini/src/main/res/values-fa/strings.xml | 3 +-
app-mini/src/main/res/values-fi/strings.xml | 3 +-
app-mini/src/main/res/values-fr-rFR/strings.xml | 3 +-
app-mini/src/main/res/values-fr/strings.xml | 3 +-
app-mini/src/main/res/values-gl/strings.xml | 3 +-
app-mini/src/main/res/values-he/strings.xml | 3 +-
app-mini/src/main/res/values-hi/strings.xml | 3 +-
app-mini/src/main/res/values-hr/strings.xml | 3 +-
app-mini/src/main/res/values-hu/strings.xml | 3 +-
app-mini/src/main/res/values-id/strings.xml | 3 +-
app-mini/src/main/res/values-in-rID/strings.xml | 3 +-
app-mini/src/main/res/values-is/strings.xml | 3 +-
app-mini/src/main/res/values-it/strings.xml | 3 +-
app-mini/src/main/res/values-iw/strings.xml | 3 +-
app-mini/src/main/res/values-ja/strings.xml | 3 +-
app-mini/src/main/res/values-ko/strings.xml | 3 +-
app-mini/src/main/res/values-lv/strings.xml | 3 +-
app-mini/src/main/res/values-mk/strings.xml | 3 +-
app-mini/src/main/res/values-nb/strings.xml | 3 +-
app-mini/src/main/res/values-nl/strings.xml | 3 +-
app-mini/src/main/res/values-pl/strings.xml | 3 +-
app-mini/src/main/res/values-pt-rBR/strings.xml | 3 +-
app-mini/src/main/res/values-pt-rPT/strings.xml | 3 +-
app-mini/src/main/res/values-pt/strings.xml | 3 +-
app-mini/src/main/res/values-ro/strings.xml | 3 +-
app-mini/src/main/res/values-ru/strings.xml | 3 +-
app-mini/src/main/res/values-sk/strings.xml | 3 +-
app-mini/src/main/res/values-sr/strings.xml | 3 +-
app-mini/src/main/res/values-sv/strings.xml | 3 +-
app-mini/src/main/res/values-th/strings.xml | 3 +-
app-mini/src/main/res/values-tr/strings.xml | 3 +-
app-mini/src/main/res/values-uk/strings.xml | 3 +-
app-mini/src/main/res/values-vi/strings.xml | 3 +-
app-mini/src/main/res/values-zh-rCN/strings.xml | 3 +-
app-mini/src/main/res/values-zh-rTW/strings.xml | 3 +-
app-mini/src/main/res/values/strings.xml | 2 -
.../org/torproject/android/OrbotMainActivity.java | 48 ----------------------
app/src/main/res/layout/layout_apps_item.xml | 1 -
app/src/main/res/menu/orbot_main.xml | 16 --------
app/src/main/res/values-ar/strings.xml | 3 --
app/src/main/res/values-ay/strings.xml | 6 +--
app/src/main/res/values-az/strings.xml | 5 +--
app/src/main/res/values-be/strings.xml | 6 +--
app/src/main/res/values-bg/strings.xml | 5 +--
app/src/main/res/values-ca/strings.xml | 4 --
app/src/main/res/values-cs-rCZ/strings.xml | 5 +--
app/src/main/res/values-da/strings.xml | 2 -
app/src/main/res/values-de/strings.xml | 4 --
app/src/main/res/values-el/strings.xml | 4 --
app/src/main/res/values-eo/strings.xml | 3 +-
app/src/main/res/values-es-rAR/strings.xml | 3 --
app/src/main/res/values-es/strings.xml | 4 --
app/src/main/res/values-et/strings.xml | 2 -
app/src/main/res/values-eu/strings.xml | 4 --
app/src/main/res/values-fa/strings.xml | 4 --
app/src/main/res/values-fi/strings.xml | 4 --
app/src/main/res/values-fr-rFR/strings.xml | 4 --
app/src/main/res/values-fr/strings.xml | 6 +--
app/src/main/res/values-gl/strings.xml | 4 --
app/src/main/res/values-he/strings.xml | 4 --
app/src/main/res/values-hi/strings.xml | 4 --
app/src/main/res/values-hr/strings.xml | 5 +--
app/src/main/res/values-hu/strings.xml | 4 --
app/src/main/res/values-id/strings.xml | 5 +--
app/src/main/res/values-in-rID/strings.xml | 5 +--
app/src/main/res/values-is/strings.xml | 4 --
app/src/main/res/values-it/strings.xml | 4 --
app/src/main/res/values-iw/strings.xml | 5 +--
app/src/main/res/values-ja/strings.xml | 4 --
app/src/main/res/values-ko/strings.xml | 5 +--
app/src/main/res/values-lv/strings.xml | 5 +--
app/src/main/res/values-mk/strings.xml | 4 --
app/src/main/res/values-ms-rMY/strings.xml | 2 -
app/src/main/res/values-ms/strings.xml | 2 -
app/src/main/res/values-nb/strings.xml | 4 --
app/src/main/res/values-nl/strings.xml | 4 --
app/src/main/res/values-pl/strings.xml | 4 --
app/src/main/res/values-pt-rBR/strings.xml | 4 --
app/src/main/res/values-pt-rPT/strings.xml | 4 --
app/src/main/res/values-pt/strings.xml | 4 --
app/src/main/res/values-ro/strings.xml | 5 +--
app/src/main/res/values-ru/strings.xml | 4 --
app/src/main/res/values-si-rLK/strings.xml | 2 -
app/src/main/res/values-sk/strings.xml | 5 +--
app/src/main/res/values-sr/strings.xml | 6 +--
app/src/main/res/values-sv/strings.xml | 4 --
app/src/main/res/values-th/strings.xml | 4 --
app/src/main/res/values-tl/strings.xml | 2 -
app/src/main/res/values-tr/strings.xml | 4 --
app/src/main/res/values-uk/strings.xml | 4 --
app/src/main/res/values-vi/strings.xml | 3 --
app/src/main/res/values-zh-rCN/strings.xml | 4 --
app/src/main/res/values-zh-rTW/strings.xml | 6 +--
app/src/main/res/values/strings.xml | 5 ---
app/src/main/res/xml/preferences.xml | 16 --------
106 files changed, 63 insertions(+), 384 deletions(-)
1
0