tor-commits
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- 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
- 1 participants
- 216116 discussions
[orbot/master] purge unused test code, including old copy of jtorctl
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit df577415d44043312e759f4b8cf2334bfd2679d2
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Fri Dec 13 22:40:00 2019 +0100
purge unused test code, including old copy of jtorctl
---
.../java/org/torproject/android/control/.cvsignore | 1 -
.../java/org/torproject/android/control/Bytes.java | 114 ----
.../torproject/android/control/ConfigEntry.java | 20 -
.../torproject/android/control/EventHandler.java | 75 ---
.../torproject/android/control/PasswordDigest.java | 98 ---
.../java/org/torproject/android/control/README | 4 -
.../android/control/TorControlCommands.java | 148 -----
.../android/control/TorControlConnection.java | 730 ---------------------
.../android/control/TorControlError.java | 39 --
.../android/control/TorControlSyntaxError.java | 16 -
.../torproject/android/control/examples/.cvsignore | 1 -
.../control/examples/DebuggingEventHandler.java | 44 --
.../torproject/android/control/examples/Main.java | 146 -----
.../android/service/ExampleUnitTest.java | 15 -
14 files changed, 1451 deletions(-)
diff --git a/orbotservice/src/test/java/org/torproject/android/control/.cvsignore b/orbotservice/src/test/java/org/torproject/android/control/.cvsignore
deleted file mode 100644
index 6b468b62..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.class
diff --git a/orbotservice/src/test/java/org/torproject/android/control/Bytes.java b/orbotservice/src/test/java/org/torproject/android/control/Bytes.java
deleted file mode 100644
index e754d907..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/Bytes.java
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Static class to do bytewise structure manipulation in Java.
- */
-/* XXXX There must be a better way to do most of this.
- * XXXX The string logic here uses default encoding, which is stupid.
- */
-final class Bytes {
-
- /** Write the two-byte value in 's' into the byte array 'ba', starting at
- * the index 'pos'. */
- public static void setU16(byte[] ba, int pos, short s) {
- ba[pos] = (byte)((s >> 8) & 0xff);
- ba[pos+1] = (byte)((s ) & 0xff);
- }
-
- /** Write the four-byte value in 'i' into the byte array 'ba', starting at
- * the index 'pos'. */
- public static void setU32(byte[] ba, int pos, int i) {
- ba[pos] = (byte)((i >> 24) & 0xff);
- ba[pos+1] = (byte)((i >> 16) & 0xff);
- ba[pos+2] = (byte)((i >> 8) & 0xff);
- ba[pos+3] = (byte)((i ) & 0xff);
- }
-
- /** Return the four-byte value starting at index 'pos' within 'ba' */
- public static int getU32(byte[] ba, int pos) {
- return
- ((ba[pos ]&0xff)<<24) |
- ((ba[pos+1]&0xff)<<16) |
- ((ba[pos+2]&0xff)<< 8) |
- ((ba[pos+3]&0xff));
- }
-
- public static String getU32S(byte[] ba, int pos) {
- return String.valueOf( (getU32(ba,pos))&0xffffffffL );
- }
-
- /** Return the two-byte value starting at index 'pos' within 'ba' */
- public static int getU16(byte[] ba, int pos) {
- return
- ((ba[pos ]&0xff)<<8) |
- ((ba[pos+1]&0xff));
- }
-
- /** Return the string starting at position 'pos' of ba and extending
- * until a zero byte or the end of the string. */
- public static String getNulTerminatedStr(byte[] ba, int pos) {
- int len, maxlen = ba.length-pos;
- for (len=0; len<maxlen; ++len) {
- if (ba[pos+len] == 0)
- break;
- }
- return new String(ba, pos, len);
- }
-
- /**
- * Read bytes from 'ba' starting at 'pos', dividing them into strings
- * along the character in 'split' and writing them into 'lst'
- */
- public static void splitStr(List<String> lst, byte[] ba, int pos, byte split) {
- while (pos < ba.length && ba[pos] != 0) {
- int len;
- for (len=0; pos+len < ba.length; ++len) {
- if (ba[pos+len] == 0 || ba[pos+len] == split)
- break;
- }
- if (len>0)
- lst.add(new String(ba, pos, len));
- pos += len;
- if (ba[pos] == split)
- ++pos;
- }
- }
-
- /**
- * Read bytes from 'ba' starting at 'pos', dividing them into strings
- * along the character in 'split' and writing them into 'lst'
- */
- public static List<String> splitStr(List<String> lst, String str) {
- // split string on spaces, include trailing/leading
- String[] tokenArray = str.split(" ", -1);
- if (lst == null) {
- lst = Arrays.asList( tokenArray );
- } else {
- lst.addAll( Arrays.asList( tokenArray ) );
- }
- return lst;
- }
-
- private static final char[] NYBBLES = {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
- };
-
- public static final String hex(byte[] ba) {
- StringBuffer buf = new StringBuffer();
- for (int i = 0; i < ba.length; ++i) {
- int b = (ba[i]) & 0xff;
- buf.append(NYBBLES[b >> 4]);
- buf.append(NYBBLES[b&0x0f]);
- }
- return buf.toString();
- }
-
- private Bytes() {};
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/ConfigEntry.java b/orbotservice/src/test/java/org/torproject/android/control/ConfigEntry.java
deleted file mode 100644
index 31eb4b8e..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/ConfigEntry.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-/** A single key-value pair from Tor's configuration. */
-public class ConfigEntry {
- public ConfigEntry(String k, String v) {
- key = k;
- value = v;
- is_default = false;
- }
- public ConfigEntry(String k) {
- key = k;
- value = "";
- is_default = true;
- }
- public final String key;
- public final String value;
- public final boolean is_default;
-}
diff --git a/orbotservice/src/test/java/org/torproject/android/control/EventHandler.java b/orbotservice/src/test/java/org/torproject/android/control/EventHandler.java
deleted file mode 100644
index 5a4e2b5b..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/EventHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-/**
- * Abstract interface whose methods are invoked when Tor sends us an event.
- *
- * @see TorControlConnection#setEventHandler
- * @see TorControlConnection#setEvents
- */
-public interface EventHandler {
- /**
- * Invoked when a circuit's status has changed.
- * Possible values for <b>status</b> are:
- * <ul>
- * <li>"LAUNCHED" : circuit ID assigned to new circuit</li>
- * <li>"BUILT" : all hops finished, can now accept streams</li>
- * <li>"EXTENDED" : one more hop has been completed</li>
- * <li>"FAILED" : circuit closed (was not built)</li>
- * <li>"CLOSED" : circuit closed (was built)</li>
- * </ul>
- *
- * <b>circID</b> is the alphanumeric identifier of the affected circuit,
- * and <b>path</b> is a comma-separated list of alphanumeric ServerIDs.
- */
- public void circuitStatus(String status, String circID, String path);
- /**
- * Invoked when a stream's status has changed.
- * Possible values for <b>status</b> are:
- * <ul>
- * <li>"NEW" : New request to connect</li>
- * <li>"NEWRESOLVE" : New request to resolve an address</li>
- * <li>"SENTCONNECT" : Sent a connect cell along a circuit</li>
- * <li>"SENTRESOLVE" : Sent a resolve cell along a circuit</li>
- * <li>"SUCCEEDED" : Received a reply; stream established</li>
- * <li>"FAILED" : Stream failed and not retriable.</li>
- * <li>"CLOSED" : Stream closed</li>
- * <li>"DETACHED" : Detached from circuit; still retriable.</li>
- * </ul>
- *
- * <b>streamID</b> is the alphanumeric identifier of the affected stream,
- * and its <b>target</b> is specified as address:port.
- */
- public void streamStatus(String status, String streamID, String target);
- /**
- * Invoked when the status of a connection to an OR has changed.
- * Possible values for <b>status</b> are ["LAUNCHED" | "CONNECTED" | "FAILED" | "CLOSED"].
- * <b>orName</b> is the alphanumeric identifier of the OR affected.
- */
- public void orConnStatus(String status, String orName);
- /**
- * Invoked once per second. <b>read</b> and <b>written</b> are
- * the number of bytes read and written, respectively, in
- * the last second.
- */
- public void bandwidthUsed(long read, long written);
- /**
- * Invoked whenever Tor learns about new ORs. The <b>orList</b> object
- * contains the alphanumeric ServerIDs associated with the new ORs.
- */
- public void newDescriptors(java.util.List<String> orList);
- /**
- * Invoked when Tor logs a message.
- * <b>severity</b> is one of ["DEBUG" | "INFO" | "NOTICE" | "WARN" | "ERR"],
- * and <b>msg</b> is the message string.
- */
- public void message(String severity, String msg);
- /**
- * Invoked when an unspecified message is received.
- * <type> is the message type, and <msg> is the message string.
- */
- public void unrecognized(String type, String msg);
-
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/PasswordDigest.java b/orbotservice/src/test/java/org/torproject/android/control/PasswordDigest.java
deleted file mode 100644
index 03d0a98e..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/PasswordDigest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-
-/**
- * A hashed digest of a secret password (used to set control connection
- * security.)
- *
- * For the actual hashing algorithm, see RFC2440's secret-to-key conversion.
- */
-public class PasswordDigest {
-
- private final byte[] secret;
- private final String hashedKey;
-
- /** Return a new password digest with a random secret and salt. */
- public static PasswordDigest generateDigest() {
- byte[] secret = new byte[20];
- SecureRandom rng = new SecureRandom();
- rng.nextBytes(secret);
- return new PasswordDigest(secret);
- }
-
- /** Construct a new password digest with a given secret and random salt */
- public PasswordDigest(byte[] secret) {
- this(secret, null);
- }
-
- /** Construct a new password digest with a given secret and random salt.
- * Note that the 9th byte of the specifier determines the number of hash
- * iterations as in RFC2440.
- */
- public PasswordDigest(byte[] secret, byte[] specifier) {
- this.secret = secret.clone();
- if (specifier == null) {
- specifier = new byte[9];
- SecureRandom rng = new SecureRandom();
- rng.nextBytes(specifier);
- specifier[8] = 96;
- }
- hashedKey = "16:"+encodeBytes(secretToKey(secret, specifier));
- }
-
- /** Return the secret used to generate this password hash.
- */
- public byte[] getSecret() {
- return secret.clone();
- }
-
- /** Return the hashed password in the format used by Tor. */
- public String getHashedPassword() {
- return hashedKey;
- }
-
- /** Parameter used by RFC2440's s2k algorithm. */
- private static final int EXPBIAS = 6;
-
- /** Implement rfc2440 s2k */
- public static byte[] secretToKey(byte[] secret, byte[] specifier) {
- MessageDigest d;
- try {
- d = MessageDigest.getInstance("SHA-1");
- } catch (NoSuchAlgorithmException ex) {
- throw new RuntimeException("Can't run without sha-1.");
- }
- int c = (specifier[8])&0xff;
- int count = (16 + (c&15)) << ((c>>4) + EXPBIAS);
-
- byte[] tmp = new byte[8+secret.length];
- System.arraycopy(specifier, 0, tmp, 0, 8);
- System.arraycopy(secret, 0, tmp, 8, secret.length);
- while (count > 0) {
- if (count >= tmp.length) {
- d.update(tmp);
- count -= tmp.length;
- } else {
- d.update(tmp, 0, count);
- count = 0;
- }
- }
- byte[] key = new byte[20+9];
- System.arraycopy(d.digest(), 0, key, 9, 20);
- System.arraycopy(specifier, 0, key, 0, 9);
- return key;
- }
-
- /** Return a hexadecimal encoding of a byte array. */
- // XXX There must be a better way to do this in Java.
- private static final String encodeBytes(byte[] ba) {
- return Bytes.hex(ba);
- }
-
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/README b/orbotservice/src/test/java/org/torproject/android/control/README
deleted file mode 100644
index b310c7d5..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/README
+++ /dev/null
@@ -1,4 +0,0 @@
-We broke the version detection stuff in Tor 0.1.2.16 / 0.2.0.4-alpha.
-Somebody should rip out the v0 control protocol stuff from here, and
-it should start working again. -RD
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlCommands.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlCommands.java
deleted file mode 100644
index c98a1c48..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/TorControlCommands.java
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-/** Interface defining constants used by the Tor controller protocol.
- */
-// XXXX Take documentation for these from control-spec.txt
-public interface TorControlCommands {
-
- public static final short CMD_ERROR = 0x0000;
- public static final short CMD_DONE = 0x0001;
- public static final short CMD_SETCONF = 0x0002;
- public static final short CMD_GETCONF = 0x0003;
- public static final short CMD_CONFVALUE = 0x0004;
- public static final short CMD_SETEVENTS = 0x0005;
- public static final short CMD_EVENT = 0x0006;
- public static final short CMD_AUTH = 0x0007;
- public static final short CMD_SAVECONF = 0x0008;
- public static final short CMD_SIGNAL = 0x0009;
- public static final short CMD_MAPADDRESS = 0x000A;
- public static final short CMD_GETINFO = 0x000B;
- public static final short CMD_INFOVALUE = 0x000C;
- public static final short CMD_EXTENDCIRCUIT = 0x000D;
- public static final short CMD_ATTACHSTREAM = 0x000E;
- public static final short CMD_POSTDESCRIPTOR = 0x000F;
- public static final short CMD_FRAGMENTHEADER = 0x0010;
- public static final short CMD_FRAGMENT = 0x0011;
- public static final short CMD_REDIRECTSTREAM = 0x0012;
- public static final short CMD_CLOSESTREAM = 0x0013;
- public static final short CMD_CLOSECIRCUIT = 0x0014;
-
- public static final String[] CMD_NAMES = {
- "ERROR",
- "DONE",
- "SETCONF",
- "GETCONF",
- "CONFVALUE",
- "SETEVENTS",
- "EVENT",
- "AUTH",
- "SAVECONF",
- "SIGNAL",
- "MAPADDRESS",
- "GETINFO",
- "INFOVALUE",
- "EXTENDCIRCUIT",
- "ATTACHSTREAM",
- "POSTDESCRIPTOR",
- "FRAGMENTHEADER",
- "FRAGMENT",
- "REDIRECTSTREAM",
- "CLOSESTREAM",
- "CLOSECIRCUIT",
- };
-
- public static final short EVENT_CIRCSTATUS = 0x0001;
- public static final short EVENT_STREAMSTATUS = 0x0002;
- public static final short EVENT_ORCONNSTATUS = 0x0003;
- public static final short EVENT_BANDWIDTH = 0x0004;
- public static final short EVENT_NEWDESCRIPTOR = 0x0006;
- public static final short EVENT_MSG_DEBUG = 0x0007;
- public static final short EVENT_MSG_INFO = 0x0008;
- public static final short EVENT_MSG_NOTICE = 0x0009;
- public static final short EVENT_MSG_WARN = 0x000A;
- public static final short EVENT_MSG_ERROR = 0x000B;
-
- public static final String[] EVENT_NAMES = {
- "(0)",
- "CIRC",
- "STREAM",
- "ORCONN",
- "BW",
- "OLDLOG",
- "NEWDESC",
- "DEBUG",
- "INFO",
- "NOTICE",
- "WARN",
- "ERR",
- };
-
- public static final byte CIRC_STATUS_LAUNCHED = 0x01;
- public static final byte CIRC_STATUS_BUILT = 0x02;
- public static final byte CIRC_STATUS_EXTENDED = 0x03;
- public static final byte CIRC_STATUS_FAILED = 0x04;
- public static final byte CIRC_STATUS_CLOSED = 0x05;
-
- public static final String[] CIRC_STATUS_NAMES = {
- "LAUNCHED",
- "BUILT",
- "EXTENDED",
- "FAILED",
- "CLOSED",
- };
-
- public static final byte STREAM_STATUS_SENT_CONNECT = 0x00;
- public static final byte STREAM_STATUS_SENT_RESOLVE = 0x01;
- public static final byte STREAM_STATUS_SUCCEEDED = 0x02;
- public static final byte STREAM_STATUS_FAILED = 0x03;
- public static final byte STREAM_STATUS_CLOSED = 0x04;
- public static final byte STREAM_STATUS_NEW_CONNECT = 0x05;
- public static final byte STREAM_STATUS_NEW_RESOLVE = 0x06;
- public static final byte STREAM_STATUS_DETACHED = 0x07;
-
- public static final String[] STREAM_STATUS_NAMES = {
- "SENT_CONNECT",
- "SENT_RESOLVE",
- "SUCCEEDED",
- "FAILED",
- "CLOSED",
- "NEW_CONNECT",
- "NEW_RESOLVE",
- "DETACHED"
- };
-
- public static final byte OR_CONN_STATUS_LAUNCHED = 0x00;
- public static final byte OR_CONN_STATUS_CONNECTED = 0x01;
- public static final byte OR_CONN_STATUS_FAILED = 0x02;
- public static final byte OR_CONN_STATUS_CLOSED = 0x03;
-
- public static final String[] OR_CONN_STATUS_NAMES = {
- "LAUNCHED","CONNECTED","FAILED","CLOSED"
- };
-
- public static final byte SIGNAL_HUP = 0x01;
- public static final byte SIGNAL_INT = 0x02;
- public static final byte SIGNAL_USR1 = 0x0A;
- public static final byte SIGNAL_USR2 = 0x0C;
- public static final byte SIGNAL_TERM = 0x0F;
-
- public static final String ERROR_MSGS[] = {
- "Unspecified error",
- "Internal error",
- "Unrecognized message type",
- "Syntax error",
- "Unrecognized configuration key",
- "Invalid configuration value",
- "Unrecognized byte code",
- "Unauthorized",
- "Failed authentication attempt",
- "Resource exhausted",
- "No such stream",
- "No such circuit",
- "No such OR",
- };
-
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlConnection.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlConnection.java
deleted file mode 100644
index 204dbc06..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/TorControlConnection.java
+++ /dev/null
@@ -1,730 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.Writer;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-/** A connection to a running Tor process as specified in control-spec.txt. */
-public class TorControlConnection implements TorControlCommands {
-
- private final LinkedList<Waiter> waiters;
- private final BufferedReader input;
- private final Writer output;
-
- private ControlParseThread thread; // Locking: this
-
- private volatile EventHandler handler;
- private volatile PrintWriter debugOutput;
- private volatile IOException parseThreadException;
-
- static class Waiter {
-
- List<ReplyLine> response; // Locking: this
-
- synchronized List<ReplyLine> getResponse() throws InterruptedException {
- while (response == null) {
- wait();
- }
- return response;
- }
-
- synchronized void setResponse(List<ReplyLine> response) {
- this.response = response;
- notifyAll();
- }
- }
-
- static class ReplyLine {
-
- final String status;
- final String msg;
- final String rest;
-
- ReplyLine(String status, String msg, String rest) {
- this.status = status; this.msg = msg; this.rest = rest;
- }
- }
-
- /** Create a new TorControlConnection to communicate with Tor over
- * a given socket. After calling this constructor, it is typical to
- * call launchThread and authenticate. */
- public TorControlConnection(Socket connection) throws IOException {
- this(connection.getInputStream(), connection.getOutputStream());
- }
-
- /** Create a new TorControlConnection to communicate with Tor over
- * an arbitrary pair of data streams.
- */
- public TorControlConnection(InputStream i, OutputStream o) {
- this(new InputStreamReader(i), new OutputStreamWriter(o));
- }
-
- public TorControlConnection(Reader i, Writer o) {
- this.output = o;
- if (i instanceof BufferedReader)
- this.input = (BufferedReader) i;
- else
- this.input = new BufferedReader(i);
- this.waiters = new LinkedList<Waiter>();
- }
-
- protected final void writeEscaped(String s) throws IOException {
- StringTokenizer st = new StringTokenizer(s, "\n");
- while (st.hasMoreTokens()) {
- String line = st.nextToken();
- if (line.startsWith("."))
- line = "."+line;
- if (line.endsWith("\r"))
- line += "\n";
- else
- line += "\r\n";
- if (debugOutput != null)
- debugOutput.print(">> "+line);
- output.write(line);
- }
- output.write(".\r\n");
- if (debugOutput != null)
- debugOutput.print(">> .\n");
- }
-
- protected static final String quote(String s) {
- StringBuffer sb = new StringBuffer("\"");
- for (int i = 0; i < s.length(); ++i) {
- char c = s.charAt(i);
- switch (c)
- {
- case '\r':
- case '\n':
- case '\\':
- case '\"':
- sb.append('\\');
- }
- sb.append(c);
- }
- sb.append('\"');
- return sb.toString();
- }
-
- protected final ArrayList<ReplyLine> readReply() throws IOException {
- ArrayList<ReplyLine> reply = new ArrayList<ReplyLine>();
- char c;
- do {
- String line = input.readLine();
- if (line == null) {
- // if line is null, the end of the stream has been reached, i.e.
- // the connection to Tor has been closed!
- if (reply.isEmpty()) {
- // nothing received so far, can exit cleanly
- return reply;
- }
- // received half of a reply before the connection broke down
- throw new TorControlSyntaxError("Connection to Tor " +
- " broke down while receiving reply!");
- }
- if (debugOutput != null)
- debugOutput.println("<< "+line);
- if (line.length() < 4)
- throw new TorControlSyntaxError("Line (\""+line+"\") too short");
- String status = line.substring(0,3);
- c = line.charAt(3);
- String msg = line.substring(4);
- String rest = null;
- if (c == '+') {
- StringBuffer data = new StringBuffer();
- while (true) {
- line = input.readLine();
- if (debugOutput != null)
- debugOutput.print("<< "+line);
- if (line.equals("."))
- break;
- else if (line.startsWith("."))
- line = line.substring(1);
- data.append(line).append('\n');
- }
- rest = data.toString();
- }
- reply.add(new ReplyLine(status, msg, rest));
- } while (c != ' ');
-
- return reply;
- }
-
- protected synchronized List<ReplyLine> sendAndWaitForResponse(String s,
- String rest) throws IOException {
- if(parseThreadException != null) throw parseThreadException;
- checkThread();
- Waiter w = new Waiter();
- if (debugOutput != null)
- debugOutput.print(">> "+s);
- synchronized (waiters) {
- output.write(s);
- if (rest != null)
- writeEscaped(rest);
- output.flush();
- waiters.addLast(w);
- }
- List<ReplyLine> lst;
- try {
- lst = w.getResponse();
- } catch (InterruptedException ex) {
- throw new IOException("Interrupted");
- }
- for (Iterator<ReplyLine> i = lst.iterator(); i.hasNext(); ) {
- ReplyLine c = i.next();
- if (! c.status.startsWith("2"))
- throw new TorControlError("Error reply: "+c.msg);
- }
- return lst;
- }
-
- /** Helper: decode a CMD_EVENT command and dispatch it to our
- * EventHandler (if any). */
- protected void handleEvent(ArrayList<ReplyLine> events) {
- if (handler == null)
- return;
-
- for (Iterator<ReplyLine> i = events.iterator(); i.hasNext(); ) {
- ReplyLine line = i.next();
- int idx = line.msg.indexOf(' ');
- String tp = line.msg.substring(0, idx).toUpperCase();
- String rest = line.msg.substring(idx+1);
- if (tp.equals("CIRC")) {
- List<String> lst = Bytes.splitStr(null, rest);
- handler.circuitStatus(lst.get(1),
- lst.get(0),
- lst.get(1).equals("LAUNCHED")
- || lst.size() < 3 ? ""
- : lst.get(2));
- } else if (tp.equals("STREAM")) {
- List<String> lst = Bytes.splitStr(null, rest);
- handler.streamStatus(lst.get(1),
- lst.get(0),
- lst.get(3));
- // XXXX circID.
- } else if (tp.equals("ORCONN")) {
- List<String> lst = Bytes.splitStr(null, rest);
- handler.orConnStatus(lst.get(1), lst.get(0));
- } else if (tp.equals("BW")) {
- List<String> lst = Bytes.splitStr(null, rest);
- handler.bandwidthUsed(Integer.parseInt(lst.get(0)),
- Integer.parseInt(lst.get(1)));
- } else if (tp.equals("NEWDESC")) {
- List<String> lst = Bytes.splitStr(null, rest);
- handler.newDescriptors(lst);
- } else if (tp.equals("DEBUG") ||
- tp.equals("INFO") ||
- tp.equals("NOTICE") ||
- tp.equals("WARN") ||
- tp.equals("ERR")) {
- handler.message(tp, rest);
- } else {
- handler.unrecognized(tp, rest);
- }
- }
- }
-
-
- /** Sets <b>w</b> as the PrintWriter for debugging output,
- * which writes out all messages passed between Tor and the controller.
- * Outgoing messages are preceded by "\>\>" and incoming messages are preceded
- * by "\<\<"
- */
- public void setDebugging(PrintWriter w) {
- debugOutput = w;
- }
-
- /** Sets <b>s</b> as the PrintStream for debugging output,
- * which writes out all messages passed between Tor and the controller.
- * Outgoing messages are preceded by "\>\>" and incoming messages are preceded
- * by "\<\<"
- */
- public void setDebugging(PrintStream s) {
- debugOutput = new PrintWriter(s, true);
- }
-
- /** Set the EventHandler object that will be notified of any
- * events Tor delivers to this connection. To make Tor send us
- * events, call setEvents(). */
- public void setEventHandler(EventHandler handler) {
- this.handler = handler;
- }
-
- /**
- * Start a thread to react to Tor's responses in the background.
- * This is necessary to handle asynchronous events and synchronous
- * responses that arrive independantly over the same socket.
- */
- public synchronized Thread launchThread(boolean daemon) {
- ControlParseThread th = new ControlParseThread();
- if (daemon)
- th.setDaemon(true);
- th.start();
- this.thread = th;
- return th;
- }
-
- protected class ControlParseThread extends Thread {
-
- @Override
- public void run() {
- try {
- react();
- } catch (IOException ex) {
- parseThreadException = ex;
- }
- }
- }
-
- protected synchronized void checkThread() {
- if (thread == null)
- launchThread(true);
- }
-
- /** helper: implement the main background loop. */
- protected void react() throws IOException {
- while (true) {
- ArrayList<ReplyLine> lst = readReply();
- if (lst.isEmpty()) {
- // connection has been closed remotely! end the loop!
- return;
- }
- if ((lst.get(0)).status.startsWith("6"))
- handleEvent(lst);
- else {
- synchronized (waiters) {
- if (!waiters.isEmpty())
- {
- Waiter w;
- w = waiters.removeFirst();
- w.setResponse(lst);
- }
- }
-
- }
- }
- }
-
- /** Change the value of the configuration option 'key' to 'val'.
- */
- public void setConf(String key, String value) throws IOException {
- List<String> lst = new ArrayList<String>();
- lst.add(key+" "+value);
- setConf(lst);
- }
-
- /** Change the values of the configuration options stored in kvMap. */
- public void setConf(Map<String, String> kvMap) throws IOException {
- List<String> lst = new ArrayList<String>();
- for (Iterator<Map.Entry<String,String>> it = kvMap.entrySet().iterator(); it.hasNext(); ) {
- Map.Entry<String,String> ent = it.next();
- lst.add(ent.getKey()+" "+ent.getValue()+"\n");
- }
- setConf(lst);
- }
-
- /** Changes the values of the configuration options stored in
- * <b>kvList</b>. Each list element in <b>kvList</b> is expected to be
- * String of the format "key value".
- *
- * Tor behaves as though it had just read each of the key-value pairs
- * from its configuration file. Keywords with no corresponding values have
- * their configuration values reset to their defaults. setConf is
- * all-or-nothing: if there is an error in any of the configuration settings,
- * Tor sets none of them.
- *
- * When a configuration option takes multiple values, or when multiple
- * configuration keys form a context-sensitive group (see getConf below), then
- * setting any of the options in a setConf command is taken to reset all of
- * the others. For example, if two ORBindAddress values are configured, and a
- * command arrives containing a single ORBindAddress value, the new
- * command's value replaces the two old values.
- *
- * To remove all settings for a given option entirely (and go back to its
- * default value), include a String in <b>kvList</b> containing the key and no value.
- */
- public void setConf(Collection<String> kvList) throws IOException {
- if (kvList.size() == 0)
- return;
- StringBuffer b = new StringBuffer("SETCONF");
- for (Iterator<String> it = kvList.iterator(); it.hasNext(); ) {
- String kv = it.next();
- int i = kv.indexOf(' ');
- if (i == -1)
- b.append(" ").append(kv);
- b.append(" ").append(kv.substring(0,i)).append("=")
- .append(quote(kv.substring(i+1)));
- }
- b.append("\r\n");
- sendAndWaitForResponse(b.toString(), null);
- }
-
- /** Try to reset the values listed in the collection 'keys' to their
- * default values.
- **/
- public void resetConf(Collection<String> keys) throws IOException {
- if (keys.size() == 0)
- return;
- StringBuffer b = new StringBuffer("RESETCONF");
- for (Iterator<String> it = keys.iterator(); it.hasNext(); ) {
- String key = it.next();
- b.append(" ").append(key);
- }
- b.append("\r\n");
- sendAndWaitForResponse(b.toString(), null);
- }
-
- /** Return the value of the configuration option 'key' */
- public List<ConfigEntry> getConf(String key) throws IOException {
- List<String> lst = new ArrayList<String>();
- lst.add(key);
- return getConf(lst);
- }
-
- /** Requests the values of the configuration variables listed in <b>keys</b>.
- * Results are returned as a list of ConfigEntry objects.
- *
- * If an option appears multiple times in the configuration, all of its
- * key-value pairs are returned in order.
- *
- * Some options are context-sensitive, and depend on other options with
- * different keywords. These cannot be fetched directly. Currently there
- * is only one such option: clients should use the "HiddenServiceOptions"
- * virtual keyword to get all HiddenServiceDir, HiddenServicePort,
- * HiddenServiceNodes, and HiddenServiceExcludeNodes option settings.
- */
- public List<ConfigEntry> getConf(Collection<String> keys) throws IOException {
- StringBuffer sb = new StringBuffer("GETCONF");
- for (Iterator<String> it = keys.iterator(); it.hasNext(); ) {
- String key = it.next();
- sb.append(" ").append(key);
- }
- sb.append("\r\n");
- List<ReplyLine> lst = sendAndWaitForResponse(sb.toString(), null);
- List<ConfigEntry> result = new ArrayList<ConfigEntry>();
- for (Iterator<ReplyLine> it = lst.iterator(); it.hasNext(); ) {
- String kv = (it.next()).msg;
- int idx = kv.indexOf('=');
- if (idx >= 0)
- result.add(new ConfigEntry(kv.substring(0, idx),
- kv.substring(idx+1)));
- else
- result.add(new ConfigEntry(kv));
- }
- return result;
- }
-
- /** Request that the server inform the client about interesting events.
- * Each element of <b>events</b> is one of the following Strings:
- * ["CIRC" | "STREAM" | "ORCONN" | "BW" | "DEBUG" |
- * "INFO" | "NOTICE" | "WARN" | "ERR" | "NEWDESC" | "ADDRMAP"] .
- *
- * Any events not listed in the <b>events</b> are turned off; thus, calling
- * setEvents with an empty <b>events</b> argument turns off all event reporting.
- */
- public void setEvents(List<String> events) throws IOException {
- StringBuffer sb = new StringBuffer("SETEVENTS");
- for (Iterator<String> it = events.iterator(); it.hasNext(); ) {
- sb.append(" ").append(it.next());
- }
- sb.append("\r\n");
- sendAndWaitForResponse(sb.toString(), null);
- }
-
- /** Authenticates the controller to the Tor server.
- *
- * By default, the current Tor implementation trusts all local users, and
- * the controller can authenticate itself by calling authenticate(new byte[0]).
- *
- * If the 'CookieAuthentication' option is true, Tor writes a "magic cookie"
- * file named "control_auth_cookie" into its data directory. To authenticate,
- * the controller must send the contents of this file in <b>auth</b>.
- *
- * If the 'HashedControlPassword' option is set, <b>auth</b> must contain the salted
- * hash of a secret password. The salted hash is computed according to the
- * S2K algorithm in RFC 2440 (OpenPGP), and prefixed with the s2k specifier.
- * This is then encoded in hexadecimal, prefixed by the indicator sequence
- * "16:".
- *
- * You can generate the salt of a password by calling
- * 'tor --hash-password <password>'
- * or by using the provided PasswordDigest class.
- * To authenticate under this scheme, the controller sends Tor the original
- * secret that was used to generate the password.
- */
- public void authenticate(byte[] auth) throws IOException {
- String cmd = "AUTHENTICATE " + Bytes.hex(auth) + "\r\n";
- sendAndWaitForResponse(cmd, null);
- }
-
- /** Instructs the server to write out its configuration options into its torrc.
- */
- public void saveConf() throws IOException {
- sendAndWaitForResponse("SAVECONF\r\n", null);
- }
-
- /** Sends a signal from the controller to the Tor server.
- * <b>signal</b> is one of the following Strings:
- * <ul>
- * <li>"RELOAD" or "HUP" : Reload config items, refetch directory</li>
- * <li>"SHUTDOWN" or "INT" : Controlled shutdown: if server is an OP, exit immediately.
- * If it's an OR, close listeners and exit after 30 seconds</li>
- * <li>"DUMP" or "USR1" : Dump stats: log information about open connections and circuits</li>
- * <li>"DEBUG" or "USR2" : Debug: switch all open logs to loglevel debug</li>
- * <li>"HALT" or "TERM" : Immediate shutdown: clean up and exit now</li>
- * </ul>
- */
- public void signal(String signal) throws IOException {
- String cmd = "SIGNAL " + signal + "\r\n";
- sendAndWaitForResponse(cmd, null);
- }
-
- /** Send a signal to the Tor process to shut it down or halt it.
- * Does not wait for a response. */
- public void shutdownTor(String signal) throws IOException {
- String s = "SIGNAL " + signal + "\r\n";
- Waiter w = new Waiter();
- if (debugOutput != null)
- debugOutput.print(">> "+s);
- synchronized (waiters) {
- output.write(s);
- output.flush();
- }
- }
-
- /** Tells the Tor server that future SOCKS requests for connections to a set of original
- * addresses should be replaced with connections to the specified replacement
- * addresses. Each element of <b>kvLines</b> is a String of the form
- * "old-address new-address". This function returns the new address mapping.
- *
- * The client may decline to provide a body for the original address, and
- * instead send a special null address ("0.0.0.0" for IPv4, "::0" for IPv6, or
- * "." for hostname), signifying that the server should choose the original
- * address itself, and return that address in the reply. The server
- * should ensure that it returns an element of address space that is unlikely
- * to be in actual use. If there is already an address mapped to the
- * destination address, the server may reuse that mapping.
- *
- * If the original address is already mapped to a different address, the old
- * mapping is removed. If the original address and the destination address
- * are the same, the server removes any mapping in place for the original
- * address.
- *
- * Mappings set by the controller last until the Tor process exits:
- * they never expire. If the controller wants the mapping to last only
- * a certain time, then it must explicitly un-map the address when that
- * time has elapsed.
- */
- public Map<String,String> mapAddresses(Collection<String> kvLines) throws IOException {
- StringBuffer sb = new StringBuffer("MAPADDRESS");
- for (Iterator<String> it = kvLines.iterator(); it.hasNext(); ) {
- String kv = it.next();
- int i = kv.indexOf(' ');
- sb.append(" ").append(kv.substring(0,i)).append("=")
- .append(quote(kv.substring(i+1)));
- }
- sb.append("\r\n");
- List<ReplyLine> lst = sendAndWaitForResponse(sb.toString(), null);
- Map<String,String> result = new HashMap<String,String>();
- for (Iterator<ReplyLine> it = lst.iterator(); it.hasNext(); ) {
- String kv = (it.next()).msg;
- int idx = kv.indexOf('=');
- result.put(kv.substring(0, idx),
- kv.substring(idx+1));
- }
- return result;
- }
-
- public Map<String,String> mapAddresses(Map<String,String> addresses) throws IOException {
- List<String> kvList = new ArrayList<String>();
- for (Iterator<Map.Entry<String, String>> it = addresses.entrySet().iterator(); it.hasNext(); ) {
- Map.Entry<String,String> e = it.next();
- kvList.add(e.getKey()+" "+e.getValue());
- }
- return mapAddresses(kvList);
- }
-
- public String mapAddress(String fromAddr, String toAddr) throws IOException {
- List<String> lst = new ArrayList<String>();
- lst.add(fromAddr+" "+toAddr+"\n");
- Map<String,String> m = mapAddresses(lst);
- return m.get(fromAddr);
- }
-
- /** Queries the Tor server for keyed values that are not stored in the torrc
- * configuration file. Returns a map of keys to values.
- *
- * Recognized keys include:
- * <ul>
- * <li>"version" : The version of the server's software, including the name
- * of the software. (example: "Tor 0.0.9.4")</li>
- * <li>"desc/id/<OR identity>" or "desc/name/<OR nickname>" : the latest server
- * descriptor for a given OR, NUL-terminated. If no such OR is known, the
- * corresponding value is an empty string.</li>
- * <li>"network-status" : a space-separated list of all known OR identities.
- * This is in the same format as the router-status line in directories;
- * see tor-spec.txt for details.</li>
- * <li>"addr-mappings/all"</li>
- * <li>"addr-mappings/config"</li>
- * <li>"addr-mappings/cache"</li>
- * <li>"addr-mappings/control" : a space-separated list of address mappings, each
- * in the form of "from-address=to-address". The 'config' key
- * returns those address mappings set in the configuration; the 'cache'
- * key returns the mappings in the client-side DNS cache; the 'control'
- * key returns the mappings set via the control interface; the 'all'
- * target returns the mappings set through any mechanism.</li>
- * <li>"circuit-status" : A series of lines as for a circuit status event. Each line is of the form:
- * "CircuitID CircStatus Path"</li>
- * <li>"stream-status" : A series of lines as for a stream status event. Each is of the form:
- * "StreamID StreamStatus CircID Target"</li>
- * <li>"orconn-status" : A series of lines as for an OR connection status event. Each is of the
- * form: "ServerID ORStatus"</li>
- * </ul>
- */
- public Map<String,String> getInfo(Collection<String> keys) throws IOException {
- StringBuffer sb = new StringBuffer("GETINFO");
- for (Iterator<String> it = keys.iterator(); it.hasNext(); ) {
- sb.append(" ").append(it.next());
- }
- sb.append("\r\n");
- List<ReplyLine> lst = sendAndWaitForResponse(sb.toString(), null);
- Map<String,String> m = new HashMap<String,String>();
- for (Iterator<ReplyLine> it = lst.iterator(); it.hasNext(); ) {
- ReplyLine line = it.next();
- int idx = line.msg.indexOf('=');
- if (idx<0)
- break;
- String k = line.msg.substring(0,idx);
- String v;
- if (line.rest != null) {
- v = line.rest;
- } else {
- v = line.msg.substring(idx+1);
- }
- m.put(k, v);
- }
- return m;
- }
-
-
-
- /** Return the value of the information field 'key' */
- public String getInfo(String key) throws IOException {
- List<String> lst = new ArrayList<String>();
- lst.add(key);
- Map<String,String> m = getInfo(lst);
- return m.get(key);
- }
-
- /** An extendCircuit request takes one of two forms: either the <b>circID</b> is zero, in
- * which case it is a request for the server to build a new circuit according
- * to the specified path, or the <b>circID</b> is nonzero, in which case it is a
- * request for the server to extend an existing circuit with that ID according
- * to the specified <b>path</b>.
- *
- * If successful, returns the Circuit ID of the (maybe newly created) circuit.
- */
- public String extendCircuit(String circID, String path) throws IOException {
- List<ReplyLine> lst = sendAndWaitForResponse(
- "EXTENDCIRCUIT "+circID+" "+path+"\r\n", null);
- return (lst.get(0)).msg;
- }
-
- /** Informs the Tor server that the stream specified by <b>streamID</b> should be
- * associated with the circuit specified by <b>circID</b>.
- *
- * Each stream may be associated with
- * at most one circuit, and multiple streams may share the same circuit.
- * Streams can only be attached to completed circuits (that is, circuits that
- * have sent a circuit status "BUILT" event or are listed as built in a
- * getInfo circuit-status request).
- *
- * If <b>circID</b> is 0, responsibility for attaching the given stream is
- * returned to Tor.
- *
- * By default, Tor automatically attaches streams to
- * circuits itself, unless the configuration variable
- * "__LeaveStreamsUnattached" is set to "1". Attempting to attach streams
- * via TC when "__LeaveStreamsUnattached" is false may cause a race between
- * Tor and the controller, as both attempt to attach streams to circuits.
- */
- public void attachStream(String streamID, String circID)
- throws IOException {
- sendAndWaitForResponse("ATTACHSTREAM "+streamID+" "+circID+"\r\n", null);
- }
-
- /** Tells Tor about the server descriptor in <b>desc</b>.
- *
- * The descriptor, when parsed, must contain a number of well-specified
- * fields, including fields for its nickname and identity.
- */
- // More documentation here on format of desc?
- // No need for return value? control-spec.txt says reply is merely "250 OK" on success...
- public String postDescriptor(String desc) throws IOException {
- List<ReplyLine> lst = sendAndWaitForResponse("+POSTDESCRIPTOR\r\n", desc);
- return (lst.get(0)).msg;
- }
-
- /** Tells Tor to change the exit address of the stream identified by <b>streamID</b>
- * to <b>address</b>. No remapping is performed on the new provided address.
- *
- * To be sure that the modified address will be used, this event must be sent
- * after a new stream event is received, and before attaching this stream to
- * a circuit.
- */
- public void redirectStream(String streamID, String address) throws IOException {
- sendAndWaitForResponse("REDIRECTSTREAM "+streamID+" "+address+"\r\n",
- null);
- }
-
- /** Tells Tor to close the stream identified by <b>streamID</b>.
- * <b>reason</b> should be one of the Tor RELAY_END reasons given in tor-spec.txt, as a decimal:
- * <ul>
- * <li>1 -- REASON_MISC (catch-all for unlisted reasons)</li>
- * <li>2 -- REASON_RESOLVEFAILED (couldn't look up hostname)</li>
- * <li>3 -- REASON_CONNECTREFUSED (remote host refused connection)</li>
- * <li>4 -- REASON_EXITPOLICY (OR refuses to connect to host or port)</li>
- * <li>5 -- REASON_DESTROY (Circuit is being destroyed)</li>
- * <li>6 -- REASON_DONE (Anonymized TCP connection was closed)</li>
- * <li>7 -- REASON_TIMEOUT (Connection timed out, or OR timed out while connecting)</li>
- * <li>8 -- (unallocated)</li>
- * <li>9 -- REASON_HIBERNATING (OR is temporarily hibernating)</li>
- * <li>10 -- REASON_INTERNAL (Internal error at the OR)</li>
- * <li>11 -- REASON_RESOURCELIMIT (OR has no resources to fulfill request)</li>
- * <li>12 -- REASON_CONNRESET (Connection was unexpectedly reset)</li>
- * <li>13 -- REASON_TORPROTOCOL (Sent when closing connection because of Tor protocol violations)</li>
- * </ul>
- *
- * Tor may hold the stream open for a while to flush any data that is pending.
- */
- public void closeStream(String streamID, byte reason)
- throws IOException {
- sendAndWaitForResponse("CLOSESTREAM "+streamID+" "+reason+"\r\n",null);
- }
-
- /** Tells Tor to close the circuit identified by <b>circID</b>.
- * If <b>ifUnused</b> is true, do not close the circuit unless it is unused.
- */
- public void closeCircuit(String circID, boolean ifUnused) throws IOException {
- sendAndWaitForResponse("CLOSECIRCUIT "+circID+
- (ifUnused?" IFUNUSED":"")+"\r\n", null);
- }
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlError.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlError.java
deleted file mode 100644
index d07ee514..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/TorControlError.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-import java.io.IOException;
-
-/**
- * An exception raised when Tor tells us about an error.
- */
-public class TorControlError extends IOException {
-
- static final long serialVersionUID = 3;
-
- private final int errorType;
-
- public TorControlError(int type, String s) {
- super(s);
- errorType = type;
- }
-
- public TorControlError(String s) {
- this(-1, s);
- }
-
- public int getErrorType() {
- return errorType;
- }
-
- public String getErrorMsg() {
- try {
- if (errorType == -1)
- return null;
- return TorControlCommands.ERROR_MSGS[errorType];
- } catch (ArrayIndexOutOfBoundsException ex) {
- return "Unrecongized error #"+errorType;
- }
- }
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/TorControlSyntaxError.java b/orbotservice/src/test/java/org/torproject/android/control/TorControlSyntaxError.java
deleted file mode 100644
index dba4f44b..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/TorControlSyntaxError.java
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control;
-
-import java.io.IOException;
-
-/**
- * An exception raised when Tor behaves in an unexpected way.
- */
-public class TorControlSyntaxError extends IOException {
-
- static final long serialVersionUID = 3;
-
- public TorControlSyntaxError(String s) { super(s); }
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/examples/.cvsignore b/orbotservice/src/test/java/org/torproject/android/control/examples/.cvsignore
deleted file mode 100644
index 6b468b62..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/examples/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.class
diff --git a/orbotservice/src/test/java/org/torproject/android/control/examples/DebuggingEventHandler.java b/orbotservice/src/test/java/org/torproject/android/control/examples/DebuggingEventHandler.java
deleted file mode 100644
index 48c49a28..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/examples/DebuggingEventHandler.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control.examples;
-
-import java.io.PrintWriter;
-import java.util.Iterator;
-import org.torproject.android.control.EventHandler;
-
-public class DebuggingEventHandler implements EventHandler {
-
- private final PrintWriter out;
-
- public DebuggingEventHandler(PrintWriter p) {
- out = p;
- }
-
- public void circuitStatus(String status, String circID, String path) {
- out.println("Circuit "+circID+" is now "+status+" (path="+path+")");
- }
- public void streamStatus(String status, String streamID, String target) {
- out.println("Stream "+streamID+" is now "+status+" (target="+target+")");
- }
- public void orConnStatus(String status, String orName) {
- out.println("OR connection to "+orName+" is now "+status);
- }
- public void bandwidthUsed(long read, long written) {
- out.println("Bandwidth usage: "+read+" bytes read; "+
- written+" bytes written.");
- }
- public void newDescriptors(java.util.List<String> orList) {
- out.println("New descriptors for routers:");
- for (Iterator<String> i = orList.iterator(); i.hasNext(); )
- out.println(" "+i.next());
- }
- public void message(String type, String msg) {
- out.println("["+type+"] "+msg.trim());
- }
-
- public void unrecognized(String type, String msg) {
- out.println("unrecognized event ["+type+"] "+msg.trim());
- }
-
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/control/examples/Main.java b/orbotservice/src/test/java/org/torproject/android/control/examples/Main.java
deleted file mode 100644
index b0e0a3c0..00000000
--- a/orbotservice/src/test/java/org/torproject/android/control/examples/Main.java
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2005 Nick Mathewson, Roger Dingledine
-// See LICENSE file for copying information
-package org.torproject.android.control.examples;
-
-import org.torproject.android.control.*;
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.net.Socket;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Iterator;
-
-public class Main implements TorControlCommands {
-
- public static void main(String args[]) {
- if (args.length < 1) {
- System.err.println("No command given.");
- return;
- }
- try {
- if (args[0].equals("set-config")) {
- setConfig(args);
- } else if (args[0].equals("get-config")) {
- getConfig(args);
- } else if (args[0].equals("get-info")) {
- getInfo(args);
- } else if (args[0].equals("listen")) {
- listenForEvents(args);
- } else if (args[0].equals("signal")) {
- signal(args);
- } else if (args[0].equals("auth")) {
- authDemo(args);
- } else {
- System.err.println("Unrecognized command: "+args[0]);
- }
- } catch (EOFException ex) {
- System.out.println("Control socket closed by Tor.");
- } catch (TorControlError ex) {
- System.err.println("Error from Tor process: "+
- ex+" ["+ex.getErrorMsg()+"]");
- } catch (IOException ex) {
- System.err.println("IO exception when talking to Tor process: "+
- ex);
- ex.printStackTrace(System.err);
- }
- }
-
- private static TorControlConnection getConnection(String[] args,
- boolean daemon) throws IOException {
- Socket s = new Socket("127.0.0.1", 9100);
- TorControlConnection conn = new TorControlConnection(s);
- conn.launchThread(daemon);
- conn.authenticate(new byte[0]);
- return conn;
- }
-
- private static TorControlConnection getConnection(String[] args)
- throws IOException {
- return getConnection(args, true);
- }
-
- public static void setConfig(String[] args) throws IOException {
- // Usage: "set-config [-save] key value key value key value"
- TorControlConnection conn = getConnection(args);
- ArrayList<String> lst = new ArrayList<String>();
- int i = 1;
- boolean save = false;
- if (args[i].equals("-save")) {
- save = true;
- ++i;
- }
- for (; i < args.length; i +=2) {
- lst.add(args[i]+" "+args[i+1]);
- }
- conn.setConf(lst);
- if (save) {
- conn.saveConf();
- }
- }
-
- public static void getConfig(String[] args) throws IOException {
- // Usage: get-config key key key
- TorControlConnection conn = getConnection(args);
- List<ConfigEntry> lst = conn.getConf(Arrays.asList(args).subList(1,args.length));
- for (Iterator<ConfigEntry> i = lst.iterator(); i.hasNext(); ) {
- ConfigEntry e = i.next();
- System.out.println("KEY: "+e.key);
- System.out.println("VAL: "+e.value);
- }
- }
-
- public static void getInfo(String[] args) throws IOException {
- TorControlConnection conn = getConnection(args);
- Map<String,String> m = conn.getInfo(Arrays.asList(args).subList(1,args.length));
- for (Iterator<Map.Entry<String, String>> i = m.entrySet().iterator(); i.hasNext(); ) {
- Map.Entry<String,String> e = i.next();
- System.out.println("KEY: "+e.getKey());
- System.out.println("VAL: "+e.getValue());
- }
- }
-
- public static void listenForEvents(String[] args) throws IOException {
- // Usage: listen [circ|stream|orconn|bw|newdesc|info|notice|warn|error]*
- TorControlConnection conn = getConnection(args, false);
- ArrayList<String> lst = new ArrayList<String>();
- for (int i = 1; i < args.length; ++i) {
- lst.add(args[i]);
- }
- conn.setEventHandler(
- new DebuggingEventHandler(new PrintWriter(System.out, true)));
- conn.setEvents(lst);
- }
-
- public static void signal(String[] args) throws IOException {
- // Usage signal [reload|shutdown|dump|debug|halt]
- TorControlConnection conn = getConnection(args, false);
- // distinguish shutdown signal from other signals
- if ("SHUTDOWN".equalsIgnoreCase(args[1])
- || "HALT".equalsIgnoreCase(args[1])) {
- conn.shutdownTor(args[1].toUpperCase());
- } else {
- conn.signal(args[1].toUpperCase());
- }
- }
-
- public static void authDemo(String[] args) throws IOException {
-
- PasswordDigest pwd = PasswordDigest.generateDigest();
- Socket s = new Socket("127.0.0.1", 9100);
- TorControlConnection conn = new TorControlConnection(s);
- conn.launchThread(true);
- conn.authenticate(new byte[0]);
-
- conn.setConf("HashedControlPassword", pwd.getHashedPassword());
-
- s = new Socket("127.0.0.1", 9100);
- conn = new TorControlConnection(s);
- conn.launchThread(true);
- conn.authenticate(pwd.getSecret());
- }
-
-}
-
diff --git a/orbotservice/src/test/java/org/torproject/android/service/ExampleUnitTest.java b/orbotservice/src/test/java/org/torproject/android/service/ExampleUnitTest.java
deleted file mode 100644
index 578fa4b9..00000000
--- a/orbotservice/src/test/java/org/torproject/android/service/ExampleUnitTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.torproject.android.service;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * To work on unit tests, switch the Test Artifact in the Build Variants view.
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
\ No newline at end of file
1
0
22 Dec '21
commit 9b483cfd01177e575ac46487466b9ea0e39911d2
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Wed Dec 18 11:38:28 2019 +0100
get geoip files as JARs from jcenter Maven repo
---
app-mini/src/main/assets/common/geoip | 0
app-mini/src/main/assets/common/geoip6 | 0
orbotservice/build.gradle | 2 ++
.../android/service/util/CustomTorResourceInstaller.java | 13 ++++---------
4 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/app-mini/src/main/assets/common/geoip b/app-mini/src/main/assets/common/geoip
deleted file mode 100644
index e69de29b..00000000
diff --git a/app-mini/src/main/assets/common/geoip6 b/app-mini/src/main/assets/common/geoip6
deleted file mode 100644
index e69de29b..00000000
diff --git a/orbotservice/build.gradle b/orbotservice/build.gradle
index 0d6b162e..65b6d6b2 100644
--- a/orbotservice/build.gradle
+++ b/orbotservice/build.gradle
@@ -64,6 +64,8 @@ dependencies {
implementation 'com.offbynull.portmapper:portmapper:2.0.5'
+ implementation 'info.guardianproject:geoip:20191217'
+
api 'info.guardianproject:jtorctl:0.4'
implementation 'com.github.tladesignz:IPtProxy:0.5.2'
diff --git a/orbotservice/src/main/java/org/torproject/android/service/util/CustomTorResourceInstaller.java b/orbotservice/src/main/java/org/torproject/android/service/util/CustomTorResourceInstaller.java
index b39b6ae7..fc8acde1 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/util/CustomTorResourceInstaller.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/util/CustomTorResourceInstaller.java
@@ -4,6 +4,8 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.util.Log;
+import org.torproject.android.service.TorServiceConstants;
+
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -16,12 +18,6 @@ public class CustomTorResourceInstaller {
private static final String TAG = "CustomTorResourceInstaller";
- String COMMON_ASSET_KEY = "common/";
-
- //geoip data file asset key
- String GEOIP_ASSET_KEY = "geoip";
- String GEOIP6_ASSET_KEY = "geoip6";
-
private File installFolder;
private Context context;
@@ -98,15 +94,14 @@ public class CustomTorResourceInstaller {
return fList;
}
- //
/*
* Extract the Tor resources from the APK file using ZIP
*/
public void installGeoIP() throws IOException {
if (!installFolder.exists())
installFolder.mkdirs();
- assetToFile(COMMON_ASSET_KEY + GEOIP_ASSET_KEY, GEOIP_ASSET_KEY, false, false);
- assetToFile(COMMON_ASSET_KEY + GEOIP6_ASSET_KEY, GEOIP6_ASSET_KEY, false, false);
+ assetToFile(TorServiceConstants.GEOIP_ASSET_KEY, TorServiceConstants.GEOIP_ASSET_KEY, false, false);
+ assetToFile(TorServiceConstants.GEOIP6_ASSET_KEY, TorServiceConstants.GEOIP6_ASSET_KEY, false, false);
}
/*
1
0
[orbot/master] fix lint StringFormatMatches: bad format type, was String should be int
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit c41f8e8879beaed58cd9585a9ee5c5a1947e6b7d
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Wed Dec 18 16:12:58 2019 +0100
fix lint StringFormatMatches: bad format type, was String should be int
sed -i 's,\(hidden_service_request.*%1\$\)s,\1d,' */src/main/res/values-*/*strings.xml
---
app-mini/src/main/res/values-ay/strings.xml | 2 +-
app-mini/src/main/res/values-be/strings.xml | 2 +-
app-mini/src/main/res/values-ca/strings.xml | 2 +-
app-mini/src/main/res/values-de/strings.xml | 2 +-
app-mini/src/main/res/values-el/strings.xml | 2 +-
app-mini/src/main/res/values-es-rAR/strings.xml | 2 +-
app-mini/src/main/res/values-es/strings.xml | 2 +-
app-mini/src/main/res/values-eu/strings.xml | 2 +-
app-mini/src/main/res/values-fa/strings.xml | 2 +-
app-mini/src/main/res/values-fr/strings.xml | 2 +-
app-mini/src/main/res/values-gl/strings.xml | 2 +-
app-mini/src/main/res/values-hi/strings.xml | 2 +-
app-mini/src/main/res/values-hu/strings.xml | 2 +-
app-mini/src/main/res/values-is/strings.xml | 2 +-
app-mini/src/main/res/values-it/strings.xml | 2 +-
app-mini/src/main/res/values-ja/strings.xml | 2 +-
app-mini/src/main/res/values-mk/strings.xml | 2 +-
app-mini/src/main/res/values-nl/strings.xml | 2 +-
app-mini/src/main/res/values-pt-rBR/strings.xml | 2 +-
app-mini/src/main/res/values-ru/strings.xml | 2 +-
app-mini/src/main/res/values-sr/strings.xml | 2 +-
app-mini/src/main/res/values-sv/strings.xml | 2 +-
app-mini/src/main/res/values-th/strings.xml | 2 +-
app-mini/src/main/res/values-tr/strings.xml | 2 +-
app-mini/src/main/res/values-uk/strings.xml | 2 +-
app-mini/src/main/res/values-zh-rTW/strings.xml | 2 +-
app-mini/src/main/res/values/strings.xml | 2 +-
app/src/main/java/org/torproject/android/OrbotMainActivity.java | 4 ++--
app/src/main/res/values-ay/strings.xml | 2 +-
app/src/main/res/values-be/strings.xml | 2 +-
app/src/main/res/values-ca/strings.xml | 2 +-
app/src/main/res/values-de/strings.xml | 2 +-
app/src/main/res/values-el/strings.xml | 2 +-
app/src/main/res/values-es-rAR/strings.xml | 2 +-
app/src/main/res/values-es/strings.xml | 2 +-
app/src/main/res/values-eu/strings.xml | 2 +-
app/src/main/res/values-fa/strings.xml | 2 +-
app/src/main/res/values-fi/strings.xml | 2 +-
app/src/main/res/values-fr-rFR/strings.xml | 2 +-
app/src/main/res/values-fr/strings.xml | 2 +-
app/src/main/res/values-gl/strings.xml | 2 +-
app/src/main/res/values-hi/strings.xml | 2 +-
app/src/main/res/values-hu/strings.xml | 2 +-
app/src/main/res/values-is/strings.xml | 2 +-
app/src/main/res/values-it/strings.xml | 2 +-
app/src/main/res/values-ja/strings.xml | 2 +-
app/src/main/res/values-mk/strings.xml | 2 +-
app/src/main/res/values-nb/strings.xml | 2 +-
app/src/main/res/values-nl/strings.xml | 2 +-
app/src/main/res/values-pl/strings.xml | 2 +-
app/src/main/res/values-pt-rBR/strings.xml | 2 +-
app/src/main/res/values-pt-rPT/strings.xml | 2 +-
app/src/main/res/values-pt/strings.xml | 2 +-
app/src/main/res/values-ru/strings.xml | 2 +-
app/src/main/res/values-sr/strings.xml | 2 +-
app/src/main/res/values-sv/strings.xml | 2 +-
app/src/main/res/values-th/strings.xml | 2 +-
app/src/main/res/values-tr/strings.xml | 2 +-
app/src/main/res/values-uk/strings.xml | 2 +-
app/src/main/res/values-zh-rCN/strings.xml | 2 +-
app/src/main/res/values-zh-rTW/strings.xml | 2 +-
61 files changed, 62 insertions(+), 62 deletions(-)
diff --git a/app-mini/src/main/res/values-ay/strings.xml b/app-mini/src/main/res/values-ay/strings.xml
index 3c716a32..25a4ac0e 100644
--- a/app-mini/src/main/res/values-ay/strings.xml
+++ b/app-mini/src/main/res/values-ay/strings.xml
@@ -93,7 +93,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Imantat apayañ thakhinak Tor llikar mä wakichäwiw jist\'arañ muni %1$s. Wakichawitix uñt\'atachixa, iyaw sama.</string>
+ <string name="hidden_service_request">Imantat apayañ thakhinak Tor llikar mä wakichäwiw jist\'arañ muni %1$d. Wakichawitix uñt\'atachixa, iyaw sama.</string>
<string name="found_existing_tor_process">Utjir Toraw jikxatata...</string>
<string name="something_bad_happened">Mä jan walt\'äwiw utji. Qillqantayasit uñakipam</string>
<string name="unable_to_read_hidden_service_name">Janiw imantat yanapirin sutiman ullarañjamakänti</string>
diff --git a/app-mini/src/main/res/values-be/strings.xml b/app-mini/src/main/res/values-be/strings.xml
index 7f3816ce..aaa78150 100644
--- a/app-mini/src/main/res/values-be/strings.xml
+++ b/app-mini/src/main/res/values-be/strings.xml
@@ -93,7 +93,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Дадатак хоча адкрыць схаваны порт сервера %1$s сеткі Tor. Гэта бяспечна, калі вы давяраеце дадзенаму дадатку.</string>
+ <string name="hidden_service_request">Дадатак хоча адкрыць схаваны порт сервера %1$d сеткі Tor. Гэта бяспечна, калі вы давяраеце дадзенаму дадатку.</string>
<string name="found_existing_tor_process">знойдзены існавалы працэс Tor...</string>
<string name="something_bad_happened">Адбылася нейкая памылка. Праверце журнал.</string>
<string name="unable_to_read_hidden_service_name">немагчыма прачытаць імя схаванай службы</string>
diff --git a/app-mini/src/main/res/values-ca/strings.xml b/app-mini/src/main/res/values-ca/strings.xml
index e1b695fd..5c4741b0 100644
--- a/app-mini/src/main/res/values-ca/strings.xml
+++ b/app-mini/src/main/res/values-ca/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicació vol obrir el port de servidor ocults%1$s a la xarxa Tor. Això és segur si confieu en l\'aplicació</string>
+ <string name="hidden_service_request">Una aplicació vol obrir el port de servidor ocults%1$d a la xarxa Tor. Això és segur si confieu en l\'aplicació</string>
<string name="found_existing_tor_process">s\'ha trobat un procés Tor existent...</string>
<string name="something_bad_happened">Ha fallat alguna cosa. Comproveu el registre</string>
<string name="unable_to_read_hidden_service_name">ha estat impossible llegir el nom del servei ocult</string>
diff --git a/app-mini/src/main/res/values-de/strings.xml b/app-mini/src/main/res/values-de/strings.xml
index ef54116a..0e512fd2 100644
--- a/app-mini/src/main/res/values-de/strings.xml
+++ b/app-mini/src/main/res/values-de/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Eine Anwendung möchte den Versteckten Server-Anschluss %1$s zum Tor-Netz öffnen. Dies ist sicher, wenn Sie der Anwendung vertrauen.</string>
+ <string name="hidden_service_request">Eine Anwendung möchte den Versteckten Server-Anschluss %1$d zum Tor-Netz öffnen. Dies ist sicher, wenn Sie der Anwendung vertrauen.</string>
<string name="found_existing_tor_process">bestehenden Tor-Prozess gefunden …</string>
<string name="something_bad_happened">Etwas ist schief gelaufen. Bitte Protokoll überprüfen</string>
<string name="unable_to_read_hidden_service_name">Name des versteckten Dienstes kann nicht gelesen werden</string>
diff --git a/app-mini/src/main/res/values-el/strings.xml b/app-mini/src/main/res/values-el/strings.xml
index f2606b40..7c546a78 100644
--- a/app-mini/src/main/res/values-el/strings.xml
+++ b/app-mini/src/main/res/values-el/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Κάποια εφαρμογή προσπαθεί να ανοίξει την κρυφή θύρα διακομιστή %1$sστο δίκτυο Tor. Πρόκειται για ασφαλή ενέργεια, εφόσον γνωρίζετε την εφαρμογή.</string>
+ <string name="hidden_service_request">Κάποια εφαρμογή προσπαθεί να ανοίξει την κρυφή θύρα διακομιστή %1$dστο δίκτυο Tor. Πρόκειται για ασφαλή ενέργεια, εφόσον γνωρίζετε την εφαρμογή.</string>
<string name="found_existing_tor_process">αναζήτηση διεργασιών Tor...</string>
<string name="something_bad_happened">Κάτι κακό συνέβη. Ελέγξτε τις καταγραφές</string>
<string name="unable_to_read_hidden_service_name">αδυναμία ανάγνωσης του ονόματος της κρυφής υπηρεσίας</string>
diff --git a/app-mini/src/main/res/values-es-rAR/strings.xml b/app-mini/src/main/res/values-es-rAR/strings.xml
index 4d6dd871..48da7b4f 100644
--- a/app-mini/src/main/res/values-es-rAR/strings.xml
+++ b/app-mini/src/main/res/values-es-rAR/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicación quiere abrir el puerto del servidor oculto %1$s a la red de tor. Esto es seguro si confías en la aplicación</string>
+ <string name="hidden_service_request">Una aplicación quiere abrir el puerto del servidor oculto %1$d a la red de tor. Esto es seguro si confías en la aplicación</string>
<string name="found_existing_tor_process">encontrado el proceso tor existente</string>
<string name="something_bad_happened">algo malo ha ocurrido. verifica el registro.</string>
<string name="unable_to_start_tor">No se puede iniciar Tor:</string>
diff --git a/app-mini/src/main/res/values-es/strings.xml b/app-mini/src/main/res/values-es/strings.xml
index be58295d..5a22f3f0 100644
--- a/app-mini/src/main/res/values-es/strings.xml
+++ b/app-mini/src/main/res/values-es/strings.xml
@@ -95,7 +95,7 @@ direcciones (o rangos). No prevalecen sobre las configuraciones de exclusión de
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicación quiere abrir el puerto %1$s de servidor oculto a la red Tor. Esto es seguro si confía en la aplicación.</string>
+ <string name="hidden_service_request">Una aplicación quiere abrir el puerto %1$d de servidor oculto a la red Tor. Esto es seguro si confía en la aplicación.</string>
<string name="found_existing_tor_process">Se encontró un proceso de Tor ya existente...</string>
<string name="something_bad_happened">Hubo algún tipo de problema. Compruebe el registro (log)</string>
<string name="unable_to_read_hidden_service_name">No fue posible leer el nombre del servicio oculto</string>
diff --git a/app-mini/src/main/res/values-eu/strings.xml b/app-mini/src/main/res/values-eu/strings.xml
index 784d55f3..cf0de00c 100644
--- a/app-mini/src/main/res/values-eu/strings.xml
+++ b/app-mini/src/main/res/values-eu/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Aplikazio batek ezkutuko zerbitzariko %1$s ataka ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara.</string>
+ <string name="hidden_service_request">Aplikazio batek ezkutuko zerbitzariko %1$d ataka ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara.</string>
<string name="found_existing_tor_process">aurreko Tor prozesu bat aurkitu da...</string>
<string name="something_bad_happened">Zerbait txarra gertatu da. Begiratu egunkarian</string>
<string name="unable_to_read_hidden_service_name">ezin izan da ezkutuko zerbitzuaren izena irakurri</string>
diff --git a/app-mini/src/main/res/values-fa/strings.xml b/app-mini/src/main/res/values-fa/strings.xml
index 5549d9a4..6b86539a 100644
--- a/app-mini/src/main/res/values-fa/strings.xml
+++ b/app-mini/src/main/res/values-fa/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy نسخهی 0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">اپلیکیشنی میخواهد پورت سرور %1$s را به شبکه تور بگشاید. در صورتی که به این برنامه اطمینان دارید، چنین کاری امن است.</string>
+ <string name="hidden_service_request">اپلیکیشنی میخواهد پورت سرور %1$d را به شبکه تور بگشاید. در صورتی که به این برنامه اطمینان دارید، چنین کاری امن است.</string>
<string name="found_existing_tor_process">یک تور درحال اجرا پیدا شد...</string>
<string name="something_bad_happened">اتفاق بدی افتاد. وقایع ثبت شده را چک کنید</string>
<string name="unable_to_read_hidden_service_name">ناتوان در خواندن نام سرویس مخفی</string>
diff --git a/app-mini/src/main/res/values-fr/strings.xml b/app-mini/src/main/res/values-fr/strings.xml
index b7864916..b318cf18 100644
--- a/app-mini/src/main/res/values-fr/strings.xml
+++ b/app-mini/src/main/res/values-fr/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9 : https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8 : https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j : http://www.openssl.org</string>
- <string name="hidden_service_request">Une appli veut ouvrir le port %1$s du serveur caché au réseau Tor. Cela est sécuritaire si vous faites confiance à l’appli.</string>
+ <string name="hidden_service_request">Une appli veut ouvrir le port %1$d du serveur caché au réseau Tor. Cela est sécuritaire si vous faites confiance à l’appli.</string>
<string name="found_existing_tor_process">un processus existant de Tor a été trouvé...</string>
<string name="something_bad_happened">Quelque chose n’a pas été. Vérifiez le journal</string>
<string name="unable_to_read_hidden_service_name">impossible de lire le nom du service caché</string>
diff --git a/app-mini/src/main/res/values-gl/strings.xml b/app-mini/src/main/res/values-gl/strings.xml
index 5af10811..040c095b 100644
--- a/app-mini/src/main/res/values-gl/strings.xml
+++ b/app-mini/src/main/res/values-gl/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Unha aplicación quere abrir o porto oculto de servidor %1$s a rede Tor. Esto é seguro se vostede confía na app.</string>
+ <string name="hidden_service_request">Unha aplicación quere abrir o porto oculto de servidor %1$d a rede Tor. Esto é seguro se vostede confía na app.</string>
<string name="found_existing_tor_process">atopado proceso Tor existente...</string>
<string name="something_bad_happened">Algo malo pasou. Comprobe o rexistro</string>
<string name="unable_to_read_hidden_service_name">imposible ler nome de servizo oculto</string>
diff --git a/app-mini/src/main/res/values-hi/strings.xml b/app-mini/src/main/res/values-hi/strings.xml
index 8d683307..c44379b9 100644
--- a/app-mini/src/main/res/values-hi/strings.xml
+++ b/app-mini/src/main/res/values-hi/strings.xml
@@ -95,7 +95,7 @@
<string name="polipo_version">पोलीपो v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">एक ऐप Tor नेटवर्क पर %1$sछिपा सर्वर पोर्ट खोलना चाहता है। यदि आप ऐप पर विश्वास करते हैं, तो यह सुरक्षित है</string>
+ <string name="hidden_service_request">एक ऐप Tor नेटवर्क पर %1$dछिपा सर्वर पोर्ट खोलना चाहता है। यदि आप ऐप पर विश्वास करते हैं, तो यह सुरक्षित है</string>
<string name="found_existing_tor_process">मौजूदा तोर प्रक्रिया पाया ...</string>
<string name="something_bad_happened">कुछ बुरा हो गया। लॉग की जांच करें</string>
<string name="unable_to_read_hidden_service_name">छिपी हुई सेवा का नाम पढ़ने में असमर्थ</string>
diff --git a/app-mini/src/main/res/values-hu/strings.xml b/app-mini/src/main/res/values-hu/strings.xml
index 7fea2a90..0eb6f16d 100644
--- a/app-mini/src/main/res/values-hu/strings.xml
+++ b/app-mini/src/main/res/values-hu/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Egy app egy rejtett szerver portot %1$s nyitna a Tor hálózatra. Ez biztonságos, ha megbízik az appban.</string>
+ <string name="hidden_service_request">Egy app egy rejtett szerver portot %1$d nyitna a Tor hálózatra. Ez biztonságos, ha megbízik az appban.</string>
<string name="found_existing_tor_process">létező Tor folyamat találva...</string>
<string name="something_bad_happened">Valami rossz történt. Nézd meg a naplót.</string>
<string name="unable_to_read_hidden_service_name">nem olvasható a rejtett szolgáltatás neve</string>
diff --git a/app-mini/src/main/res/values-is/strings.xml b/app-mini/src/main/res/values-is/strings.xml
index be6ead32..37de1c93 100644
--- a/app-mini/src/main/res/values-is/strings.xml
+++ b/app-mini/src/main/res/values-is/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Forrit vill opna földu vefgáttina %1$s inn á Tor-netið. Þetta er öruggt ef þú treystir forritinu.</string>
+ <string name="hidden_service_request">Forrit vill opna földu vefgáttina %1$d inn á Tor-netið. Þetta er öruggt ef þú treystir forritinu.</string>
<string name="found_existing_tor_process">fann annað Tor-ferli...</string>
<string name="something_bad_happened">Eitthvað slæmt gerðist. Athugaðu atvikakráninguna</string>
<string name="unable_to_read_hidden_service_name">get ekki lesið heiti földu þjónustunnar</string>
diff --git a/app-mini/src/main/res/values-it/strings.xml b/app-mini/src/main/res/values-it/strings.xml
index d09baf0a..22bec9b2 100644
--- a/app-mini/src/main/res/values-it/strings.xml
+++ b/app-mini/src/main/res/values-it/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Un\'app vuole aprire la porta %1$s del server nascosto alla rete Tor. È un\'azione sicura se ti fidi dell\'app.</string>
+ <string name="hidden_service_request">Un\'app vuole aprire la porta %1$d del server nascosto alla rete Tor. È un\'azione sicura se ti fidi dell\'app.</string>
<string name="found_existing_tor_process">trovato un processo Tor esistente...</string>
<string name="something_bad_happened">E\' accaduto un evento indesiderato. Controllare i log.</string>
<string name="unable_to_read_hidden_service_name">Impossibile leggere il nome del servizio nascosto.</string>
diff --git a/app-mini/src/main/res/values-ja/strings.xml b/app-mini/src/main/res/values-ja/strings.xml
index 9a64bac2..d629ce25 100644
--- a/app-mini/src/main/res/values-ja/strings.xml
+++ b/app-mini/src/main/res/values-ja/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">アプリが非公開サーバーポート %1$s をTorネットワークに開放しようとしています。信頼できるアプリであればこれは安全です。</string>
+ <string name="hidden_service_request">アプリが非公開サーバーポート %1$d をTorネットワークに開放しようとしています。信頼できるアプリであればこれは安全です。</string>
<string name="found_existing_tor_process">Torプロセスを発見</string>
<string name="something_bad_happened">何かが起こりました。ログを確認してください。</string>
<string name="unable_to_read_hidden_service_name">hidden serviceの名前読込不能</string>
diff --git a/app-mini/src/main/res/values-mk/strings.xml b/app-mini/src/main/res/values-mk/strings.xml
index 271f5f7a..93b653d3 100644
--- a/app-mini/src/main/res/values-mk/strings.xml
+++ b/app-mini/src/main/res/values-mk/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Апликација сака да отвори сокриена серверска порта %1$s кон Tor мрежата. Ова е безбедно доколку и верувате на апликацијата.</string>
+ <string name="hidden_service_request">Апликација сака да отвори сокриена серверска порта %1$d кон Tor мрежата. Ова е безбедно доколку и верувате на апликацијата.</string>
<string name="found_existing_tor_process">Пронајден постоечки Tor-процес ...</string>
<string name="something_bad_happened">Се случи грешка. Проверете го дневникот</string>
<string name="unable_to_read_hidden_service_name">не може да се прочита името на скриениот сервис</string>
diff --git a/app-mini/src/main/res/values-nl/strings.xml b/app-mini/src/main/res/values-nl/strings.xml
index f9c88a6f..133a76e7 100644
--- a/app-mini/src/main/res/values-nl/strings.xml
+++ b/app-mini/src/main/res/values-nl/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Een app wil de verborgenserverpoort %1$s tot het Tor-netwerk openen. Dit is veilig als je de app vertrouwt.</string>
+ <string name="hidden_service_request">Een app wil de verborgenserverpoort %1$d tot het Tor-netwerk openen. Dit is veilig als je de app vertrouwt.</string>
<string name="found_existing_tor_process">bestaand Tor-proces gevonden…</string>
<string name="something_bad_happened">Er is een fout opgetreden. Controleer de log</string>
<string name="unable_to_read_hidden_service_name">Kan verborgen dienst-naam niet lezen</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 e7140d4a..287bd8f2 100644
--- a/app-mini/src/main/res/values-pt-rBR/strings.xml
+++ b/app-mini/src/main/res/values-pt-rBR/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Um aplicativo precisa abrir uma porta tipo servidor escondida %1$spara a Rede Tor. Isso é seguro se você confiar nesta aplicação.</string>
+ <string name="hidden_service_request">Um aplicativo precisa abrir uma porta tipo servidor escondida %1$dpara a Rede Tor. Isso é seguro se você confiar nesta aplicação.</string>
<string name="found_existing_tor_process">procurando processos Tor existentes...</string>
<string name="something_bad_happened">Algo ruim aconteceu. Cheque o lo</string>
<string name="unable_to_read_hidden_service_name">habilitar ler o nome do serviço oculto</string>
diff --git a/app-mini/src/main/res/values-ru/strings.xml b/app-mini/src/main/res/values-ru/strings.xml
index 57a05107..b0665bcc 100644
--- a/app-mini/src/main/res/values-ru/strings.xml
+++ b/app-mini/src/main/res/values-ru/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Приложение хочет открыть скрытый порт сервера %1$s сети Tor. Это безопасно, если вы доверяете данному приложению.</string>
+ <string name="hidden_service_request">Приложение хочет открыть скрытый порт сервера %1$d сети Tor. Это безопасно, если вы доверяете данному приложению.</string>
<string name="found_existing_tor_process">найден существующий процесс Tor...</string>
<string name="something_bad_happened">Произошла какая-то ошибка. Проверьте журнал.</string>
<string name="unable_to_read_hidden_service_name">невозможно прочитать имя скрытой службы</string>
diff --git a/app-mini/src/main/res/values-sr/strings.xml b/app-mini/src/main/res/values-sr/strings.xml
index 6a7d0ce0..5e4df835 100644
--- a/app-mini/src/main/res/values-sr/strings.xml
+++ b/app-mini/src/main/res/values-sr/strings.xml
@@ -92,7 +92,7 @@
<string name="tor_version">Toр: https://www.torproject.org</string>
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
- <string name="hidden_service_request">Апликација жели да отвори сакривен порт%1$s на серверу за Тор мрежу. Ово је сигуран потез уколико верујете апликацији.</string>
+ <string name="hidden_service_request">Апликација жели да отвори сакривен порт%1$d на серверу за Тор мрежу. Ово је сигуран потез уколико верујете апликацији.</string>
<string name="found_existing_tor_process">нађен покренути Тор процес...</string>
<string name="something_bad_happened">Нешто лоше се догодило. Прегледајте логове</string>
<string name="unable_to_read_hidden_service_name">нисам у могућности да прочитам име сакривеног сервиса</string>
diff --git a/app-mini/src/main/res/values-sv/strings.xml b/app-mini/src/main/res/values-sv/strings.xml
index 64e40df6..1a034756 100644
--- a/app-mini/src/main/res/values-sv/strings.xml
+++ b/app-mini/src/main/res/values-sv/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">En app vill öppna dold serverport %1$s till Tor-nätverket. Det här är säkert om du litar på appen.</string>
+ <string name="hidden_service_request">En app vill öppna dold serverport %1$d till Tor-nätverket. Det här är säkert om du litar på appen.</string>
<string name="found_existing_tor_process">hittade existerande Tor process...</string>
<string name="something_bad_happened">Något dåligt hände. Kolla loggen.</string>
<string name="unable_to_read_hidden_service_name">kan inte läsa gömda tjänstens namn</string>
diff --git a/app-mini/src/main/res/values-th/strings.xml b/app-mini/src/main/res/values-th/strings.xml
index 4e06787b..78442bc0 100644
--- a/app-mini/src/main/res/values-th/strings.xml
+++ b/app-mini/src/main/res/values-th/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">โปรแกรมต้องการเปิดพอร์ต %1$s ที่ซ่อนอยู่ของเซิร์ฟเวอร์ให้เชื่อมกับเครือข่าย Tor การกระทำนี้ปลอดภัยถ้าคุณเชื่อถือโปรแกรมนั้น</string>
+ <string name="hidden_service_request">โปรแกรมต้องการเปิดพอร์ต %1$d ที่ซ่อนอยู่ของเซิร์ฟเวอร์ให้เชื่อมกับเครือข่าย Tor การกระทำนี้ปลอดภัยถ้าคุณเชื่อถือโปรแกรมนั้น</string>
<string name="found_existing_tor_process">พบกระบวนการ Tor ที่มีอยู่แล้ว...</string>
<string name="something_bad_happened">เกิดอะไรไม่ดีสักอย่าง ให้ตรวจดูจากบันทึก</string>
<string name="unable_to_read_hidden_service_name">ไม่สามารถอ่านชื่อของบริการที่ซ่อน</string>
diff --git a/app-mini/src/main/res/values-tr/strings.xml b/app-mini/src/main/res/values-tr/strings.xml
index 83146a18..803de7c2 100644
--- a/app-mini/src/main/res/values-tr/strings.xml
+++ b/app-mini/src/main/res/values-tr/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Bir uygulama Tor ağına %1$s gizli sunucu kapısını açmak istiyor. Uygulamaya güveniyorsanız bu işlem güvenlidir.</string>
+ <string name="hidden_service_request">Bir uygulama Tor ağına %1$d gizli sunucu kapısını açmak istiyor. Uygulamaya güveniyorsanız bu işlem güvenlidir.</string>
<string name="found_existing_tor_process">varolan bir Tor işlemi bulundu...</string>
<string name="something_bad_happened">Bir şeyler ters gitti. Günlük kayıtlarına bakın</string>
<string name="unable_to_read_hidden_service_name">gizli hizmet adı okunamadı</string>
diff --git a/app-mini/src/main/res/values-uk/strings.xml b/app-mini/src/main/res/values-uk/strings.xml
index 253fa225..98189232 100644
--- a/app-mini/src/main/res/values-uk/strings.xml
+++ b/app-mini/src/main/res/values-uk/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Програма хоче відкрити прихований серверний порт %1$s у мережу Tor. Це безпечно, якщо ви довіряєте застосунку.</string>
+ <string name="hidden_service_request">Програма хоче відкрити прихований серверний порт %1$d у мережу Tor. Це безпечно, якщо ви довіряєте застосунку.</string>
<string name="found_existing_tor_process">знайдено існуючий процес Tor...</string>
<string name="something_bad_happened">Виникла якась помилка. Перевірте лог</string>
<string name="unable_to_read_hidden_service_name">неможливо прочитати ім\'я прихованої служби</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 62bae828..322b8464 100644
--- a/app-mini/src/main/res/values-zh-rTW/strings.xml
+++ b/app-mini/src/main/res/values-zh-rTW/strings.xml
@@ -94,7 +94,7 @@
<string name="polipo_version">Polipo v1.1.9: https://github.com/jech/polipo</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">有一個應用要開啟隱藏的伺服器端口 %1$s 到 Tor 網路,如果信得過此應用才進行此操作</string>
+ <string name="hidden_service_request">有一個應用要開啟隱藏的伺服器端口 %1$d 到 Tor 網路,如果信得過此應用才進行此操作</string>
<string name="found_existing_tor_process">發現已有 Tor 程序運行中 ...</string>
<string name="something_bad_happened">發生錯誤。檢視日誌檔</string>
<string name="unable_to_read_hidden_service_name">無法讀取隱藏服務的名稱</string>
diff --git a/app-mini/src/main/res/values/strings.xml b/app-mini/src/main/res/values/strings.xml
index 4267588b..11128311 100644
--- a/app-mini/src/main/res/values/strings.xml
+++ b/app-mini/src/main/res/values/strings.xml
@@ -102,7 +102,7 @@
<string name="polipo_version">Polipo: https://github.com/jech/polipo</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">An app wants to open onion server port %1$s to the Tor network. This is safe if you trust the app.</string>
+ <string name="hidden_service_request">An app wants to open onion server port %1$d to the Tor network. This is safe if you trust the app.</string>
<string name="found_existing_tor_process">found existing Tor process…</string>
<string name="something_bad_happened">Something bad happened. Check the log</string>
<string name="unable_to_read_hidden_service_name">unable to read onion service name</string>
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 79668887..d6b6daa8 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -675,7 +675,7 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
if (name == null) name = "v3" + v3LocalPort;
final String finalName = name;
new AlertDialog.Builder(this)
- .setMessage(getString(R.string.hidden_service_request, String.valueOf(v3LocalPort)))
+ .setMessage(getString(R.string.hidden_service_request, v3LocalPort))
.setPositiveButton(R.string.allow, (d, w) -> enableV3OnionService(v3LocalPort, v3onionPort, finalName))
.setNegativeButton(R.string.deny, (d, w) -> d.dismiss())
.show();
@@ -689,7 +689,7 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
final Boolean v2authCookie = intent.getBooleanExtra("hs_auth_cookie", false);
final Uri v2KeyUri = intent.getData();
- String v2RequestMsg = getString(R.string.hidden_service_request, String.valueOf(v2hiddenServicePort));
+ String v2RequestMsg = getString(R.string.hidden_service_request, v2hiddenServicePort);
new AlertDialog.Builder(this).setMessage(v2RequestMsg)
.setPositiveButton(R.string.allow, (dialog, which) -> enableHiddenServicePortV2(
v2hiddenServiceName, v2hiddenServicePort,
diff --git a/app/src/main/res/values-ay/strings.xml b/app/src/main/res/values-ay/strings.xml
index 71ec20aa..04c8ca25 100644
--- a/app/src/main/res/values-ay/strings.xml
+++ b/app/src/main/res/values-ay/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Imantat apayañ thakhinak Tor llikar mä wakichäwiw jist\'arañ muni %1$s. Wakichawitix uñt\'atachixa, iyaw sama.</string>
+ <string name="hidden_service_request">Imantat apayañ thakhinak Tor llikar mä wakichäwiw jist\'arañ muni %1$d. Wakichawitix uñt\'atachixa, iyaw sama.</string>
<string name="found_existing_tor_process">Utjir Toraw jikxatata…</string>
<string name="something_bad_happened">Mä jan walt\'äwiw utji. Qillqantayasit uñakipam</string>
<string name="unable_to_read_hidden_service_name">Janiw imantat yanapirin sutiman ullarañjamakänti</string>
diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml
index 03b2c9dd..4791fe1c 100644
--- a/app/src/main/res/values-be/strings.xml
+++ b/app/src/main/res/values-be/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Дадатак хоча адкрыць схаваны порт сервера %1$s сеткі Tor. Гэта бяспечна, калі вы давяраеце дадзенаму дадатку.</string>
+ <string name="hidden_service_request">Дадатак хоча адкрыць схаваны порт сервера %1$d сеткі Tor. Гэта бяспечна, калі вы давяраеце дадзенаму дадатку.</string>
<string name="found_existing_tor_process">знойдзены існавалы працэс Tor…</string>
<string name="something_bad_happened">Адбылася нейкая памылка. Праверце журнал.</string>
<string name="unable_to_read_hidden_service_name">немагчыма прачытаць імя схаванай службы</string>
diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml
index 607cb861..4c6feb6a 100644
--- a/app/src/main/res/values-ca/strings.xml
+++ b/app/src/main/res/values-ca/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicació vol obrir el port de servidor ocults%1$s a la xarxa Tor. Això és segur si confieu en l\'aplicació.</string>
+ <string name="hidden_service_request">Una aplicació vol obrir el port de servidor ocults%1$d a la xarxa Tor. Això és segur si confieu en l\'aplicació.</string>
<string name="found_existing_tor_process">s\'ha trobat un procés Tor existent…</string>
<string name="something_bad_happened">Ha fallat alguna cosa. Comproveu el registre</string>
<string name="unable_to_read_hidden_service_name">ha estat impossible llegir el nom del servei ocult</string>
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index cb2d6016..ce02ae6e 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Eine Anwendung möchte den Versteckten Server-Anschluss %1$s zum Tor-Netz öffnen. Dies ist sicher, wenn Sie der Anwendung vertrauen.</string>
+ <string name="hidden_service_request">Eine Anwendung möchte den Versteckten Server-Anschluss %1$d zum Tor-Netz öffnen. Dies ist sicher, wenn Sie der Anwendung vertrauen.</string>
<string name="found_existing_tor_process">bestehenden Tor-Prozess gefunden …</string>
<string name="something_bad_happened">Etwas ist schief gelaufen. Bitte Protokoll überprüfen</string>
<string name="unable_to_read_hidden_service_name">Name des versteckten Dienstes kann nicht gelesen werden</string>
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index d17e9200..08b608ea 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Κάποια εφαρμογή προσπαθεί να ανοίξει την κρυφή θύρα διακομιστή %1$sστο δίκτυο Tor. Πρόκειται για ασφαλή ενέργεια, εφόσον γνωρίζετε την εφαρμογή.</string>
+ <string name="hidden_service_request">Κάποια εφαρμογή προσπαθεί να ανοίξει την κρυφή θύρα διακομιστή %1$dστο δίκτυο Tor. Πρόκειται για ασφαλή ενέργεια, εφόσον γνωρίζετε την εφαρμογή.</string>
<string name="found_existing_tor_process">αναζήτηση διεργασιών Tor…</string>
<string name="something_bad_happened">Κάτι κακό συνέβη. Ελέγξτε τις καταγραφές</string>
<string name="unable_to_read_hidden_service_name">αδυναμία ανάγνωσης του ονόματος της κρυφής υπηρεσίας</string>
diff --git a/app/src/main/res/values-es-rAR/strings.xml b/app/src/main/res/values-es-rAR/strings.xml
index b3f1e95a..0a7e5346 100644
--- a/app/src/main/res/values-es-rAR/strings.xml
+++ b/app/src/main/res/values-es-rAR/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicación quiere abrir el puerto del servidor oculto %1$s a la red de tor. Esto es seguro si confías en la aplicación</string>
+ <string name="hidden_service_request">Una aplicación quiere abrir el puerto del servidor oculto %1$d a la red de tor. Esto es seguro si confías en la aplicación</string>
<string name="found_existing_tor_process">encontrado el proceso tor existente</string>
<string name="something_bad_happened">algo malo ha ocurrido. verifica el registro.</string>
<string name="unable_to_start_tor">No se puede iniciar Tor:</string>
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 8f46c1e5..f024c4d2 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Una aplicación quiere abrir el puerto %1$s de servidor oculto a la red Tor. Esto es seguro si confía en la aplicación.</string>
+ <string name="hidden_service_request">Una aplicación quiere abrir el puerto %1$d de servidor oculto a la red Tor. Esto es seguro si confía en la aplicación.</string>
<string name="found_existing_tor_process">Se encontró un proceso de Tor ya existente…</string>
<string name="something_bad_happened">Hubo algún tipo de problema. Compruebe el registro (log)</string>
<string name="unable_to_read_hidden_service_name">No fue posible leer el nombre del servicio oculto</string>
diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml
index c423c9e3..35ccaf46 100644
--- a/app/src/main/res/values-eu/strings.xml
+++ b/app/src/main/res/values-eu/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Aplikazio batek ezkutuko zerbitzariko %1$s ataka ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara.</string>
+ <string name="hidden_service_request">Aplikazio batek ezkutuko zerbitzariko %1$d ataka ireki nau du Tor sarera. Segurua da aplikazioaz fidatzen bazara.</string>
<string name="found_existing_tor_process">aurreko Tor prozesu bat aurkitu da…</string>
<string name="something_bad_happened">Zerbait txarra gertatu da. Begiratu egunkarian</string>
<string name="unable_to_read_hidden_service_name">ezin izan da ezkutuko zerbitzuaren izena irakurri</string>
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 21c93880..8ff97f93 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy نسخهی 0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">اپلیکیشنی میخواهد پورت سرور %1$s را به شبکه تور بگشاید. در صورتی که به این برنامه اطمینان دارید، چنین کاری امن است.</string>
+ <string name="hidden_service_request">اپلیکیشنی میخواهد پورت سرور %1$d را به شبکه تور بگشاید. در صورتی که به این برنامه اطمینان دارید، چنین کاری امن است.</string>
<string name="found_existing_tor_process">یک تور درحال اجرا پیدا شد…</string>
<string name="something_bad_happened">اتفاق بدی افتاد. وقایع ثبت شده را چک کنید</string>
<string name="unable_to_read_hidden_service_name">ناتوان در خواندن نام سرویس مخفی</string>
diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml
index 6b305bec..3fc51740 100644
--- a/app/src/main/res/values-fi/strings.xml
+++ b/app/src/main/res/values-fi/strings.xml
@@ -127,7 +127,7 @@
<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="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>
+ <string name="hidden_service_request">Sovellus haluaa avata sipulipalvelimen portin %1$d Tor-verkkoon. Tämä on turvallista, jos luotat sovellukseen.</string>
<string name="pref_http_title">Tori HTTP</string>
<string name="pref_http_summary">Portti, jossa Tor tarjoaa HTTP-välityspalvelimen (oletus: 8118 tai 0 poistaa käytöstä)</string>
<string name="pref_http_dialog">HTTP-portin määritys</string>
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index ce1515f4..ded7bbd1 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -121,7 +121,7 @@
<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="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 serveur onion sur le port %1$s au réseau Tor. Cette action est sûre si vous faites confiance à cette appli.</string>
+ <string name="hidden_service_request">Une appli veut ouvrir le serveur onion sur le port %1$d au réseau Tor. Cette action est sûre si vous faites confiance à cette appli.</string>
<string name="pref_open_proxy_on_all_interfaces_title">Ouvrir le mandataire sur toutes les interfaces</string>
<string name="pref_open_proxy_on_all_interfaces_summary">Autoriser l’accès à Tor aux pairs Wi-Fi, aux appareils qui utilisent la fonction modem et à quiconque peut se connecter à votre IP</string>
<string name="pref_http_title">HTTP Tor</string>
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 61b8c708..3d376bb3 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21 : http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8 : https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j : http://www.openssl.org</string>
- <string name="hidden_service_request">Une appli veut ouvrir le port %1$s du serveur caché au réseau Tor. Cela est sécuritaire si vous faites confiance à l’appli.</string>
+ <string name="hidden_service_request">Une appli veut ouvrir le port %1$d du serveur caché au réseau Tor. Cela est sécuritaire si vous faites confiance à l’appli.</string>
<string name="found_existing_tor_process">un processus existant de Tor a été trouvé…</string>
<string name="something_bad_happened">Quelque chose n’a pas été. Vérifiez le journal</string>
<string name="unable_to_read_hidden_service_name">impossible de lire le nom du service caché</string>
diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml
index 2be73e6d..6f135252 100644
--- a/app/src/main/res/values-gl/strings.xml
+++ b/app/src/main/res/values-gl/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Unha aplicación quere abrir o porto oculto de servidor %1$s a rede Tor. Esto é seguro se vostede confía na app.</string>
+ <string name="hidden_service_request">Unha aplicación quere abrir o porto oculto de servidor %1$d a rede Tor. Esto é seguro se vostede confía na app.</string>
<string name="found_existing_tor_process">atopado proceso Tor existente…</string>
<string name="something_bad_happened">Algo malo pasou. Comprobe o rexistro</string>
<string name="unable_to_read_hidden_service_name">imposible ler nome de servizo oculto</string>
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index ab88c619..84e33502 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -90,7 +90,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">एक ऐप Tor नेटवर्क पर %1$sछिपा सर्वर पोर्ट खोलना चाहता है। यदि आप ऐप पर विश्वास करते हैं, तो यह सुरक्षित है</string>
+ <string name="hidden_service_request">एक ऐप Tor नेटवर्क पर %1$dछिपा सर्वर पोर्ट खोलना चाहता है। यदि आप ऐप पर विश्वास करते हैं, तो यह सुरक्षित है</string>
<string name="found_existing_tor_process">मौजूदा तोर प्रक्रिया पाया …</string>
<string name="something_bad_happened">कुछ बुरा हो गया। लॉग की जांच करें</string>
<string name="unable_to_read_hidden_service_name">छिपी हुई सेवा का नाम पढ़ने में असमर्थ</string>
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index a3ca7c0d..d26e0456 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Egy app egy rejtett szerver portot %1$s nyitna a Tor hálózatra. Ez biztonságos, ha megbízik az appban.</string>
+ <string name="hidden_service_request">Egy app egy rejtett szerver portot %1$d nyitna a Tor hálózatra. Ez biztonságos, ha megbízik az appban.</string>
<string name="found_existing_tor_process">létező Tor folyamat találva…</string>
<string name="something_bad_happened">Valami rossz történt. Nézd meg a naplót.</string>
<string name="unable_to_read_hidden_service_name">nem olvasható a rejtett szolgáltatás neve</string>
diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml
index 5930de5d..da866d6b 100644
--- a/app/src/main/res/values-is/strings.xml
+++ b/app/src/main/res/values-is/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Forrit vill opna onion-netþjón á gáttinni %1$s inn á Tor-netið. Þetta er öruggt ef þú treystir forritinu.</string>
+ <string name="hidden_service_request">Forrit vill opna onion-netþjón á gáttinni %1$d inn á Tor-netið. Þetta er öruggt ef þú treystir forritinu.</string>
<string name="found_existing_tor_process">fann annað Tor-ferli…</string>
<string name="something_bad_happened">Eitthvað slæmt gerðist. Athugaðu atvikakráninguna</string>
<string name="unable_to_read_hidden_service_name">get ekki lesið heiti földu þjónustunnar</string>
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 8193a110..cae2c4fa 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Un\'app vuole aprire la porta %1$s del server nascosto alla rete Tor. È un\'azione sicura se ti fidi dell\'app.</string>
+ <string name="hidden_service_request">Un\'app vuole aprire la porta %1$d del server nascosto alla rete Tor. È un\'azione sicura se ti fidi dell\'app.</string>
<string name="found_existing_tor_process">trovato un processo Tor esistente…</string>
<string name="something_bad_happened">E\' accaduto un evento indesiderato. Controllare i log</string>
<string name="unable_to_read_hidden_service_name">Impossibile leggere il nome del servizio onion</string>
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 10c86ee0..2cf761b9 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">アプリが非公開サーバーポート %1$s をTorネットワークに開放しようとしています。信頼できるアプリであればこれは安全です。</string>
+ <string name="hidden_service_request">アプリが非公開サーバーポート %1$d をTorネットワークに開放しようとしています。信頼できるアプリであればこれは安全です。</string>
<string name="found_existing_tor_process">Torプロセスを発見</string>
<string name="something_bad_happened">何かが起こりました。ログを確認してください。</string>
<string name="unable_to_read_hidden_service_name">hidden serviceの名前読込不能</string>
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index e1d0fc21..e4c4e643 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Апликација сака да отвори сокриена серверска порта %1$s кон Tor мрежата. Ова е безбедно доколку и верувате на апликацијата.</string>
+ <string name="hidden_service_request">Апликација сака да отвори сокриена серверска порта %1$d кон Tor мрежата. Ова е безбедно доколку и верувате на апликацијата.</string>
<string name="found_existing_tor_process">Пронајден постоечки Tor-процес …</string>
<string name="something_bad_happened">Се случи грешка. Проверете го дневникот</string>
<string name="unable_to_read_hidden_service_name">не може да се прочита името на скриениот сервис</string>
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index 567d1c13..6356db3a 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -152,7 +152,7 @@
<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="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="hidden_service_request">Et program ønsker å åpne løktjenerport %1$d 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>
<string name="menu_new_identity">Ny identitet</string>
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index 509a2003..f1ddfbe7 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Een app wil de verborgenserverpoort %1$s tot het Tor-netwerk openen. Dit is veilig als je de app vertrouwt.</string>
+ <string name="hidden_service_request">Een app wil de verborgenserverpoort %1$d tot het Tor-netwerk openen. Dit is veilig als je de app vertrouwt.</string>
<string name="found_existing_tor_process">bestaand Tor-proces gevonden…</string>
<string name="something_bad_happened">Er is een fout opgetreden. Controleer de log</string>
<string name="unable_to_read_hidden_service_name">Kan verborgen dienst-naam niet lezen</string>
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 299f7f6f..f8d686a3 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -152,7 +152,7 @@
<string name="backup_restored">Przywrócono kopię zapasową</string>
<string name="backup_saved_at_external_storage">Kopia zapasowa zapisywana w pamięci zewnętrznej</string>
<string name="backup_service">Usługa tworzenia kopii zapasowych</string>
- <string name="hidden_service_request">Aplikacja chce otworzyć port serwera cebulowego %1$s do sieci Tor. Jest to bezpieczne, jeśli zaufasz aplikacji.</string>
+ <string name="hidden_service_request">Aplikacja chce otworzyć port serwera cebulowego %1$d do sieci Tor. Jest to bezpieczne, jeśli zaufasz aplikacji.</string>
<string name="client_cookies">Klient cookies</string>
<string name="auth_cookie">Autoryzacja cookie</string>
<string name="show_auth_cookie">Pokaż autoryzację cookie</string>
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index b5af88be..7a0ce2d6 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Um aplicativo quer abrir uma porta no servidor onion %1$s para a rede Tor. É seguro caso você confie neste aplicativo.</string>
+ <string name="hidden_service_request">Um aplicativo quer abrir uma porta no servidor onion %1$d para a rede Tor. É seguro caso você confie neste aplicativo.</string>
<string name="found_existing_tor_process">processos Tor existentes foram encontrados…</string>
<string name="something_bad_happened">Algo ruim aconteceu. Verifique o registro de log</string>
<string name="unable_to_read_hidden_service_name">incapaz de ler o nome do serviço onion</string>
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index e0221764..8eb9aee7 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -163,7 +163,7 @@
<string name="pref_disable_network_title">Sem Rede, Modo de Latência Automática</string>
<string name="pref_use_expanded_notifications">Mostrar as notificação expandida com o Tor, país de saída e o IP</string>
<string name="pref_use_persistent_notifications">Mantenha sempre um ícone na barra de ferramentas quando o Orbot estiver conectado</string>
- <string name="hidden_service_request">Uma aplicação quer abrir uma porta do servidor onion %1$s para a rede Tor. É seguro caso confie nesta aplicação.</string>
+ <string name="hidden_service_request">Uma aplicação quer abrir uma porta do servidor onion %1$d para a rede Tor. É seguro caso confie nesta aplicação.</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Ativar os registos de depuração para saída (deve usar adb ou aLogCat para ver)</string>
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 4d497c77..3ffa1416 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -153,7 +153,7 @@
<string name="pref_disable_network_title">Sem Rede, Modo de Latência Automática</string>
<string name="pref_use_expanded_notifications">Mostrar as notificação expandida com o Tor, país de saída e o IP</string>
<string name="pref_use_persistent_notifications">Mantenha sempre um ícone na barra de ferramentas quando o Orbot estiver conectado</string>
- <string name="hidden_service_request">Uma app quer abrir uma porta do servidor onion %1$s para a rede Tor. É seguro caso confie nesta app.</string>
+ <string name="hidden_service_request">Uma app quer abrir uma porta do servidor onion %1$d para a rede Tor. É seguro caso confie nesta app.</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="enable_debug_log_to_output_must_use_adb_or_alogcat_to_view_">Ativar os registos de depuração para saída (deve usar adb ou aLogCat para ver)</string>
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index f1b8469e..2b712352 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Приложение хочет открыть скрытый порт сервера %1$s сети Tor. Это безопасно, если вы доверяете данному приложению.</string>
+ <string name="hidden_service_request">Приложение хочет открыть скрытый порт сервера %1$d сети Tor. Это безопасно, если вы доверяете данному приложению.</string>
<string name="found_existing_tor_process">найден существующий процесс Tor…</string>
<string name="something_bad_happened">Произошла какая-то ошибка. Проверьте журнал.</string>
<string name="unable_to_read_hidden_service_name">невозможно прочитать имя скрытой службы</string>
diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml
index 580458fc..52157f97 100644
--- a/app/src/main/res/values-sr/strings.xml
+++ b/app/src/main/res/values-sr/strings.xml
@@ -87,7 +87,7 @@
<string name="third_party_software">Софтвер од стране неслужбених издавача:</string>
<string name="tor_version">Toр: https://www.torproject.org</string>
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
- <string name="hidden_service_request">Апликација жели да отвори сакривен порт%1$s на серверу за Тор мрежу. Ово је сигуран потез уколико верујете апликацији.</string>
+ <string name="hidden_service_request">Апликација жели да отвори сакривен порт%1$d на серверу за Тор мрежу. Ово је сигуран потез уколико верујете апликацији.</string>
<string name="found_existing_tor_process">нађен покренути Тор процес…</string>
<string name="something_bad_happened">Нешто лоше се догодило. Прегледајте логове</string>
<string name="unable_to_read_hidden_service_name">нисам у могућности да прочитам име сакривеног сервиса</string>
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index d4ed952d..02ce16f4 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">En app vill öppna dold serverport %1$s till Tor-nätverket. Det här är säkert om du litar på appen.</string>
+ <string name="hidden_service_request">En app vill öppna dold serverport %1$d till Tor-nätverket. Det här är säkert om du litar på appen.</string>
<string name="found_existing_tor_process">hittade existerande Tor process…</string>
<string name="something_bad_happened">Något dåligt hände. Kolla loggen</string>
<string name="unable_to_read_hidden_service_name">kan inte läsa gömda tjänstens namn</string>
diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml
index 7de29016..b54cc82e 100644
--- a/app/src/main/res/values-th/strings.xml
+++ b/app/src/main/res/values-th/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">โปรแกรมต้องการเปิดพอร์ต %1$s ที่ซ่อนอยู่ของเซิร์ฟเวอร์ให้เชื่อมกับเครือข่าย Tor การกระทำนี้ปลอดภัยถ้าคุณเชื่อถือโปรแกรมนั้น</string>
+ <string name="hidden_service_request">โปรแกรมต้องการเปิดพอร์ต %1$d ที่ซ่อนอยู่ของเซิร์ฟเวอร์ให้เชื่อมกับเครือข่าย Tor การกระทำนี้ปลอดภัยถ้าคุณเชื่อถือโปรแกรมนั้น</string>
<string name="found_existing_tor_process">พบกระบวนการ Tor ที่มีอยู่แล้ว…</string>
<string name="something_bad_happened">เกิดอะไรไม่ดีสักอย่าง ให้ตรวจดูจากบันทึก</string>
<string name="unable_to_read_hidden_service_name">ไม่สามารถอ่านชื่อของบริการที่ซ่อน</string>
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 16f288af..00448b24 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Bir uygulama %1$s numaralı bağlantı noktasındaki onion sunucusunu Tor ağına açmak istiyor. Uygulamaya güveniyorsanız bu güvenlidir.</string>
+ <string name="hidden_service_request">Bir uygulama %1$d numaralı bağlantı noktasındaki onion sunucusunu Tor ağına açmak istiyor. Uygulamaya güveniyorsanız bu güvenlidir.</string>
<string name="found_existing_tor_process">varolan bir Tor işlemi bulundu…</string>
<string name="something_bad_happened">Bir şeyler ters gitti. Günlük kayıtlarına bakın</string>
<string name="unable_to_read_hidden_service_name">gizli hizmet adı okunamadı</string>
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index 407706c2..241ddaed 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">Програма хоче відкрити прихований сервер на порту %1$s у мережу Tor. Це безпечно, якщо ви довіряєте застосунку.</string>
+ <string name="hidden_service_request">Програма хоче відкрити прихований сервер на порту %1$d у мережу Tor. Це безпечно, якщо ви довіряєте застосунку.</string>
<string name="found_existing_tor_process">знайдено наявний процес Tor…</string>
<string name="something_bad_happened">Виникла якась помилка. Перевірте лог</string>
<string name="unable_to_read_hidden_service_name">неможливо прочитати ім\'я прихованої служби</string>
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 27f07983..77153306 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -181,7 +181,7 @@
<string name="menu_hidden_services">洋葱服务</string>
<string name="title_activity_hidden_services">洋葱服务</string>
<string name="hidden_services">洋葱服务</string>
- <string name="hidden_service_request">一个应用程序想要在端口%1$s上打开到 Tor 网络的洋葱服务器。如果你信任这个应用程序,这是安全的。</string>
+ <string name="hidden_service_request">一个应用程序想要在端口%1$d上打开到 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 5b047569..312a1f54 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -89,7 +89,7 @@
<string name="libevent_version">LibEvent v2.0.21: http://www.monkey.org/~provos/libevent/</string>
<string name="obfsproxy_version">Obfs4proxy v0.0.8: https://github.com/Yawning/obfs4</string>
<string name="openssl_version">OpenSSL v1.0.2j: http://www.openssl.org</string>
- <string name="hidden_service_request">有一個應用要開啟隱藏的伺服器端口 %1$s 到 Tor 網路,如果信得過此應用才進行此操作</string>
+ <string name="hidden_service_request">有一個應用要開啟隱藏的伺服器端口 %1$d 到 Tor 網路,如果信得過此應用才進行此操作</string>
<string name="found_existing_tor_process">發現已有 Tor 程序運行中 …</string>
<string name="something_bad_happened">發生錯誤。檢視日誌檔</string>
<string name="unable_to_read_hidden_service_name">無法讀取隱藏服務的名稱</string>
1
0
22 Dec '21
commit f738497736188578a0b746eb35d843d0bb3f9b30
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Fri Dec 13 22:34:47 2019 +0100
use new jtorctl constants for Tor signal names
Tor now prefers its own names, rather than the POSIX names, e.g. SHUTDOWN
rather than HALT or RELOAD instead of HUP.
---
.../org/torproject/android/mini/MiniMainActivity.java | 5 +++--
.../java/org/torproject/android/OrbotMainActivity.java | 3 ++-
.../android/ui/onboarding/CustomBridgesActivity.java | 4 +++-
.../torproject/android/ui/onboarding/MoatActivity.java | 6 ++++--
.../org/torproject/android/service/OrbotService.java | 18 +++++++++---------
.../android/service/TorServiceConstants.java | 2 --
6 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/app-mini/src/main/java/org/torproject/android/mini/MiniMainActivity.java b/app-mini/src/main/java/org/torproject/android/mini/MiniMainActivity.java
index 26b17fdf..34d3d10d 100644
--- a/app-mini/src/main/java/org/torproject/android/mini/MiniMainActivity.java
+++ b/app-mini/src/main/java/org/torproject/android/mini/MiniMainActivity.java
@@ -50,6 +50,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
+import net.freehaven.tor.control.TorControlCommands;
import org.json.JSONArray;
import org.torproject.android.core.Languages;
import org.torproject.android.core.LocaleHelper;
@@ -680,7 +681,7 @@ public class MiniMainActivity extends AppCompatActivity implements OrbotConstant
}
private void requestTorRereadConfig() {
- sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
+ sendIntentToService(TorControlCommands.SIGNAL_RELOAD);
}
@Override
@@ -875,7 +876,7 @@ public class MiniMainActivity extends AppCompatActivity implements OrbotConstant
}
private void requestNewTorIdentity() {
- sendIntentToService(TorServiceConstants.CMD_NEWNYM);
+ sendIntentToService(TorControlCommands.SIGNAL_NEWNYM);
Rotate3dAnimation rotation = new Rotate3dAnimation(ROTATE_FROM, ROTATE_TO, imgStatus.getWidth() / 2f, imgStatus.getWidth() / 2f, 20f, false);
rotation.setFillAfter(true);
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index d6b6daa8..0bb5be44 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -41,6 +41,7 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
+import net.freehaven.tor.control.TorControlCommands;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SwitchCompat;
@@ -832,7 +833,7 @@ public class OrbotMainActivity extends AppCompatActivity implements OrbotConstan
}
private void requestTorRereadConfig() {
- sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
+ sendIntentToService(TorControlCommands.SIGNAL_RELOAD);
}
@Override
diff --git a/app/src/main/java/org/torproject/android/ui/onboarding/CustomBridgesActivity.java b/app/src/main/java/org/torproject/android/ui/onboarding/CustomBridgesActivity.java
index f20ba4ff..9b668413 100644
--- a/app/src/main/java/org/torproject/android/ui/onboarding/CustomBridgesActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/onboarding/CustomBridgesActivity.java
@@ -26,6 +26,8 @@ import androidx.appcompat.widget.Toolbar;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
+import net.freehaven.tor.control.TorControlCommands;
+
import org.json.JSONArray;
import org.torproject.android.R;
import org.torproject.android.core.ClipboardUtils;
@@ -191,7 +193,7 @@ public class CustomBridgesActivity extends AppCompatActivity implements TextWatc
Prefs.putBridgesEnabled(bridges != null);
Intent intent = new Intent(this, OrbotService.class);
- intent.setAction(TorServiceConstants.CMD_SIGNAL_HUP);
+ intent.setAction(TorControlCommands.SIGNAL_RELOAD);
startService(intent);
}
diff --git a/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java b/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java
index 2bb0807e..165b1a63 100644
--- a/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/onboarding/MoatActivity.java
@@ -40,6 +40,8 @@ import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
+import net.freehaven.tor.control.TorControlCommands;
+
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -328,7 +330,7 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe
Prefs.setBridgesList(sb.toString());
Prefs.putBridgesEnabled(true);
- sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
+ sendIntentToService(TorControlCommands.SIGNAL_RELOAD);
mSuccess = true;
setResult(RESULT_OK);
@@ -422,7 +424,7 @@ public class MoatActivity extends AppCompatActivity implements View.OnClickListe
// mQueue = Volley.newRequestQueue(this, new ProxiedHurlStack(host, port));
- sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
+ sendIntentToService(TorControlCommands.SIGNAL_RELOAD);
if (mCaptcha == null) {
fetchCaptcha();
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 396881d3..844da292 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/OrbotService.java
@@ -235,7 +235,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
mNotifyBuilder.mActions.clear(); // clear out NEWNYM action
if (conn != null) { // only add new identity action when there is a connection
- Intent intentRefresh = new Intent(CMD_NEWNYM);
+ Intent intentRefresh = new Intent(TorControlCommands.SIGNAL_NEWNYM);
PendingIntent pendingIntentNewNym = PendingIntent.getBroadcast(this, 0, intentRefresh, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.addAction(R.drawable.ic_refresh_white_24dp, getString(R.string.menu_new_identity), pendingIntentNewNym);
}
@@ -421,7 +421,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
try {
logNotice("sending HALT signal to Tor process");
- conn.shutdownTor("SHUTDOWN");
+ conn.shutdownTor(TorControlCommands.SIGNAL_SHUTDOWN);
} catch (IOException e) {
Log.d(OrbotConstants.TAG, "error shutting down Tor via connection", e);
@@ -448,9 +448,9 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private void requestTorRereadConfig() {
try {
- if (conn != null)
- conn.signal("HUP");
-
+ if (conn != null) {
+ conn.signal(TorControlCommands.SIGNAL_RELOAD);
+ }
} catch (IOException e) {
e.printStackTrace();
}
@@ -507,7 +507,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
// registerReceiver(mNetworkStateReceiver , mNetworkStateFilter);
IntentFilter filter = new IntentFilter();
- filter.addAction(CMD_NEWNYM);
+ filter.addAction(TorControlCommands.SIGNAL_NEWNYM);
filter.addAction(CMD_ACTIVE);
mActionBroadcastReceiver = new ActionBroadcastReceiver();
registerReceiver(mActionBroadcastReceiver, filter);
@@ -1588,9 +1588,9 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
mVpnManager.handleIntent(new Builder(), mIntent);
} else if (action.equals(ACTION_STATUS)) {
replyWithStatus(mIntent);
- } else if (action.equals(CMD_SIGNAL_HUP)) {
+ } else if (action.equals(TorControlCommands.SIGNAL_RELOAD)) {
requestTorRereadConfig();
- } else if (action.equals(CMD_NEWNYM)) {
+ } else if (action.equals(TorControlCommands.SIGNAL_NEWNYM)) {
newIdentity();
} else if (action.equals(CMD_ACTIVE)) {
sendSignalActive();
@@ -1606,7 +1606,7 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
private class ActionBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
- case CMD_NEWNYM: {
+ case TorControlCommands.SIGNAL_NEWNYM: {
newIdentity();
break;
}
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 d2dc4877..d2a71788 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorServiceConstants.java
@@ -93,8 +93,6 @@ public interface TorServiceConstants {
String STATUS_STARTS_DISABLED = "STARTS_DISABLED";
// actions for internal command Intents
- String CMD_SIGNAL_HUP = "signal_hup";
- String CMD_NEWNYM = "newnym";
String CMD_SET_EXIT = "setexit";
String CMD_ACTIVE = "ACTIVE";
1
0
22 Dec '21
commit aa643f4aa42eb300da9dbb36862af0713281556a
Merge: 4a8c8f75 c90c51aa
Author: Nathan Freitas <nathan(a)guardianproject.info>
Date: Wed May 5 09:24:38 2021 -0400
Merge pull request #456 from eighthave/lint-fixes
Lint fixes
.gitlab-ci.yml | 2 +-
app-mini/src/main/res/values-ay/strings.xml | 2 +-
app-mini/src/main/res/values-be/strings.xml | 2 +-
app-mini/src/main/res/values-ca/strings.xml | 2 +-
app-mini/src/main/res/values-de/strings.xml | 2 +-
app-mini/src/main/res/values-el/strings.xml | 2 +-
app-mini/src/main/res/values-es-rAR/strings.xml | 2 +-
app-mini/src/main/res/values-es/strings.xml | 2 +-
app-mini/src/main/res/values-eu/strings.xml | 2 +-
app-mini/src/main/res/values-fa/strings.xml | 2 +-
app-mini/src/main/res/values-fr/strings.xml | 2 +-
app-mini/src/main/res/values-gl/strings.xml | 2 +-
app-mini/src/main/res/values-he/strings.xml | 184 --------------------
app-mini/src/main/res/values-hi/strings.xml | 2 +-
app-mini/src/main/res/values-hu/strings.xml | 2 +-
app-mini/src/main/res/values-id/strings.xml | 131 --------------
app-mini/src/main/res/values-in-rID/strings.xml | 126 --------------
.../{values-in-rID => values-in}/poestrings.xml | 0
app-mini/src/main/res/values-in/strings.xml | 125 ++++++++++++--
app-mini/src/main/res/values-is/strings.xml | 2 +-
app-mini/src/main/res/values-it/strings.xml | 2 +-
app-mini/src/main/res/values-ja/strings.xml | 2 +-
app-mini/src/main/res/values-mk/strings.xml | 2 +-
app-mini/src/main/res/values-nb/strings.xml | 4 +-
app-mini/src/main/res/values-nl/strings.xml | 2 +-
app-mini/src/main/res/values-pt-rBR/strings.xml | 2 +-
app-mini/src/main/res/values-ru/strings.xml | 2 +-
app-mini/src/main/res/values-sr/strings.xml | 2 +-
app-mini/src/main/res/values-sv/strings.xml | 2 +-
app-mini/src/main/res/values-th/strings.xml | 2 +-
app-mini/src/main/res/values-tr/strings.xml | 2 +-
app-mini/src/main/res/values-uk/strings.xml | 2 +-
app-mini/src/main/res/values-zh-rTW/strings.xml | 2 +-
app-mini/src/main/res/values/strings.xml | 2 +-
.../org/torproject/android/OrbotMainActivity.java | 4 +-
app/src/main/res/values-ay/strings.xml | 2 +-
app/src/main/res/values-be/strings.xml | 2 +-
app/src/main/res/values-ca/strings.xml | 2 +-
app/src/main/res/values-de/strings.xml | 2 +-
app/src/main/res/values-el/strings.xml | 2 +-
app/src/main/res/values-es-rAR/strings.xml | 2 +-
app/src/main/res/values-es/strings.xml | 2 +-
app/src/main/res/values-eu/strings.xml | 2 +-
app/src/main/res/values-fa/strings.xml | 2 +-
app/src/main/res/values-fi/strings.xml | 2 +-
app/src/main/res/values-fr-rFR/strings.xml | 2 +-
app/src/main/res/values-fr/strings.xml | 2 +-
app/src/main/res/values-gl/strings.xml | 2 +-
app/src/main/res/values-he/strings.xml | 190 ---------------------
app/src/main/res/values-hi/strings.xml | 2 +-
app/src/main/res/values-hu/strings.xml | 2 +-
app/src/main/res/values-id/strings.xml | 124 --------------
app/src/main/res/values-in-rID/strings.xml | 119 -------------
.../{values-in-rID => values-in}/poestrings.xml | 0
app/src/main/res/values-in/strings.xml | 120 +++++++++++--
app/src/main/res/values-is/strings.xml | 2 +-
app/src/main/res/values-it/strings.xml | 2 +-
app/src/main/res/values-ja/strings.xml | 2 +-
app/src/main/res/values-mk/strings.xml | 2 +-
app/src/main/res/values-nb/strings.xml | 4 +-
app/src/main/res/values-nl/strings.xml | 2 +-
app/src/main/res/values-pl/strings.xml | 2 +-
app/src/main/res/values-pt-rBR/strings.xml | 2 +-
app/src/main/res/values-pt-rPT/strings.xml | 2 +-
app/src/main/res/values-pt/strings.xml | 2 +-
app/src/main/res/values-ru/strings.xml | 2 +-
app/src/main/res/values-sr/strings.xml | 2 +-
app/src/main/res/values-sv/strings.xml | 2 +-
app/src/main/res/values-th/strings.xml | 2 +-
app/src/main/res/values-tr/strings.xml | 2 +-
app/src/main/res/values-uk/strings.xml | 2 +-
app/src/main/res/values-zh-rCN/strings.xml | 2 +-
app/src/main/res/values-zh-rTW/strings.xml | 2 +-
gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 59203 bytes
gradle/wrapper/gradle-wrapper.properties | 6 +-
gradlew | 2 +-
gradlew.bat | 21 +--
lint.xml | 8 +-
orbotservice/src/main/res/values-he/strings.xml | 23 ---
orbotservice/src/main/res/values-id/strings.xml | 26 ---
.../src/main/res/values-in-rID/strings.xml | 26 ---
orbotservice/src/main/res/values-in/strings.xml | 20 ++-
82 files changed, 311 insertions(+), 1072 deletions(-)
1
0
commit c90c51aa5786071b71399f6ff933306930ed1583
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Tue May 4 10:41:03 2021 +0200
gitlab-ci: quiet unzip output
---
.gitlab-ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5885626b..b3095a87 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,7 +9,7 @@ before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOL…
- - unzip -d android-sdk-linux android-sdk.zip
+ - unzip -qq -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
1
0
commit 40c3da9d9a5e8546aeb559e74e989545b2f85a68
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Fri Dec 13 15:20:33 2019 +0100
use tor-android and jtorctl v0.4.5.7
---
orbotservice/build.gradle | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/orbotservice/build.gradle b/orbotservice/build.gradle
index 65b6d6b2..165c4d07 100644
--- a/orbotservice/build.gradle
+++ b/orbotservice/build.gradle
@@ -66,7 +66,8 @@ dependencies {
implementation 'info.guardianproject:geoip:20191217'
- api 'info.guardianproject:jtorctl:0.4'
+ api 'info.guardianproject:jtorctl:0.4.5.7'
+ implementation 'info.guardianproject:tor-android:0.4.5.7'
implementation 'com.github.tladesignz:IPtProxy:0.5.2'
}
1
0
[orbot/master] start migration away from jcenter and gpmaven repos
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit a6cd5b00e9404617c7803a2988f8c71fa202e7fd
Author: Hans-Christoph Steiner <hans(a)eds.org>
Date: Tue May 4 14:39:46 2021 +0200
start migration away from jcenter and gpmaven repos
This enables Maven Central and allows jcenter and gpmaven only for libs
that are only on those repos. Ultimately, those libs will have to be moved
to Maven Central or replaced.
---
app-mini/build.gradle | 8 ++++++++
app/build.gradle | 11 ++++++++++-
build.gradle | 18 +++++++++++++++---
orbotservice/build.gradle | 4 ----
4 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/app-mini/build.gradle b/app-mini/build.gradle
index 5617f1a0..0b60ccb1 100644
--- a/app-mini/build.gradle
+++ b/app-mini/build.gradle
@@ -104,6 +104,14 @@ android {
}
}
+repositories {
+ jcenter {
+ content {
+ includeGroup('com.jraska')
+ includeGroup('tools.fastlane')
+ }
+ }
+}
dependencies {
implementation project(':orbotservice')
diff --git a/app/build.gradle b/app/build.gradle
index 8d5e3ea7..823c119e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -116,6 +116,15 @@ android {
}
}
+repositories {
+ jcenter {
+ content {
+ includeGroup('com.jraska')
+ includeGroup('tools.fastlane')
+ }
+ }
+}
+
dependencies {
implementation project(':orbotservice')
implementation 'com.google.android.material:material:1.2.1'
@@ -125,7 +134,7 @@ dependencies {
implementation project(path: ':intentintegrator')
androidTestImplementation "tools.fastlane:screengrab:1.2.0"
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
- implementation 'com.android.volley:volley:1.1.1'
+ implementation 'com.android.volley:volley:1.2.0'
implementation 'com.github.tladesignz:IPtProxy:0.5.2'
}
diff --git a/build.gradle b/build.gradle
index 642dd701..e840c979 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,8 +4,15 @@ buildscript {
kotlin_version = '1.4.21'
}
repositories {
- jcenter()
+ mavenCentral()
google()
+ maven { url 'https://jitpack.io' }
+ maven {
+ url "https://raw.githubusercontent.com/guardianproject/gpmaven/master"
+ content {
+ includeGroup('info.pluggabletransports.aptds')
+ }
+ }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0-rc01'
@@ -15,9 +22,14 @@ buildscript {
allprojects {
repositories {
+ mavenCentral()
google()
- jcenter()
- maven { url "https://raw.githubusercontent.com/guardianproject/gpmaven/master" }
maven { url 'https://jitpack.io' }
+ maven {
+ url "https://raw.githubusercontent.com/guardianproject/gpmaven/master"
+ content {
+ includeGroup('info.pluggabletransports.aptds')
+ }
+ }
}
}
diff --git a/orbotservice/build.gradle b/orbotservice/build.gradle
index 165c4d07..c2704caa 100644
--- a/orbotservice/build.gradle
+++ b/orbotservice/build.gradle
@@ -49,10 +49,6 @@ android {
dependencies {
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
- /**
- implementation 'info.pluggabletransports.aptds:apt-dispatch-library:1.0.9'
- implementation 'info.pluggabletransports.aptds:apt-meek-obfs4-legacy:1.0.9'
- **/
implementation 'info.pluggabletransports.aptds:jsocksAndroid:1.0.4'
implementation 'com.jaredrummler:android-shell:1.0.0'
1
0
[orbot/master] Merge branch 'master' of https://github.com/eighthave/orbot into eighthave-master
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit dd7152e95579a5ebe447b06e939acda288de93b7
Merge: aa643f4a 40c3da9d
Author: n8fr8 <nathan(a)guardianproject.info>
Date: Wed May 5 09:25:12 2021 -0400
Merge branch 'master' of https://github.com/eighthave/orbot into eighthave-master
.gitmodules | 4 -
app-mini/build.gradle | 2 +-
app-mini/src/main/assets/common/geoip | 0
app-mini/src/main/assets/common/geoip6 | 0
.../torproject/android/mini/MiniMainActivity.java | 5 +-
app/build.gradle | 5 +-
.../org/torproject/android/OrbotMainActivity.java | 3 +-
.../ui/onboarding/CustomBridgesActivity.java | 4 +-
.../android/ui/onboarding/MoatActivity.java | 6 +-
external/jtorctl | 1 -
orbotservice/build.gradle | 11 +-
.../torproject/android/service/OrbotService.java | 455 ++++---------
.../android/service/TorServiceConstants.java | 12 -
.../service/util/CustomTorResourceInstaller.java | 71 +-
.../java/org/torproject/android/control/.cvsignore | 1 -
.../java/org/torproject/android/control/Bytes.java | 114 ----
.../torproject/android/control/ConfigEntry.java | 20 -
.../torproject/android/control/EventHandler.java | 75 ---
.../torproject/android/control/PasswordDigest.java | 98 ---
.../java/org/torproject/android/control/README | 4 -
.../android/control/TorControlCommands.java | 148 -----
.../android/control/TorControlConnection.java | 730 ---------------------
.../android/control/TorControlError.java | 39 --
.../android/control/TorControlSyntaxError.java | 16 -
.../torproject/android/control/examples/.cvsignore | 1 -
.../control/examples/DebuggingEventHandler.java | 44 --
.../torproject/android/control/examples/Main.java | 146 -----
.../android/service/ExampleUnitTest.java | 15 -
28 files changed, 173 insertions(+), 1857 deletions(-)
1
0
[orbot/master] Merge pull request #457 from eighthave/jcenter-gpmaven-migration
by n8fr8@torproject.org 22 Dec '21
by n8fr8@torproject.org 22 Dec '21
22 Dec '21
commit d2d85aaabe2baeb679bdfc54b9fdea6bade77991
Merge: 839c3787 a6cd5b00
Author: Nathan Freitas <nathan(a)guardianproject.info>
Date: Wed May 5 13:52:41 2021 -0400
Merge pull request #457 from eighthave/jcenter-gpmaven-migration
start migration away from jcenter and gpmaven repos
app-mini/build.gradle | 8 ++++++++
app/build.gradle | 11 ++++++++++-
build.gradle | 18 +++++++++++++++---
orbotservice/build.gradle | 4 ----
4 files changed, 33 insertions(+), 8 deletions(-)
1
0