multiple fixes for status check and new transproxy calls

- update to the new transproxy selective calls
- improve status resume/check code
This commit is contained in:
Nathan Freitas 2014-08-07 15:34:16 -04:00
parent 6955c44e36
commit 3e58ee9b75
1 changed files with 34 additions and 32 deletions

View File

@ -52,6 +52,7 @@ import org.torproject.android.R;
import org.torproject.android.TorConstants;
import org.torproject.android.Utils;
import org.torproject.android.settings.AppManager;
import org.torproject.android.settings.TorifiedApp;
import android.annotation.SuppressLint;
import android.app.Application;
@ -172,15 +173,14 @@ public class TorService extends Service implements TorServiceConstants, TorConst
mLastProcessId = initControlConnection(1);
if (mLastProcessId != -1)
if (mLastProcessId != -1 && conn != null)
{
sendCallbackLogMessage (getString(R.string.found_existing_tor_process));
String state = conn.getInfo("dormant");
if (state != null && Integer.parseInt(state) == 0)
currentStatus = STATUS_ON;
else
currentStatus = STATUS_CONNECTING;
String msg = conn.getInfo("status/circuit-established");
sendCallbackLogMessage(msg);
currentStatus = STATUS_ON;
return true;
}
@ -799,19 +799,26 @@ public class TorService extends Service implements TorServiceConstants, TorConst
debug ("Transparent Proxying: clearing existing rules...");
//clear rules first
mTransProxy.clearTransparentProxyingAll(this);
// mTransProxy.clearTransparentProxyingAll(this);
if(proxyAll)
{
// showToolbarNotification(getString(R.string.setting_up_full_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
code = mTransProxy.setTransparentProxyingAll(this);
//clear existing rules
//code = mTransProxy.setTransparentProxyingAll(this, false);
code = mTransProxy.setTransparentProxyingAll(this, true);
}
else
{
//showToolbarNotification(getString(R.string.setting_up_app_based_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor);
ArrayList<TorifiedApp> apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext()));
//clear exiting rules
//code = mTransProxy.setTransparentProxyingByApp(this,apps, false);
code = mTransProxy.setTransparentProxyingByApp(this,AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext())));
code = mTransProxy.setTransparentProxyingByApp(this,apps, true);
}
@ -856,7 +863,13 @@ public class TorService extends Service implements TorServiceConstants, TorConst
if (mTransProxy == null)
mTransProxy = new TorTransProxy(this, fileXtables);
mTransProxy.clearTransparentProxyingAll(this);
if (mTransProxyAll)
mTransProxy.setTransparentProxyingAll(this, false);
else
{
ArrayList<TorifiedApp> apps = AppManager.getApps(this, TorServiceUtils.getSharedPrefs(getApplicationContext()));
mTransProxy.setTransparentProxyingByApp(this, apps, false);
}
return true;
}
@ -986,24 +999,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{
int i = 0;
int controlPort = -1;
File fileCookie = new File(appCacheHome, TOR_CONTROL_COOKIE);
if (conn != null)
{
if (fileCookie.exists())
{
byte[] cookie = new byte[(int)fileCookie.length()];
DataInputStream fis = new DataInputStream(new FileInputStream(fileCookie));
fis.read(cookie);
fis.close();
conn.authenticate(cookie);
String torProcId = conn.getInfo("process/pid");
return Integer.parseInt(torProcId);
}
}
int attempt = 0;
@ -1025,7 +1020,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
logNotice( "SUCCESS connected to Tor control port");
fileCookie = new File(appCacheHome, TOR_CONTROL_COOKIE);
File fileCookie = new File(appCacheHome, TOR_CONTROL_COOKIE);
if (fileCookie.exists())
{
@ -1052,8 +1047,15 @@ public class TorService extends Service implements TorServiceConstants, TorConst
File fileLog2 = new File(getFilesDir(),"orbot-tor-log.txt");
conn.setConf("Log", "debug file " + fileLog2.getCanonicalPath());
}
String state = conn.getInfo("dormant");
if (state != null && Integer.parseInt(state) == 0)
currentStatus = STATUS_ON;
else
currentStatus = STATUS_CONNECTING;
return Integer.parseInt(torProcId);
}
@ -1075,7 +1077,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
try {
logNotice("waiting...");
Thread.sleep(5000); }
Thread.sleep(1000); }
catch (Exception e){}
}
@ -1838,8 +1840,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
logNotice(context.getString(R.string.network_connectivity_is_good_waking_tor_up_));
showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor);
if (mHasRoot && mEnableTransparentProxy)
enableTransparentProxy(mTransProxyAll, mTransProxyTethering);
//if (mHasRoot && mEnableTransparentProxy)
//enableTransparentProxy(mTransProxyAll, mTransProxyTethering);
}
}