[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [orbot/master] move patches to external since that is what it is applied to (external code)
commit 0f00e12cdcbe1d0bb60d04eae0e557c6ddf21bb7
Author: Nathan Freitas <nathan@xxxxxxxxxxx>
Date: Wed Jun 29 10:01:42 2016 -0400
move patches to external since that is what it is applied to (external code)
---
external/patches/UDP-block.patch | 243 +++++++++++++
.../orbot-patch-sporkbomb-20110501/Part 1.4 | 11 +
...real_transproxy_all-use_only_new_iptables.patch | 390 +++++++++++++++++++++
.../orbot_leak_report | 110 ++++++
external/patches/transproxy.patch | 0
external/patches/udptransproxyfinal.patch | 247 +++++++++++++
.../ic_launcher_gibberbot.png | Bin 0 -> 7527 bytes
.../update_GibberBot_info.diff | 285 +++++++++++++++
8 files changed, 1286 insertions(+)
diff --git a/external/patches/UDP-block.patch b/external/patches/UDP-block.patch
new file mode 100644
index 0000000..e16a957
--- /dev/null
+++ b/external/patches/UDP-block.patch
@@ -0,0 +1,243 @@
+From c2620d6939713762e30badc3ed5da981e296b742 Mon Sep 17 00:00:00 2001
+From: patch <patrickbx@xxxxxxxxx>
+Date: Mon, 23 Jul 2012 16:12:55 -0400
+Subject: [PATCH] Modified iptables rules for transproxying. UDP is now
+ blocked. Also removed some redundant rules and reordered
+ others. I reordered by the idea that its generally easier
+ to specifically allow traffic before your reject it.
+
+---
+ .../torproject/android/service/TorTransProxy.java | 133 ++++++++++----------
+ 1 file changed, 64 insertions(+), 69 deletions(-)
+
+diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java
+index 2571123..c248a9f 100644
+--- a/src/org/torproject/android/service/TorTransProxy.java
++++ b/src/org/torproject/android/service/TorTransProxy.java
+@@ -224,6 +224,15 @@ public class TorTransProxy implements TorServiceConstants {
+
+ int torUid = context.getApplicationInfo().uid;
+
++ // Allow everything for Tor
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(torUid);
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
+ //build up array of shell cmds to execute under one root context
+ for (TorifiedApp tApp:apps)
+ {
+@@ -235,9 +244,9 @@ public class TorTransProxy implements TorServiceConstants {
+ {
+
+ TorService.logMessage("enabling transproxy for app: " + tApp.getUsername() + "(" + tApp.getUid() + ")");
+-
+- // Set up port redirection
+- script.append(ipTablesPath);
++
++ // Set up port redirection
++ script.append(ipTablesPath);
+ script.append(" -t nat");
+ script.append(" -A OUTPUT -p tcp");
+ script.append(" ! -d 127.0.0.1"); //allow access to localhost
+@@ -251,14 +260,28 @@ public class TorTransProxy implements TorServiceConstants {
+ // Same for DNS
+ script.append(ipTablesPath);
+ script.append(" -t nat");
+- script.append(" -A OUTPUT -p udp -m owner --uid-owner ");
++ script.append(" -A OUTPUT -p udp");
++ script.append(" -m owner --uid-owner ");
+ script.append(tApp.getUid());
+ script.append(" -m udp --dport ");
+ script.append(STANDARD_DNS_PORT);
+ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_DNS_PORT);
+ script.append(" || exit\n");
+-
++
++ // Allow loopback
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(tApp.getUid());
++ script.append(" -o lo");
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
++ /*
++ //Outgoing loopback already allowed (23/7/12)
++
+ int[] ports = {TOR_DNS_PORT,TOR_TRANSPROXY_PORT,PORT_SOCKS,PORT_HTTP};
+
+ for (int port : ports)
+@@ -276,53 +299,32 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" -j ACCEPT");
+ script.append(" || exit\n");
+ }
+-
+- // Allow loopback
++ */
++
++ // Reject all other outbound TCP packets
+ script.append(ipTablesPath);
+ script.append(" -t filter");
+ script.append(" -A OUTPUT");
+ script.append(" -m owner --uid-owner ");
+ script.append(tApp.getUid());
+ script.append(" -p tcp");
+- script.append(" -o lo");
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+- // Reject DNS that is not from Tor (order is important - first matched rule counts!)
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -m owner --uid-owner ");
+- script.append(tApp.getUid());
+- script.append(" -p udp");
+- script.append(" --dport ");
+- script.append(STANDARD_DNS_PORT);
+ script.append(" -j REJECT");
+ script.append(" || exit\n");
+-
+- // Reject all other outbound TCP packets
++
++ // Reject all other outbound UDP packets
+ script.append(ipTablesPath);
+ script.append(" -t filter");
+ script.append(" -A OUTPUT");
+ script.append(" -m owner --uid-owner ");
+ script.append(tApp.getUid());
+- script.append(" -p tcp");
++ script.append(" -p udp");
+ script.append(" -j REJECT");
+ script.append(" || exit\n");
++
+
+ }
+ }
+-
+
+- // Allow everything for Tor
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -m owner --uid-owner ");
+- script.append(torUid);
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+ String[] cmdAdd = {script.toString()};
+
+ code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
+@@ -450,8 +452,8 @@ public class TorTransProxy implements TorServiceConstants {
+
+ int torUid = context.getApplicationInfo().uid;
+
+- // Set up port redirection
+- script.append(ipTablesPath);
++ // Set up port redirection
++ script.append(ipTablesPath);
+ script.append(" -t nat");
+ script.append(" -A OUTPUT -p tcp");
+ script.append(" ! -d 127.0.0.1"); //allow access to localhost
+@@ -465,14 +467,36 @@ public class TorTransProxy implements TorServiceConstants {
+ // Same for DNS
+ script.append(ipTablesPath);
+ script.append(" -t nat");
+- script.append(" -A OUTPUT -p udp -m owner ! --uid-owner ");
++ script.append(" -A OUTPUT -p udp");
++ script.appent(" -m owner ! --uid-owner ");
+ script.append(torUid);
+ script.append(" -m udp --dport ");
+ script.append(STANDARD_DNS_PORT);
+ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_DNS_PORT);
+ script.append(" || exit\n");
++
++ // Allow loopback
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -o lo");
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
+
++ // Allow everything for Tor
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(torUid);
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
++
++ /*
++ //Outgoing loopback already allowed (23/7/12)
++
+ int[] ports = {TOR_DNS_PORT,TOR_TRANSPROXY_PORT,PORT_SOCKS,PORT_HTTP};
+
+ for (int port : ports)
+@@ -490,25 +514,8 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" -j ACCEPT");
+ script.append(" || exit\n");
+
+- }
+-
+- // Allow loopback
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -p tcp");
+- script.append(" -o lo");
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
++ } */
+
+- // Allow everything for Tor
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -m owner --uid-owner ");
+- script.append(torUid);
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+
+ if (TorService.ENABLE_DEBUG_LOG)
+ {
+@@ -532,23 +539,11 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" --log-uid");
+ script.append(" || exit\n");
+ }
+-
+- // Reject DNS that is not from Tor (order is important - first matched rule counts!)
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -p udp");
+- script.append(" --dport ");
+- script.append(STANDARD_DNS_PORT);
+- script.append(" -j REJECT");
+- script.append(" || exit\n");
+-
+- // Reject all other outbound TCP packets
++
++ // Reject all other outbound packets by default
+ script.append(ipTablesPath);
+ script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -p tcp");
+- script.append(" -j REJECT");
++ script.append(" -P OUTPUT DROP");
+ script.append(" || exit\n");
+
+ String[] cmdAdd = {script.toString()};
+--
+1.7.9.5
+
diff --git a/external/patches/orbot-patch-sporkbomb-20110501/Part 1.4 b/external/patches/orbot-patch-sporkbomb-20110501/Part 1.4
new file mode 100644
index 0000000..002bdb9
--- /dev/null
+++ b/external/patches/orbot-patch-sporkbomb-20110501/Part 1.4
@@ -0,0 +1,11 @@
+_______________________________________________
+Guardian-dev mailing list
+
+Post: Guardian-dev@xxxxxxxxxxxxxxxxxx
+List info: https://lists.mayfirst.org/mailman/listinfo/guardian-dev
+
+To Unsubscribe
+ Send email to: Guardian-dev-unsubscribe@xxxxxxxxxxxxxxxxxx
+ Or visit: https://lists.mayfirst.org/mailman/options/guardian-dev/nathan%40guardianproject.info
+
+You are subscribed as: nathan@xxxxxxxxxxxxxxxxxxxx
diff --git a/external/patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch b/external/patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch
new file mode 100644
index 0000000..60635b4
--- /dev/null
+++ b/external/patches/orbot-patch-sporkbomb-20110501/orbot-real_transproxy_all-use_only_new_iptables.patch
@@ -0,0 +1,390 @@
+Index: src/org/torproject/android/service/TorService.java
+===================================================================
+--- src/org/torproject/android/service/TorService.java (revision 24697)
++++ src/org/torproject/android/service/TorService.java (working copy)
+@@ -710,10 +710,36 @@
+
+ if (enableTransparentProxy)
+ {
+- showAlert("Status", "Setting up transparent proxying...");
+-
+- //TorTransProxy.setDNSProxying();
+- int code = TorTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this),transProxyAll);
++ //TODO: Find a nice place for the next (commented) line
++ //TorTransProxy.setDNSProxying();
++
++ int code = 0; // Default state is "okay"
++
++ if(transProxyPortFallback)
++ {
++ showAlert("Status", "Setting up port-based transparent proxying...");
++ StringTokenizer st = new StringTokenizer(portProxyList, ",");
++ int status = code;
++ while (st.hasMoreTokens())
++ {
++ status = TorTransProxy.setTransparentProxyingByPort(this, Integer.parseInt(st.nextToken()));
++ if(status != 0)
++ code = status;
++ }
++ }
++ else
++ {
++ if(transProxyAll)
++ {
++ showAlert("Status", "Setting up full transparent proxying...");
++ code = TorTransProxy.setTransparentProxyingAll(this);
++ }
++ else
++ {
++ showAlert("Status", "Setting up app-based transparent proxying...");
++ code = TorTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this),transProxyAll);
++ }
++ }
+
+ TorService.logMessage ("TorTransProxy resp code: " + code);
+
+@@ -725,17 +751,7 @@
+ {
+ showAlert("Status", "WARNING: error starting transparent proxying!");
+ }
+-
+- //this is for Androids w/o owner module support as a circumvention only fallback
+- if (transProxyPortFallback)
+- {
+- StringTokenizer st = new StringTokenizer(portProxyList, ",");
+-
+- while (st.hasMoreTokens())
+- TorTransProxy.setTransparentProxyingByPort(this, Integer.parseInt(st.nextToken()));
+-
+- }
+-
++
+ return true;
+
+ }
+Index: src/org/torproject/android/service/TorTransProxy.java
+===================================================================
+--- src/org/torproject/android/service/TorTransProxy.java (revision 24697)
++++ src/org/torproject/android/service/TorTransProxy.java (working copy)
+@@ -136,8 +136,6 @@
+ //redirectDNSResolvConf(); //not working yet
+
+ String ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
+-
+- boolean ipTablesOld = false;
+
+ StringBuilder script = new StringBuilder();
+
+@@ -145,14 +143,12 @@
+ int code = -1;
+
+ purgeIptables(context);
+-
+- script = new StringBuilder();
+-
++
+ //build up array of shell cmds to execute under one root context
+ for (int i = 0; i < apps.length; i++)
+ {
+
+- if (forceAll || apps[i].isTorified()) //if "Tor Everything" on or app is set to true
++ if (apps[i].isTorified()) //if app is set to true
+ {
+
+ if (apps[i].getUsername().equals(TorServiceConstants.TOR_APP_USERNAME))
+@@ -170,14 +166,8 @@
+ script.append(" -m owner --uid-owner ");
+ script.append(apps[i].getUid());
+ script.append(" -m tcp --syn");
+-
+- if (ipTablesOld)
+- script.append(" -j DNAT --to 127.0.0.1:");
+- else
+- script.append(" -j REDIRECT --to-ports ");
+-
++ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_TRANSPROXY_PORT);
+-
+ script.append(" || exit\n");
+
+ //DNS
+@@ -187,57 +177,37 @@
+ script.append(apps[i].getUid());
+ script.append(" -m udp --dport ");
+ script.append(STANDARD_DNS_PORT);
++ script.append(" -j REDIRECT --to-ports ");
++ script.append(TOR_DNS_PORT);
++ script.append(" || exit\n");
+
+- if (ipTablesOld)
+- script.append(" -j DNAT --to 127.0.0.1:");
+- else
+- script.append(" -j REDIRECT --to-ports ");
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT -p tcp");
++ script.append(" -m owner --uid-owner ");
++ script.append(apps[i].getUid());
++ script.append(" -m tcp --dport ");
++ script.append(TOR_TRANSPROXY_PORT);
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
+
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT -p udp");
++ script.append(" -m owner --uid-owner ");
++ script.append(apps[i].getUid());
++ script.append(" -m udp --dport ");
+ script.append(TOR_DNS_PORT);
+-
++ script.append(" -j ACCEPT");
+ script.append(" || exit\n");
++
++ script.append(ipTablesPath);
++ script.append(" -t filter -A OUTPUT -m owner --uid-owner ");
++ script.append(apps[i].getUid());
++ script.append(" -j DROP"); //drop all other packets as Tor won't handle them
++ script.append(" || exit\n");
+
+
+- if (ipTablesOld) //for some reason this doesn't work on iptables 1.3.7
+- {
+- script.append(ipTablesPath);
+- script.append(" -t nat");
+- script.append(" -A OUTPUT -m owner --uid-owner ");
+- script.append(apps[i].getUid());
+- script.append(" -j DROP");
+- script.append(" || exit\n");
+- }
+- else
+- {
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT -p tcp");
+- script.append(" -m owner --uid-owner ");
+- script.append(apps[i].getUid());
+- script.append(" -m tcp --dport ");
+- script.append(TOR_TRANSPROXY_PORT);
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT -p udp");
+- script.append(" -m owner --uid-owner ");
+- script.append(apps[i].getUid());
+- script.append(" -m udp --dport ");
+- script.append(TOR_DNS_PORT);
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+- script.append(ipTablesPath);
+- script.append(" -t filter -A OUTPUT -m owner --uid-owner ");
+- script.append(apps[i].getUid());
+- script.append(" -j DROP"); //drop all other packets as Tor won't handle them
+- script.append(" || exit\n");
+-
+- }
+-
+-
+ }
+ }
+
+@@ -260,20 +230,13 @@
+
+ //String baseDir = context.getDir("bin",0).getAbsolutePath() + '/';
+ String ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
+-
+- boolean ipTablesOld = false;
+
+ StringBuilder script = new StringBuilder();
+
+ StringBuilder res = new StringBuilder();
+ int code = -1;
+-
+- String[] cmdFlush = {script.toString()};
+- code = TorServiceUtils.doShellCommand(cmdFlush, res, true, true);
+- //String msg = res.toString(); //get stdout from command
++ purgeIptables(context);
+
+- script = new StringBuilder();
+-
+ //TCP
+ //iptables -t nat -A PREROUTING -i eth0 -p tcp --dport $srcPortNumber -j REDIRECT --to-port $dstPortNumbe
+
+@@ -283,14 +246,8 @@
+ script.append(" --dport ");
+ script.append(port);
+ //script.append(" -m tcp --syn");
+-
+- if (ipTablesOld)
+- script.append(" -j DNAT --to 127.0.0.1:");
+- else
+- script.append(" -j REDIRECT --to-ports ");
+-
++ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_TRANSPROXY_PORT);
+-
+ script.append(" || exit\n");
+
+ script.append(ipTablesPath);
+@@ -298,14 +255,8 @@
+ script.append(" -A OUTPUT -p udp");
+ script.append(" --dport ");
+ script.append(port);
+-
+- if (ipTablesOld)
+- script.append(" -j DNAT --to 127.0.0.1:");
+- else
+- script.append(" -j REDIRECT --to-ports ");
+-
++ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_TRANSPROXY_PORT);
+-
+ script.append(" || exit\n");
+
+ //DNS
+@@ -314,24 +265,134 @@
+ script.append(" -A OUTPUT -p udp ");
+ script.append(" -m udp --dport ");
+ script.append(STANDARD_DNS_PORT);
++ script.append(" -j REDIRECT --to-ports ");
++ script.append(TOR_DNS_PORT);
++ script.append(" || exit\n");
+
+- if (ipTablesOld)
+- script.append(" -j DNAT --to 127.0.0.1:");
+- else
+- script.append(" -j REDIRECT --to-ports ");
++
++ String[] cmdAdd = {script.toString()};
++ code = TorServiceUtils.doShellCommand(cmdAdd, res, true, true);
++ String msg = res.toString();
++ TorService.logMessage(cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
+
++ return code;
++ }
++
++ public static int setTransparentProxyingAll(Context context) throws Exception {
++ boolean runRoot = true;
++ boolean waitFor = true;
++
++ //android.os.Debug.waitForDebugger();
++
++ //redirectDNSResolvConf(); //not working yet
++
++ String ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
++
++ StringBuilder script = new StringBuilder();
++
++ StringBuilder res = new StringBuilder();
++ int code = -1;
++
++ purgeIptables(context);
++
++ int torUid = context.getApplicationInfo().uid;
++
++ // Set up port redirection
++ script.append(ipTablesPath);
++ script.append(" -t nat");
++ script.append(" -A OUTPUT -p tcp");
++ script.append(" -m owner ! --uid-owner ");
++ script.append(torUid);
++ script.append(" -m tcp --syn");
++ script.append(" -j REDIRECT --to-ports ");
++ script.append(TOR_TRANSPROXY_PORT);
++ script.append(" || exit\n");
++
++ // Same for DNS
++ script.append(ipTablesPath);
++ script.append(" -t nat");
++ script.append(" -A OUTPUT -p udp -m owner ! --uid-owner ");
++ script.append(torUid);
++ script.append(" -m udp --dport ");
++ script.append(STANDARD_DNS_PORT);
++ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_DNS_PORT);
++ script.append(" || exit\n");
+
++ // Allow packets to localhost (contains all the port-redirected ones)
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p tcp");
++ script.append(" -d 127.0.0.1");
++ script.append(" -j ACCEPT");
+ script.append(" || exit\n");
+
++ // Allow loopback
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p tcp");
++ script.append(" -o lo");
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
++ // Allow everything for Tor
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(torUid);
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
++ //XXX: Comment the following rules for non-debug builds
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p udp");
++ script.append(" --dport ");
++ script.append(STANDARD_DNS_PORT);
++ script.append(" -j LOG");
++ script.append(" --log-prefix='ORBOT_DNSLEAK_PROTECTION'");
++ script.append(" --log-uid");
++ script.append(" || exit\n");
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p tcp");
++ script.append(" -j LOG");
++ script.append(" --log-prefix='ORBOT_TCPLEAK_PROTECTION'");
++ script.append(" --log-uid");
++ script.append(" || exit\n");
++
++
++ // Reject DNS that is not from Tor (order is important - first matched rule counts!)
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p udp");
++ script.append(" --dport ");
++ script.append(STANDARD_DNS_PORT);
++ script.append(" -j REJECT");
++ script.append(" || exit\n");
++
++ // Reject all other outbound TCP packets
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p tcp");
++ script.append(" -j REJECT");
++ script.append(" || exit\n");
++
++ String[] cmdAdd = {script.toString()};
+
+- String[] cmdAdd = {script.toString()};
+- code = TorServiceUtils.doShellCommand(cmdAdd, res, true, true);
++ code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
+ String msg = res.toString();
+ TorService.logMessage(cmdAdd[0] + ";errCode=" + code + ";resp=" + msg);
+
+- return code;
+- }
++ return code;
++ }
+
+
+ }
diff --git a/external/patches/orbot-patch-sporkbomb-20110501/orbot_leak_report b/external/patches/orbot-patch-sporkbomb-20110501/orbot_leak_report
new file mode 100644
index 0000000..8f61a1f
--- /dev/null
+++ b/external/patches/orbot-patch-sporkbomb-20110501/orbot_leak_report
@@ -0,0 +1,110 @@
+<4>[ 115.319671] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=9997 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK URGP=0 UID=10035 GID=10035
+<4>[ 115.482788] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=9998 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK URGP=0 UID=10035 GID=10035
+<4>[ 116.037658] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=9999 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK URGP=0 UID=10035 GID=10035
+<4>[ 116.699127] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10000 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10035 GID=10035
+<4>[ 116.724517] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10001 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0 UID=10035 GID=10035
+<4>[ 116.922515] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10002 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 117.330810] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10003 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 118.150726] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10004 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 118.903320] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10005 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 119.310729] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10006 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 120.130737] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10007 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 121.770690] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10008 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 122.695465] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10009 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 123.100708] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10010 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 123.920684] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10011 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 125.565673] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10012 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 128.840789] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10013 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 130.366333] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10014 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 130.785339] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10015 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 131.600799] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10016 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 132.835144] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50247 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 133.240753] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10017 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 133.410705] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50248 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 133.443481] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50249 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 134.031341] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50250 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 134.782196] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50251 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 135.360778] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50252 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 136.520782] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10018 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 136.526306] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50253 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 137.334716] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50254 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 137.915832] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50255 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 139.075378] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50256 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 140.435913] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10019 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 140.850799] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10020 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 141.395019] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50257 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 141.675140] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10021 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 142.455352] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50258 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 143.030792] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50259 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 143.310852] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10022 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 144.190734] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50260 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 146.510803] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50261 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 146.590789] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10023 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 151.150726] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50262 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 151.166290] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10024 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 151.570739] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10025 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 152.390686] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10026 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 152.694427] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50263 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 153.270721] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50264 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 154.030731] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10027 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 154.430694] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50265 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 156.750701] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50266 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 157.310699] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10028 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 160.383117] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10029 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 160.790832] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10030 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 161.390716] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50267 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 161.610717] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10031 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 163.250701] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10032 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 166.531494] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10033 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 170.670715] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50268 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 170.842285] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10034 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 171.250732] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10035 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 172.070800] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10036 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 173.309783] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50269 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 173.710784] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10037 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 173.880828] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50270 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 175.040710] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50271 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 176.990692] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10038 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 177.360687] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50272 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 181.682952] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10039 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 182.000701] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50273 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 182.090698] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10040 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 182.910797] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10041 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 184.550689] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10042 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 187.830749] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10043 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 191.280700] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50274 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 193.917053] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10044 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 194.330749] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10045 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 195.150695] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10046 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 196.790679] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10047 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 200.070709] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10048 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 201.567718] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10049 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 201.970703] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10050 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 202.790771] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10051 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 204.430816] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10052 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 207.710693] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10053 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 209.840789] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50275 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 212.362884] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10054 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 212.770812] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10055 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 213.590698] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10056 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 215.235809] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10057 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 217.285766] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=261 TOS=0x00 PREC=0x00 TTL=64 ID=50276 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 217.860687] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50277 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 218.510803] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10058 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 219.020721] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50278 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 220.840667] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.101 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=40218 DPT=80 WINDOW=0 RES=0x00 RST URGP=0
+<4>[ 220.842559] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.101 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=40218 DPT=80 WINDOW=0 RES=0x00 RST URGP=0
+<4>[ 220.844512] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.101 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=40218 DPT=80 WINDOW=0 RES=0x00 RST URGP=0
+<4>[ 221.340820] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50279 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 221.478881] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=91 TOS=0x00 PREC=0x00 TTL=64 ID=10059 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 221.890777] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10060 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 221.898010] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.101 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=40218 DPT=80 WINDOW=0 RES=0x00 RST URGP=0
+<4>[ 222.710754] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10061 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 224.350677] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10062 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 225.617523] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.101 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=40218 DPT=80 WINDOW=0 RES=0x00 RST URGP=0
+<4>[ 225.980743] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=87.238.52.70 LEN=249 TOS=0x00 PREC=0x00 TTL=64 ID=50280 DF PROTO=TCP SPT=53939 DPT=993 WINDOW=32044 RES=0x00 ACK PSH URGP=0 UID=10053 GID=10053
+<4>[ 227.630798] ORBOT_TCPLEAK_PROTECTIONIN= OUT=eth0 SRC=192.168.0.14 DST=74.125.39.139 LEN=79 TOS=0x00 PREC=0x00 TTL=64 ID=10063 DF PROTO=TCP SPT=53388 DPT=443 WINDOW=32044 RES=0x00 ACK PSH FIN URGP=0
+<4>[ 241.522155] ORBOT_TCPLEAK_PROTECTIONIN= OUT=rmnet0 SRC=46.206.239.134 DST=84.22.122.5 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=20341 DF PROTO=TCP SPT=49138 DPT=9001 WINDOW=32044 RES=0x00 ACK URGP=0
+<4>[ 241.792358] ORBOT_TCPLEAK_PROTECTIONIN= OUT=rmnet0 SRC=46.206.239.134 DST=84.22.122.5 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=49138 DPT=9001 WINDOW=32044 RES=0x00 ACK URGP=0
+<4>[ 242.362335] ORBOT_TCPLEAK_PROTECTIONIN= OUT=rmnet0 SRC=46.206.239.134 DST=84.22.122.5 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=49138 DPT=9001 WINDOW=32044 RES=0x00 ACK URGP=0
+<4>[ 243.452331] ORBOT_TCPLEAK_PROTECTIONIN= OUT=rmnet0 SRC=46.206.239.134 DST=84.22.122.5 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=TCP SPT=49138 DPT=9001 WINDOW=32044 RES=0x00 ACK URGP=0
diff --git a/external/patches/transproxy.patch b/external/patches/transproxy.patch
new file mode 100644
index 0000000..e69de29
diff --git a/external/patches/udptransproxyfinal.patch b/external/patches/udptransproxyfinal.patch
new file mode 100644
index 0000000..32cc0e2
--- /dev/null
+++ b/external/patches/udptransproxyfinal.patch
@@ -0,0 +1,247 @@
+From a81741afe06ac2309b4306dedbd5a0ebf755b7e1 Mon Sep 17 00:00:00 2001
+From: patch <patrickbx@xxxxxxxxx>
+Date: Fri, 31 Aug 2012 17:25:52 -0400
+Subject: [PATCH] Addendum to the last commit on UDP transproxy rules. Trying
+ to simplfy the iptables rules didn't work out so this is a
+ minimal change from the original TorTransProxy.java file.
+ UDP is blocked and tested as working.
+
+---
+ .../torproject/android/service/TorTransProxy.java | 144 ++++++++++++--------
+ 1 file changed, 84 insertions(+), 60 deletions(-)
+
+diff --git a/src/org/torproject/android/service/TorTransProxy.java b/src/org/torproject/android/service/TorTransProxy.java
+index c248a9f..90bdc34 100644
+--- a/src/org/torproject/android/service/TorTransProxy.java
++++ b/src/org/torproject/android/service/TorTransProxy.java
+@@ -224,15 +224,6 @@ public class TorTransProxy implements TorServiceConstants {
+
+ int torUid = context.getApplicationInfo().uid;
+
+- // Allow everything for Tor
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -m owner --uid-owner ");
+- script.append(torUid);
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+ //build up array of shell cmds to execute under one root context
+ for (TorifiedApp tApp:apps)
+ {
+@@ -244,9 +235,9 @@ public class TorTransProxy implements TorServiceConstants {
+ {
+
+ TorService.logMessage("enabling transproxy for app: " + tApp.getUsername() + "(" + tApp.getUid() + ")");
+-
+- // Set up port redirection
+- script.append(ipTablesPath);
++
++ // Set up port redirection
++ script.append(ipTablesPath);
+ script.append(" -t nat");
+ script.append(" -A OUTPUT -p tcp");
+ script.append(" ! -d 127.0.0.1"); //allow access to localhost
+@@ -260,28 +251,14 @@ public class TorTransProxy implements TorServiceConstants {
+ // Same for DNS
+ script.append(ipTablesPath);
+ script.append(" -t nat");
+- script.append(" -A OUTPUT -p udp");
+- script.append(" -m owner --uid-owner ");
++ script.append(" -A OUTPUT -p udp -m owner --uid-owner ");
+ script.append(tApp.getUid());
+ script.append(" -m udp --dport ");
+ script.append(STANDARD_DNS_PORT);
+ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_DNS_PORT);
+ script.append(" || exit\n");
+-
+- // Allow loopback
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -m owner --uid-owner ");
+- script.append(tApp.getUid());
+- script.append(" -o lo");
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+- /*
+- //Outgoing loopback already allowed (23/7/12)
+-
++
+ int[] ports = {TOR_DNS_PORT,TOR_TRANSPROXY_PORT,PORT_SOCKS,PORT_HTTP};
+
+ for (int port : ports)
+@@ -299,8 +276,30 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" -j ACCEPT");
+ script.append(" || exit\n");
+ }
+- */
+-
++
++ // Allow loopback
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(tApp.getUid());
++ script.append(" -p tcp");
++ script.append(" -o lo");
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
++ // Reject DNS that is not from Tor (order is important - first matched rule counts!)
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(tApp.getUid());
++ script.append(" -p udp");
++ script.append(" --dport ");
++ script.append(STANDARD_DNS_PORT);
++ script.append(" -j REJECT");
++ script.append(" || exit\n");
++
+ // Reject all other outbound TCP packets
+ script.append(ipTablesPath);
+ script.append(" -t filter");
+@@ -321,10 +320,19 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" -j REJECT");
+ script.append(" || exit\n");
+
+-
+ }
+ }
++
+
++ // Allow everything for Tor
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(torUid);
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
++
+ String[] cmdAdd = {script.toString()};
+
+ code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
+@@ -452,8 +460,8 @@ public class TorTransProxy implements TorServiceConstants {
+
+ int torUid = context.getApplicationInfo().uid;
+
+- // Set up port redirection
+- script.append(ipTablesPath);
++ // Set up port redirection
++ script.append(ipTablesPath);
+ script.append(" -t nat");
+ script.append(" -A OUTPUT -p tcp");
+ script.append(" ! -d 127.0.0.1"); //allow access to localhost
+@@ -467,36 +475,14 @@ public class TorTransProxy implements TorServiceConstants {
+ // Same for DNS
+ script.append(ipTablesPath);
+ script.append(" -t nat");
+- script.append(" -A OUTPUT -p udp");
+- script.appent(" -m owner ! --uid-owner ");
++ script.append(" -A OUTPUT -p udp -m owner ! --uid-owner ");
+ script.append(torUid);
+ script.append(" -m udp --dport ");
+ script.append(STANDARD_DNS_PORT);
+ script.append(" -j REDIRECT --to-ports ");
+ script.append(TOR_DNS_PORT);
+ script.append(" || exit\n");
+-
+- // Allow loopback
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -o lo");
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+
+- // Allow everything for Tor
+- script.append(ipTablesPath);
+- script.append(" -t filter");
+- script.append(" -A OUTPUT");
+- script.append(" -m owner --uid-owner ");
+- script.append(torUid);
+- script.append(" -j ACCEPT");
+- script.append(" || exit\n");
+-
+-
+- /*
+- //Outgoing loopback already allowed (23/7/12)
+-
+ int[] ports = {TOR_DNS_PORT,TOR_TRANSPROXY_PORT,PORT_SOCKS,PORT_HTTP};
+
+ for (int port : ports)
+@@ -514,8 +500,25 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" -j ACCEPT");
+ script.append(" || exit\n");
+
+- } */
++ }
++
++ // Allow loopback
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p tcp");
++ script.append(" -o lo");
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
+
++ // Allow everything for Tor
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -m owner --uid-owner ");
++ script.append(torUid);
++ script.append(" -j ACCEPT");
++ script.append(" || exit\n");
+
+ if (TorService.ENABLE_DEBUG_LOG)
+ {
+@@ -539,13 +542,34 @@ public class TorTransProxy implements TorServiceConstants {
+ script.append(" --log-uid");
+ script.append(" || exit\n");
+ }
+-
+- // Reject all other outbound packets by default
++
++ // Reject DNS that is not from Tor (order is important - first matched rule counts!)
+ script.append(ipTablesPath);
+ script.append(" -t filter");
+- script.append(" -P OUTPUT DROP");
++ script.append(" -A OUTPUT");
++ script.append(" -p udp");
++ script.append(" --dport ");
++ script.append(STANDARD_DNS_PORT);
++ script.append(" -j REJECT");
+ script.append(" || exit\n");
+
++ // Reject all other outbound TCP packets
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p tcp");
++ script.append(" -j REJECT");
++ script.append(" || exit\n");
++
++ // Reject all other outbound UDP packets
++ script.append(ipTablesPath);
++ script.append(" -t filter");
++ script.append(" -A OUTPUT");
++ script.append(" -p udp");
++ script.append(" -j REJECT");
++ script.append(" || exit\n");
++
++
+ String[] cmdAdd = {script.toString()};
+
+ code = TorServiceUtils.doShellCommand(cmdAdd, res, runRoot, waitFor);
+--
+1.7.9.5
+
diff --git a/external/patches/update_GibberBot_info/ic_launcher_gibberbot.png b/external/patches/update_GibberBot_info/ic_launcher_gibberbot.png
new file mode 100644
index 0000000..e409910
Binary files /dev/null and b/external/patches/update_GibberBot_info/ic_launcher_gibberbot.png differ
diff --git a/external/patches/update_GibberBot_info/update_GibberBot_info.diff b/external/patches/update_GibberBot_info/update_GibberBot_info.diff
new file mode 100644
index 0000000..404b524
--- /dev/null
+++ b/external/patches/update_GibberBot_info/update_GibberBot_info.diff
@@ -0,0 +1,285 @@
+Index: res/values-ca/strings.xml
+===================================================================
+--- res/values-ca/strings.xml (revision 24406)
++++ res/values-ca/strings.xml (working copy)
+@@ -97,7 +97,7 @@
+
+ <string name="wizard_tips_tricks">Aplicacions per a usar-se amb Orbot</string>
+ <string name="wizard_tips_msg">T\'animem a descarregar-te & utilitza aplicacions que sà piguen com connectar-se directament a Orbot. Fes clic als botons de sota per instal·lar.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Client de missatgeria instantà nia segura per a Android</string>
++ <string name="wizard_tips_otrchat">GibberBot - Client de missatgeria instantà nia segura per a Android</string>
+ <string name="wizard_tips_orweb">ORWEB (Només Android 1.x) - Navegador dissenyat per la privacitat & per a Orbot</string>
+ <string name="wizard_tips_proxy">Coniguració de Proxy - Aprèn a configurar aplicacions per a què funcionin amb Orbot</string>
+
+@@ -115,7 +115,7 @@
+ <string name="wizard_final">Orbot és a punt!</string>
+ <string name="wizard_final_msg">Centenars de milers de persones arreu del món utilitzen Tor per un gran ventall de raons: periodistes i blocaires, treballadors pels drets humans, agents de l\'autoritat, soldats, corporacions, ciutadans de règims opressors, i ciutadans qualssevol... I ara tu també ho pots fer!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/drawable/icon_otrchat.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+Index: res/drawable/ic_launcher_gibberbot.png
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/octet-stream
+
+Property changes on: res/drawable/ic_launcher_gibberbot.png
+___________________________________________________________________
+Added: svn:mime-type
+ + application/octet-stream
+
+Index: res/values-fa/strings.xml
+===================================================================
+--- res/values-fa/strings.xml (revision 24406)
++++ res/values-fa/strings.xml (working copy)
+@@ -95,7 +95,7 @@
+
+ <string name="wizard_tips_tricks">اپÙ?Û?Ú©Û?Ø´Ù? Ù?اÛ?Û? Ú©Ù? براÛ? اÙ?ربات تÙ?ظÛ?Ù? شدÙ? اÙ?د</string>
+ <string name="wizard_tips_msg">تÙ?صÛ?Ù? Ù?Û? Ú©Ù?Û?Ù? داÙ?Ù? Ù?Ù?د Ù? Ù?عاÙ? Ú©Ù?Û?دØ? اپÙ?Û?Ú©Û?Ø´Ù? Ù?اÛ?Û? را استÙ?ادÙ? Ú©Ù?Û?د Ú©Ù? Ù?ستÙ?Û?Ù? بÙ? اÙ?ربات Ù?صÙ? Ù?Û? Ø´Ù?Ù?د. دکÙ?Ù? Ù?اÛ? زÛ?ر را Ù?شار دÙ?Û?د تا Ù?صب Ø´Ù?د. </string>
+- <string name="wizard_tips_otrchat">OTRCHAT - کاربر اÛ?Ù?Ù? اÙ?تÙ?اÙ? Ù¾Û?اÙ? Ù?Ù?رÛ? براÛ? Ø¢Ù?درÙ?Û?د</string>
++ <string name="wizard_tips_otrchat">GibberBot - کاربر اÛ?Ù?Ù? اÙ?تÙ?اÙ? Ù¾Û?اÙ? Ù?Ù?رÛ? براÛ? Ø¢Ù?درÙ?Û?د</string>
+ <string name="wizard_tips_orweb">ORWEB (Ù?Ù?Ø· Ø¢Ù?درÙ?Û?د 1.x) - Ù?رÙ?رگر طراØÛ? شدÙ? براÛ? ØÙ?ظ ØرÛ?Ù? خصÙ?صÛ? Ù? اÙ?زÙ?Ù?ساز اÙ?ربات</string>
+ <string name="wizard_tips_proxy">تÙ?ظÛ?Ù?ات پرÙ?کسÛ? - Û?ادگÛ?رÛ? تÙ?ظÛ?Ù? اپÙ?Û?Ú©Û?Ø´Ù? Ù?ا براÛ? کار با اÙ?ربات</string>
+
+@@ -105,7 +105,7 @@
+ <string name="wizard_final">اÙ?ربات Ø¢Ù?ادÙ? استÙ?ادÙ? Ù?Û?باشد!</string>
+ <string name="wizard_final_msg">صدÙ?ا Ù?زار Ù?Ù?ر در سراسر جÙ?اÙ? بÙ? دÙ?اÛ?Ù? Ú¯Ù?Ù?اگÙ?Ù? از Tor استÙ?ادÙ? Ù?Û? Ú©Ù?Ù?د: رÙ?زÙ?اÙ?Ù? Ù?Ù?Û?سÙ?ا Ù? بÙ?اگرÙ?اØ? کارکÙ?اÙ? ØÙ?Ù?Ù? بشرØ? Ù?اÙ?Ù?راÙ? اÙ?تظاÙ?Û?Ø? سربازاÙ?Ø? شرکتÙ?اØ? Ø´Ù?رÙ?Ù?داÙ? دÙ?Ù?تÙ?اÛ? سرکÙ?بگرØ? Ù? Ø´Ù?رÙ?Ù?داÙ? عادÛ?Ø? Ù? ØاÙ?ا Ø´Ù?ا Ù?Û?ز Ø¢Ù?ادÙ? استÙ?ادÙ? از Ø¢Ù? Ù?ستÛ?د!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-ru/strings.xml
+===================================================================
+--- res/values-ru/strings.xml (revision 24406)
++++ res/values-ru/strings.xml (working copy)
+@@ -95,7 +95,7 @@
+
+ <string name="wizard_tips_tricks">Orbot-задейÑ?Ñ?вованнÑ?е пÑ?иложениÑ?</string>
+ <string name="wizard_tips_msg">Ð?Ñ? Ñ?овеÑ?Ñ?ем вам Ñ?каÑ?аÑ?Ñ? и иÑ?полÑ?зоваÑ?Ñ? пÑ?иложениÑ?, коÑ?оÑ?Ñ?е Ñ?меÑ?Ñ? Ñ?абоÑ?аÑ?Ñ? напÑ?Ñ?мÑ?Ñ? Ñ?еÑ?ез Orbot. Ð?ажмиÑ?е на кнопки ниже, Ñ?Ñ?обÑ? запÑ?Ñ?Ñ?иÑ?Ñ? пÑ?оÑ?еÑ?Ñ? Ñ?Ñ?Ñ?ановки.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Ð?безопаÑ?Ñ?е обмен мгновеннÑ?ми Ñ?ообÑ?ениÑ?ми длÑ? клиенÑ?ов в Android</string>
++ <string name="wizard_tips_otrchat">GibberBot - Ð?безопаÑ?Ñ?е обмен мгновеннÑ?ми Ñ?ообÑ?ениÑ?ми длÑ? клиенÑ?ов в Android</string>
+ <string name="wizard_tips_orweb">ORWEB (ТолÑ?ко длÑ? веÑ?Ñ?ии Android 1.x) - Ð?Ñ?аÑ?зеÑ?, Ñ?азÑ?абоÑ?аннÑ?й длÑ? обеÑ?пеÑ?ениÑ? безопаÑ?ноÑ?Ñ?и и длÑ? Orbot</string>
+ <string name="wizard_tips_proxy">Ð?аÑ?Ñ?Ñ?ойки пÑ?окÑ?и - Ñ?знайÑ?е как наÑ?Ñ?Ñ?оиÑ?Ñ? пÑ?иложениÑ? длÑ? Ñ?абоÑ?Ñ? Ñ? Orbot</string>
+
+@@ -109,7 +109,7 @@
+ <string name="wizard_final">Ð?Ñ?огÑ?амма Orbot гоÑ?ова к иÑ?полÑ?зованиÑ?!</string>
+ <string name="wizard_final_msg">СоÑ?ни Ñ?Ñ?Ñ?Ñ?Ñ? лÑ?дей по вÑ?емÑ? миÑ?Ñ? иÑ?полÑ?зÑ?Ñ?Ñ? Tor по Ñ?азлиÑ?нÑ?м пÑ?иÑ?инам: жÑ?Ñ?налиÑ?Ñ?Ñ? и блоггеÑ?Ñ?, акÑ?ивиÑ?Ñ?Ñ? оÑ?ганизаÑ?ий, вÑ?Ñ?Ñ?Ñ?паÑ?Ñ?иÑ? в заÑ?иÑ?Ñ? пÑ?ав Ñ?еловека, Ñ?Ñ?дебнÑ?е иÑ?полниÑ?ели, Ñ?олдаÑ?Ñ?, коÑ?поÑ?аÑ?ии, гÑ?аждане Ñ?Ñ?Ñ?ан Ñ? Ñ?епÑ?еÑ?Ñ?ивнÑ?м Ñ?ежимом, и пÑ?оÑ?Ñ?Ñ?е лÑ?ди... а Ñ?епеÑ?Ñ? гоÑ?овÑ? и вÑ?!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-de/strings.xml
+===================================================================
+--- res/values-de/strings.xml (revision 24406)
++++ res/values-de/strings.xml (working copy)
+@@ -97,7 +97,7 @@
+
+ <string name="wizard_tips_tricks">Programme, für die Orbot aktiviert ist</string>
+ <string name="wizard_tips_msg">Wir raten Ihnen Programme herunterzuladen & zu nutzen, die wissen, wie sie sich direkt mit Orbot verbinden. Klicken Sie zum Installieren auf den Knopf unten.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Ein sicheres Instant-Messaging-Programm für Android</string>
++ <string name="wizard_tips_otrchat">GibberBot - Ein sicheres Instant-Messaging-Programm für Android</string>
+ <string name="wizard_tips_orweb">ORWEB (Nur Android 1.x) - Ein für Privatsphäre & Orbot entworfener Browser</string>
+ <string name="wizard_tips_proxy">Proxy-Einstellungen - Lernen Sie Anwendungen so zu konfigurieren, dass sie mit Orbot zusammenarbeiten.</string>
+
+@@ -115,7 +115,7 @@
+ <string name="wizard_final">Orbot ist bereit!</string>
+ <string name="wizard_final_msg">Hunderttausende Menschen auf der ganzen Welt nutzen Tor aus einer Vielzahl von Gründen: Journalisten und Blogger, Menschenrechtsaktivisten, Strafverfolgungsbehörden, Soldaten, Unternehmen, Bürger repressiver Regime und ganz normale Menschen... und sind Sie ebenfalls bereit!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values/strings.xml
+===================================================================
+--- res/values/strings.xml (revision 24406)
++++ res/values/strings.xml (working copy)
+@@ -94,7 +94,7 @@
+
+ <string name="wizard_tips_tricks">Orbot-enabled Apps</string>
+ <string name="wizard_tips_msg">We encourage you to download & use apps that know how to connect directly to Orbot. Click on the buttons below to install.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Secure instant messaging client for Android</string>
++ <string name="wizard_tips_otrchat">Gibberbot - Secure instant messaging client for Android</string>
+ <string name="wizard_tips_orweb">ORWEB (Android 1.x Only) - Browser designed for privacy & for Orbot</string>
+ <string name="wizard_tips_proxy">Proxy Settings - Learn how to configure apps to work with Orbot</string>
+
+@@ -108,7 +108,7 @@
+ <string name="wizard_final">Orbot is ready!</string>
+ <string name="wizard_final_msg">Hundreds of thousands of people around the world use Tor for a wide variety of reasons: journalists and bloggers, human rights workers, law enforcement officers, soldiers, corporations, citizens of repressive regimes, and just ordinary citizens... and now you are ready to, as well!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-ar/strings.xml
+===================================================================
+--- res/values-ar/strings.xml (revision 24406)
++++ res/values-ar/strings.xml (working copy)
+@@ -97,7 +97,7 @@
+
+ <string name="wizard_tips_tricks">تطبÙ?Ù?ات Ù?Ù?Ù?ئة Ù?Ø£Ù?ربÙ?ت</string>
+ <string name="wizard_tips_msg">Ù?شجعÙ?Ù? عÙ?Ù? تØÙ?Ù?Ù? Ù?استخداÙ? اÙ?تطبÙ?Ù?ات اÙ?تÙ? تعرÙ? Ù?Ù?Ù?Ù?Ø© اÙ?اتصاÙ? Ù?باشرة بأÙ?ربÙ?ت. اضغط عÙ?Ù? اÙ?أزرار Ù?Ù? اÙ?أسÙ?Ù? Ù?Ù?تثبÙ?ت.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - عÙ?Ù?Ù? اÙ?تراسÙ? اÙ?Ù?Ù?رÙ? اÙ?Ø¢Ù?Ù? Ù?Ù?Ø£Ù?درÙ?Ù?د</string>
++ <string name="wizard_tips_otrchat">GibberBot - عÙ?Ù?Ù? اÙ?تراسÙ? اÙ?Ù?Ù?رÙ? اÙ?Ø¢Ù?Ù? Ù?Ù?Ø£Ù?درÙ?Ù?د</string>
+ <string name="wizard_tips_orweb">ORWEB (Ø£Ù?درÙ?Ù?د 1.x Ù?Ù?Ø·) - Ù?تصÙ?Ø Ù?صÙ?Ù?Ù? Ù?Ù?خصÙ?صÙ?Ø© Ù?Ø£Ù?ربÙ?ت </string>
+ <string name="wizard_tips_proxy">إعدادات اÙ?Ù?Ù?Ù?Ù? - تعÙ?Ù? Ù?Ù?Ù?Ù?Ø© تÙ?Ù?Ù?Ù? اÙ?تطبÙ?Ù?ات Ù?تعÙ?Ù? Ù?ع Ø£Ù?ربÙ?ت</string>
+
+@@ -115,7 +115,7 @@
+ <string name="wizard_final">Ø£Ù?ربÙ?ت جاÙ?ز!</string>
+ <string name="wizard_final_msg">Ù?ئات اÙ?Ø¢Ù?اÙ? Ù?Ù? اÙ?Ù?اس Ù?Ù? جÙ?Ù?ع Ø£Ù?Øاء اÙ?عاÙ?Ù? Ù?ستخدÙ?Ù?Ù? تÙ?ر Ù?أسباب عدÙ?دة: اÙ?صØÙ?Ù?Ù?Ù? Ù?اÙ?Ù?دÙ?Ù?Ù?Ù?Ø? Ù?اÙ?عاÙ?Ù?Ù?Ù? Ù?Ù? Ù?جاÙ? ØÙ?Ù?Ù? اÙ?Ø¥Ù?ساÙ?Ø? Ù?اÙ?جÙ?Ù?د Ù?اÙ?شرÙ?ات Ù?اÙ?Ù?Ù?اطÙ?Ù?Ù? Ù?Ù? اÙ?Ø£Ù?ظÙ?Ø© اÙ?Ù?Ù?عÙ?Ø©Ø? Ù?اÙ?Ù?Ù?اطÙ?Ù?Ù? اÙ?عادÙ?Ù?Ù? ... Ù?اÙ?Ø¢Ù? Ø£Ù?ت Ù?ستعد Ù?Ø£Ù? تستخدÙ?Ù? Ù?Ø°Ù?Ù?!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-es/strings.xml
+===================================================================
+--- res/values-es/strings.xml (revision 24406)
++++ res/values-es/strings.xml (working copy)
+@@ -97,7 +97,7 @@
+
+ <string name="wizard_tips_tricks">Aplicaciones activas en Orbot</string>
+ <string name="wizard_tips_msg">Le invitamos a descargar y utilizar aplicaciones que saben cómo conectarse directamente a Orbot. Haga clic en los botones a continuación para Instalar.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Cliente de mensajerÃa instantánea seguro para Android</string>
++ <string name="wizard_tips_otrchat">GibberBot - Cliente de mensajerÃa instantánea seguro para Android</string>
+ <string name="wizard_tips_orweb">ORWEB (Sólo Android 1.x) - Navegador diseñado para la privacidad y para Orbot</string>
+ <string name="wizard_tips_proxy">Configuraciones Proxy - Aprenda cómo configurar aplicaciones para que trabajen con Orbot</string>
+
+@@ -115,7 +115,7 @@
+ <string name="wizard_final">¡Orbot está listo!</string>
+ <string name="wizard_final_msg">Cientos de miles de personas alrededor del mundo usan Tor por una amplia variedad de razones: periodistas y bloggers, trabajadores de los derechos humanos, oficiales de policÃa, soldados, corporaciones, ciudadanos de regÃmenes represivos y ciudadanos ordinarios... ¡y ahora también lo estás!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-mk/strings.xml
+===================================================================
+--- res/values-mk/strings.xml (revision 24406)
++++ res/values-mk/strings.xml (working copy)
+@@ -95,7 +95,7 @@
+
+ <string name="wizard_tips_tricks">Ð?Ñ?боÑ?-вклÑ?Ñ?ени апликаÑ?ии</string>
+ <string name="wizard_tips_msg">Ð?и пÑ?епоÑ?аÑ?Ñ?ваме да пÑ?езимаÑ?е и коÑ?иÑ?Ñ?иÑ?е апликаÑ?ии кои Ñ?Ñ?о знааÑ? како диÑ?екÑ?но да Ñ?е повÑ?заÑ? Ñ?о Ð?Ñ?боÑ?. Ð?Ñ?иÑ?иÑ?неÑ?е на копÑ?иÑ?аÑ?а подолÑ? за инÑ?Ñ?алиÑ?аÑ?е.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Ð?езбеден клиенÑ? за инÑ?Ñ?анÑ?-поÑ?аки за Ð?ндÑ?оид</string>
++ <string name="wizard_tips_otrchat">GibberBot - Ð?езбеден клиенÑ? за инÑ?Ñ?анÑ?-поÑ?аки за Ð?ндÑ?оид</string>
+ <string name="wizard_tips_orweb">ORWEB (Ñ?амо Ð?ндÑ?оид 1.x) - Ð?Ñ?аÑ?Ñ?еÑ? дизаÑ?ниÑ?ан за пÑ?иваÑ?ноÑ?Ñ? и за Ð?Ñ?боÑ?</string>
+ <string name="wizard_tips_proxy">Ð?одеÑ?Ñ?ваÑ?а на пÑ?окÑ?и - Ð?аÑ?Ñ?еÑ?е како да ги конÑ?игÑ?Ñ?иÑ?аÑ?е апликаÑ?ииÑ?е да Ñ?абоÑ?аÑ? Ñ?о Ð?Ñ?боÑ?</string>
+
+@@ -109,7 +109,7 @@
+ <string name="wizard_final">Ð?Ñ?боÑ? е Ñ?пÑ?емен!</string>
+ <string name="wizard_final_msg">СÑ?оÑ?иÑ?и илÑ?ади лÑ?Ñ?е низ Ñ?елиоÑ? СвеÑ? го коÑ?иÑ?Ñ?аÑ? ТоÑ? од многÑ? Ñ?азлиÑ?ни пÑ?иÑ?ини: новинаÑ?и и блогеÑ?и, боÑ?Ñ?и за Ñ?овекови пÑ?ава, полиÑ?аÑ?Ñ?и, воÑ?ниÑ?и, коÑ?поÑ?аÑ?ии, гÑ?аÑ?ани на Ñ?епÑ?еÑ?ивни Ñ?ежими, и обиÑ?ни гÑ?аÑ?ани... а Ñ?ега и Ð?ие Ñ?Ñ?е Ñ?пÑ?емин да го коÑ?иÑ?Ñ?иÑ?е!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-nl/strings.xml
+===================================================================
+--- res/values-nl/strings.xml (revision 24406)
++++ res/values-nl/strings.xml (working copy)
+@@ -97,7 +97,7 @@
+
+ <string name="wizard_tips_tricks">Orbot-beschikbare Apps</string>
+ <string name="wizard_tips_msg">We raden u aan om te apps te downloaden welke zich zich automatisch verbinden met Orbot. Klik op de buttons hier beneden om te installeren.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Veilige instant message programma voor Android</string>
++ <string name="wizard_tips_otrchat">GibberBot - Veilige instant message programma voor Android</string>
+ <string name="wizard_tips_orweb">ORWEB (Alleen Android 1.x) - Browser gemaakt voor privacy & voor Orbot</string>
+ <string name="wizard_tips_proxy">Proxy Instellingen - Leer hoe u uw apps kunt configureren voor Orbot</string>
+
+@@ -114,7 +114,7 @@
+ <string name="wizard_final">Orbot is klaar!</string>
+ <string name="wizard_final_msg">Honderdduizenden verschillende mensen over de wereld gebruiken Tor, zoals: journalisten, bloggers, mensen rechten medewerkers, soldaten, bedrijven, burgers met onderdrukte religies, en natuurlijk normale mensen... En nu bent u ook klaar om te gaan!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/values-pl/strings.xml
+===================================================================
+--- res/values-pl/strings.xml (revision 24406)
++++ res/values-pl/strings.xml (working copy)
+@@ -95,7 +95,7 @@
+
+ <string name="wizard_tips_tricks">Aplikacje skonfigurowane dla Orbota</string>
+ <string name="wizard_tips_msg">ZachÄ?camy do pobierania i używania aplikacji, które wiedzÄ?, jak Å?Ä?czyÄ? siÄ? bezpoÅ?rednio z Orbotem. Kliknij na poniższe przyciski, by zainstalowaÄ?.</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Bezpieczny klieny rozmów dla Androida</string>
++ <string name="wizard_tips_otrchat">GibberBot - Bezpieczny klieny rozmów dla Androida</string>
+ <string name="wizard_tips_orweb">ORWEB (tylko Android 1.x) - PrzeglÄ?darka zaprojektowana do prywatnoÅ?ci i dla Orbota</string>
+ <string name="wizard_tips_proxy">Ustawienia Proxy - NDowiedz siÄ?, jak konfiguroaÄ? aplikacje do wspóÅ?pracy z Orbotem</string>
+
+@@ -109,7 +109,7 @@
+ <string name="wizard_final">Orbot jest gotowy!</string>
+ <string name="wizard_final_msg">Setki tysiÄ?cy ludzi na caÅ?ym Å?wiecie używajÄ? Tora z różnych powodów: dziennikarze i blogerzy, dziaÅ?acze na rzecz praw czÅ?owieka, stróże prawa, żoÅ?nierze, korporacje, obywatele represyjnych reżimów i zwykli obywatele... teraz Ty też możesz!</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: res/layout/layout_wizard_tips.xml
+===================================================================
+--- res/layout/layout_wizard_tips.xml (revision 24406)
++++ res/layout/layout_wizard_tips.xml (working copy)
+@@ -17,7 +17,7 @@
+
+ <TextView android:text="@string/wizard_tips_msg" android:layout_gravity="left" android:textColor="#ffffff" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
+
+-<Button android:text="@string/wizard_tips_otrchat" android:layout_gravity="left" android:drawableLeft="@drawable/icon_otrchat" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOtrchat" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
++<Button android:text="@string/wizard_tips_otrchat" android:layout_gravity="left" android:drawableLeft="@drawable/ic_launcher_gibberbot" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOtrchat" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
+
+ <Button android:text="@string/wizard_tips_orweb" android:drawableLeft="@drawable/icon_orweb" android:layout_marginTop="10px" android:id="@+id/WizardRootButtonInstallOrweb" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
+
+Index: res/values-zh/strings.xml
+===================================================================
+--- res/values-zh/strings.xml (revision 24406)
++++ res/values-zh/strings.xml (working copy)
+@@ -95,7 +95,7 @@
+
+ <string name="wizard_tips_tricks">å?¯ç?¨ Orbot ç??åº?ç?¨ç¨?åº?</string>
+ <string name="wizard_tips_msg">æ??们建议æ?¨ä¸?è½½å??使ç?¨è?½ç?´æ?¥è¿?æ?¥å?° Orbot ç??åº?ç?¨ç¨?åº?ã??ç?¹å?»ä»¥ä¸?æ??é?®å®?è£?ã??</string>
+- <string name="wizard_tips_otrchat">OTRCHAT - Android ä¸?ç??å®?å?¨å?³æ?¶æ¶?æ?¯å®¢æ?·ç«¯</string>
++ <string name="wizard_tips_otrchat">GibberBot - Android ä¸?ç??å®?å?¨å?³æ?¶æ¶?æ?¯å®¢æ?·ç«¯</string>
+ <string name="wizard_tips_orweb">ORWEB (ä»? Android 1.x) - ç??é??é??ç§?设计ç??æµ?è§?å?¨</string>
+ <string name="wizard_tips_proxy">代ç??设置 - å¦ä¹ å¦?ä½?é??ç½®åº?ç?¨ç¨?åº?使ç?¨ Orbot</string>
+
+@@ -108,7 +108,7 @@
+ <string name="wizard_final">Orbot 已就绪�</string>
+ <string name="wizard_final_msg">æ?°ä»¥ä¸?计ç??å??å?½äººä»¬å? 为å??ç§?å??å? 使ç?¨ Torï¼?è®°è??ã??人æ??å·¥ä½?è??ã??æ³?å¾?å·¥ä½?è??ã??士å?µã??å?¬å?¸ã??è¿«äº?å®?é??æ??å?µä½¿ç?¨ç??å¸?æ°?ï¼?å½?ç?¶ä¹?æ??æ?®é??ç??å¸?æ°?ã??ç?°å?¨ä½ ä¹?å?³å°?æ??为å?¶ä¸ç??ä¸?å??ï¼?</string>
+
+- <string name="otrchat_apk_url">https://guardianproject.info/getgibber</string>
++ <string name="otrchat_apk_url">market://search?q=pname:info.guardianproject.otr.app.im</string>
+ <string name="orweb_apk_url">https://guardianproject.info/getorweb</string>
+
+ <!-- END Welcome Wizard strings (DJH) -->
+Index: .classpath
+===================================================================
+--- .classpath (revision 24406)
++++ .classpath (working copy)
+@@ -1,9 +1,9 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <classpath>
+- <classpathentry kind="src" path="src"/>
+- <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+ <classpathentry kind="lib" path="libs/asocks.jar"/>
+ <classpathentry kind="lib" path="libs/jtorctrl.jar"/>
++ <classpathentry kind="src" path="src"/>
++ <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="output" path="bin"/>
+ </classpath>
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits