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.TorConstants;
import org.torproject.android.Utils; import org.torproject.android.Utils;
import org.torproject.android.settings.AppManager; import org.torproject.android.settings.AppManager;
import org.torproject.android.settings.TorifiedApp;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Application; import android.app.Application;
@ -172,15 +173,14 @@ public class TorService extends Service implements TorServiceConstants, TorConst
mLastProcessId = initControlConnection(1); mLastProcessId = initControlConnection(1);
if (mLastProcessId != -1) if (mLastProcessId != -1 && conn != null)
{ {
sendCallbackLogMessage (getString(R.string.found_existing_tor_process)); sendCallbackLogMessage (getString(R.string.found_existing_tor_process));
String state = conn.getInfo("dormant"); String msg = conn.getInfo("status/circuit-established");
if (state != null && Integer.parseInt(state) == 0) sendCallbackLogMessage(msg);
currentStatus = STATUS_ON;
else currentStatus = STATUS_ON;
currentStatus = STATUS_CONNECTING;
return true; return true;
} }
@ -799,19 +799,26 @@ public class TorService extends Service implements TorServiceConstants, TorConst
debug ("Transparent Proxying: clearing existing rules..."); debug ("Transparent Proxying: clearing existing rules...");
//clear rules first //clear rules first
mTransProxy.clearTransparentProxyingAll(this); // mTransProxy.clearTransparentProxyingAll(this);
if(proxyAll) if(proxyAll)
{ {
// showToolbarNotification(getString(R.string.setting_up_full_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor); // 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 else
{ {
//showToolbarNotification(getString(R.string.setting_up_app_based_transparent_proxying_), TRANSPROXY_NOTIFY_ID, R.drawable.ic_stat_tor); //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) if (mTransProxy == null)
mTransProxy = new TorTransProxy(this, fileXtables); 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; return true;
} }
@ -986,24 +999,6 @@ public class TorService extends Service implements TorServiceConstants, TorConst
{ {
int i = 0; int i = 0;
int controlPort = -1; 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; int attempt = 0;
@ -1025,7 +1020,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
logNotice( "SUCCESS connected to Tor control port"); 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()) if (fileCookie.exists())
{ {
@ -1052,8 +1047,15 @@ public class TorService extends Service implements TorServiceConstants, TorConst
File fileLog2 = new File(getFilesDir(),"orbot-tor-log.txt"); File fileLog2 = new File(getFilesDir(),"orbot-tor-log.txt");
conn.setConf("Log", "debug file " + fileLog2.getCanonicalPath()); 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); return Integer.parseInt(torProcId);
} }
@ -1075,7 +1077,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
try { try {
logNotice("waiting..."); logNotice("waiting...");
Thread.sleep(5000); } Thread.sleep(1000); }
catch (Exception e){} 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_)); 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); showToolbarNotification(getString(R.string.status_activated),NOTIFY_ID,R.drawable.ic_stat_tor);
if (mHasRoot && mEnableTransparentProxy) //if (mHasRoot && mEnableTransparentProxy)
enableTransparentProxy(mTransProxyAll, mTransProxyTethering); //enableTransparentProxy(mTransProxyAll, mTransProxyTethering);
} }
} }