added tethering support
This commit is contained in:
parent
422ba4bbcd
commit
ddb4793b0a
File diff suppressed because it is too large
Load Diff
|
@ -1,37 +0,0 @@
|
|||
package org.torproject.android.boot;
|
||||
|
||||
import org.torproject.android.service.ITorService;
|
||||
import org.torproject.android.service.TorService;
|
||||
import org.torproject.android.service.TorServiceConstants;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
|
||||
public class OnbootBroadcastReceiver extends BroadcastReceiver implements TorServiceConstants {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
|
||||
Log.d(TAG, "received on boot notification");
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
|
||||
boolean startOnBoot = prefs.getBoolean("pref_start_boot",true);
|
||||
|
||||
Log.d(TAG, "startOnBoot:" + startOnBoot);
|
||||
|
||||
if (startOnBoot)
|
||||
{
|
||||
Intent serviceIntent = new Intent(context,TorService.class);
|
||||
serviceIntent.setAction("onboot");
|
||||
context.startService(serviceIntent);
|
||||
}
|
||||
|
||||
//bindService(new Intent(ITorService.class.getName()),
|
||||
// mConnection, Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
|
||||
/* Copyright (c) 2009-2011, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */
|
||||
/* See LICENSE for licensing information */
|
||||
package org.torproject.android.service;
|
||||
|
||||
|
@ -545,6 +545,7 @@ public class TorService extends Service implements TorServiceConstants, Runnable
|
|||
boolean enableTransparentProxy = prefs.getBoolean("pref_transparent", false);
|
||||
boolean transProxyAll = prefs.getBoolean("pref_transparent_all", false);
|
||||
boolean transProxyPortFallback = prefs.getBoolean("pref_transparent_port_fallback", false);
|
||||
boolean transProxyTethering = prefs.getBoolean("pref_transparent_tethering", false);
|
||||
|
||||
TorService.logMessage ("Transparent Proxying: " + enableTransparentProxy);
|
||||
|
||||
|
@ -581,6 +582,7 @@ public class TorService extends Service implements TorServiceConstants, Runnable
|
|||
showAlert("Status", "Setting up app-based transparent proxying...");
|
||||
code = TorTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TorService.logMessage ("TorTransProxy resp code: " + code);
|
||||
|
@ -588,11 +590,22 @@ public class TorService extends Service implements TorServiceConstants, Runnable
|
|||
if (code == 0)
|
||||
{
|
||||
showAlert("Status", "Transparent proxying ENABLED");
|
||||
|
||||
|
||||
|
||||
if (transProxyTethering)
|
||||
{
|
||||
showAlert("Status", "TransProxy enabled for Tethering!");
|
||||
|
||||
TorTransProxy.enableTetheringRules(this);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
showAlert("Status", "WARNING: error starting transparent proxying!");
|
||||
}
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
|
|
|
@ -313,14 +313,12 @@ public class TorTransProxy implements TorServiceConstants {
|
|||
return code;
|
||||
}
|
||||
|
||||
public static int enableWifiHotspotRules (Context context) throws Exception
|
||||
public static int enableTetheringRules (Context context) throws Exception
|
||||
{
|
||||
|
||||
boolean runRoot = true;
|
||||
boolean waitFor = true;
|
||||
|
||||
//redirectDNSResolvConf(); //not working yet
|
||||
|
||||
String ipTablesPath = new File(context.getDir("bin", 0),"iptables").getAbsolutePath();
|
||||
|
||||
StringBuilder script = new StringBuilder();
|
||||
|
@ -328,25 +326,24 @@ public class TorTransProxy implements TorServiceConstants {
|
|||
StringBuilder res = new StringBuilder();
|
||||
int code = -1;
|
||||
|
||||
script.append(ipTablesPath);
|
||||
script.append(" -I FORWARD");
|
||||
script.append(" -m state --state ESTABLISHED,RELATED -j ACCEPT");
|
||||
script.append(" || exit\n");
|
||||
|
||||
script.append(ipTablesPath);
|
||||
script.append(" -I FORWARD");
|
||||
script.append(" -j ACCEPT");
|
||||
script.append(" || exit\n");
|
||||
|
||||
/*
|
||||
script.append(ipTablesPath);
|
||||
script.append(" -P FORWARD DROP");
|
||||
script.append(" || exit\n");
|
||||
*/
|
||||
|
||||
script.append(ipTablesPath);
|
||||
script.append(" -t nat -I POSTROUTING -j MASQUERADE");
|
||||
script.append(" || exit\n");
|
||||
String[] hwinterfaces = {"usb0","wl0.1"};
|
||||
|
||||
for (int i = 0; i < hwinterfaces.length; i++)
|
||||
{
|
||||
script.append(ipTablesPath);
|
||||
script.append(" -t nat -A PREROUTING -i ");
|
||||
script.append(hwinterfaces[i]);
|
||||
script.append(" -p udp --dport 53 -j REDIRECT --to-ports ");
|
||||
script.append(TOR_DNS_PORT);
|
||||
script.append(" || exit\n");
|
||||
|
||||
script.append(ipTablesPath);
|
||||
script.append(" -t nat -A PREROUTING -i ");
|
||||
script.append(hwinterfaces[i]);
|
||||
script.append(" -p tcp -j REDIRECT --to-ports ");
|
||||
script.append(TOR_TRANSPROXY_PORT);
|
||||
script.append(" || exit\n");
|
||||
}
|
||||
|
||||
String[] cmdAdd = {script.toString()};
|
||||
|
||||
|
@ -374,8 +371,6 @@ public class TorTransProxy implements TorServiceConstants {
|
|||
|
||||
purgeIptables(context);
|
||||
|
||||
enableWifiHotspotRules(context);
|
||||
|
||||
int torUid = context.getApplicationInfo().uid;
|
||||
|
||||
// Set up port redirection
|
||||
|
|
Loading…
Reference in New Issue