more tuning of Tor service startup and status checking
This commit is contained in:
parent
9c4c3496f1
commit
8ee5e9e0fb
|
@ -17,7 +17,7 @@ import org.torproject.android.wizard.ChooseLocaleWizardActivity;
|
|||
import org.torproject.android.wizard.TipsAndTricks;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
|
@ -101,10 +101,10 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
|
||||
}
|
||||
|
||||
ProgressDialog mProgressDialog;
|
||||
|
||||
private void startService ()
|
||||
{
|
||||
appendLogTextAndScroll("starting Tor background service... ");
|
||||
|
||||
Intent torService = new Intent(this, TorService.class);
|
||||
startService(torService);
|
||||
|
@ -112,7 +112,9 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
bindService(torService,
|
||||
mConnection, Context.BIND_AUTO_CREATE);
|
||||
|
||||
|
||||
appendLogTextAndScroll("starting Tor background service... ");
|
||||
mProgressDialog = ProgressDialog.show(this, "", getString(R.string.status_starting_up), true);
|
||||
|
||||
}
|
||||
|
||||
private void doLayout ()
|
||||
|
@ -124,11 +126,8 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
lblStatus.setOnLongClickListener(this);
|
||||
imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
|
||||
imgStatus.setOnLongClickListener(this);
|
||||
|
||||
imgStatus.setOnTouchListener(this);
|
||||
|
||||
imgStatus.setEnabled(false);
|
||||
|
||||
lblStatus.setText("Initializing the application...");
|
||||
|
||||
downloadText = (TextView)findViewById(R.id.trafficDown);
|
||||
|
@ -983,7 +982,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
|
||||
// this is a bit of a strange/old/borrowed code/design i used to change the service state
|
||||
// not sure it really makes sense when what we want to say is just "startTor"
|
||||
mService.setProfile(TorServiceConstants.PROFILE_ON); //this means turn on
|
||||
mService.setProfile(TorServiceConstants.STATUS_ON); //this means turn on
|
||||
|
||||
//here we update the UI which is a bit sloppy and mixed up code wise
|
||||
//might be best to just call updateStatus() instead of directly manipulating UI in this method - yep makes sense
|
||||
|
@ -1010,7 +1009,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
{
|
||||
if (mService != null)
|
||||
{
|
||||
mService.setProfile(TorServiceConstants.PROFILE_OFF);
|
||||
mService.setProfile(TorServiceConstants.STATUS_OFF);
|
||||
Message msg = mHandler.obtainMessage(TorServiceConstants.DISABLE_TOR_MSG);
|
||||
mHandler.sendMessage(msg);
|
||||
|
||||
|
@ -1200,6 +1199,9 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
public void onServiceConnected(ComponentName className,
|
||||
IBinder service) {
|
||||
|
||||
if (mProgressDialog != null && mProgressDialog.isShowing())
|
||||
mProgressDialog.dismiss();
|
||||
|
||||
appendLogTextAndScroll("Tor background service connected.");
|
||||
|
||||
// This is called when the connection with the service has been
|
||||
|
@ -1208,10 +1210,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
// service through an IDL interface, so get a client-side
|
||||
// representation of that from the raw service object.
|
||||
mService = ITorService.Stub.asInterface(service);
|
||||
|
||||
|
||||
imgStatus.setEnabled(true);
|
||||
|
||||
// We want to monitor the service for as long as we are
|
||||
// connected to it.
|
||||
try {
|
||||
|
@ -1233,6 +1232,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic
|
|||
|
||||
}
|
||||
|
||||
|
||||
public void onServiceDisconnected(ComponentName className) {
|
||||
|
||||
appendLogTextAndScroll("Tor background service disconnected.");
|
||||
|
|
|
@ -83,7 +83,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
|
||||
public static boolean ENABLE_DEBUG_LOG = false;
|
||||
|
||||
private static int currentStatus = STATUS_OFF;
|
||||
private int mCurrentStatus = STATUS_OFF;
|
||||
|
||||
private final static int CONTROL_SOCKET_TIMEOUT = 0;
|
||||
|
||||
|
@ -183,7 +183,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
{
|
||||
sendCallbackLogMessage (getString(R.string.found_existing_tor_process));
|
||||
|
||||
currentStatus = STATUS_ON;
|
||||
mCurrentStatus = STATUS_ON;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -217,7 +217,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
public int getTorStatus ()
|
||||
{
|
||||
|
||||
return currentStatus;
|
||||
return mCurrentStatus;
|
||||
|
||||
}
|
||||
|
||||
|
@ -340,12 +340,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
|
||||
try
|
||||
{
|
||||
|
||||
if (fileTor == null)
|
||||
initBinariesAndDirectories();
|
||||
|
||||
updateSettings ();
|
||||
|
||||
initialize();
|
||||
new Thread (new TorStarter(intent)).start();
|
||||
|
||||
return Service.START_STICKY;
|
||||
|
@ -386,7 +381,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
//if this is a start on boot launch turn tor on
|
||||
if (mIntent != null && mIntent.getAction()!=null && mIntent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
|
||||
{
|
||||
setTorProfile(PROFILE_ON);
|
||||
setTorProfile(STATUS_ON);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -422,7 +417,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
//stop the foreground priority and make sure to remove the persistant notification
|
||||
stopForeground(true);
|
||||
|
||||
currentStatus = STATUS_OFF;
|
||||
mCurrentStatus = STATUS_OFF;
|
||||
|
||||
if (mHasRoot && mEnableTransparentProxy)
|
||||
disableTransparentProxy();
|
||||
|
@ -744,7 +739,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
public void startTor () throws Exception
|
||||
{
|
||||
|
||||
currentStatus = STATUS_CONNECTING;
|
||||
mCurrentStatus = STATUS_CONNECTING;
|
||||
|
||||
if (fileTor == null)
|
||||
initBinariesAndDirectories();
|
||||
|
@ -1127,7 +1122,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
conn.setConf("Log", "debug file " + fileLog2.getCanonicalPath());
|
||||
}*/
|
||||
|
||||
currentStatus = STATUS_CONNECTING;
|
||||
mCurrentStatus = STATUS_CONNECTING;
|
||||
|
||||
String confSocks = conn.getInfo("net/listeners/socks");
|
||||
StringTokenizer st = new StringTokenizer(confSocks," ");
|
||||
|
@ -1297,7 +1292,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
|
||||
// get several values
|
||||
|
||||
if (currentStatus == STATUS_CONNECTING)
|
||||
if (mCurrentStatus == STATUS_CONNECTING)
|
||||
{
|
||||
//Map vals = conn.getInfo(Arrays.asList(new String[]{
|
||||
// "status/bootstrap-phase", "status","version"}));
|
||||
|
@ -1317,7 +1312,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
catch (Exception e)
|
||||
{
|
||||
Log.d(TAG, "Unable to get Tor status from control port");
|
||||
currentStatus = STATUS_UNAVAILABLE;
|
||||
mCurrentStatus = STATUS_UNAVAILABLE;
|
||||
}
|
||||
|
||||
}*/
|
||||
|
@ -1359,16 +1354,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public int getProfile() throws RemoteException {
|
||||
//return mProfile;
|
||||
return PROFILE_ON;
|
||||
}
|
||||
|
||||
public void setTorProfile(int profile) {
|
||||
|
||||
if (profile == PROFILE_ON)
|
||||
if (profile == STATUS_ON)
|
||||
{
|
||||
|
||||
sendCallbackStatusMessage (getString(R.string.status_starting_up));
|
||||
|
@ -1382,7 +1370,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
{
|
||||
|
||||
logException("Unable to start Tor: " + e.toString(),e);
|
||||
currentStatus = STATUS_OFF;
|
||||
mCurrentStatus = STATUS_OFF;
|
||||
showToolbarNotification(getString(R.string.unable_to_start_tor) + ": " + e.getMessage(), ERROR_NOTIFY_ID, R.drawable.ic_stat_notifyerr);
|
||||
stopTor();
|
||||
}
|
||||
|
@ -1393,7 +1381,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
|
||||
stopTor();
|
||||
|
||||
currentStatus = STATUS_OFF;
|
||||
mCurrentStatus = STATUS_OFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1405,7 +1393,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
|
||||
if (msg.indexOf(TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE)!=-1)
|
||||
{
|
||||
currentStatus = STATUS_ON;
|
||||
mCurrentStatus = STATUS_ON;
|
||||
|
||||
showToolbarNotification(getString(R.string.status_activated), NOTIFY_ID, R.drawable.ic_stat_tor);
|
||||
}
|
||||
|
@ -1550,8 +1538,8 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
else if(status.equals("BUILT"))
|
||||
{
|
||||
|
||||
if (currentStatus == STATUS_CONNECTING)
|
||||
currentStatus = STATUS_ON;
|
||||
if (mCurrentStatus == STATUS_CONNECTING)
|
||||
mCurrentStatus = STATUS_ON;
|
||||
|
||||
logNotice(sb.toString());
|
||||
|
||||
|
@ -1679,10 +1667,18 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
|
||||
public IBinder onBind(Intent intent) {
|
||||
|
||||
logNotice("Background service is bound. Status=" + mCurrentStatus);
|
||||
|
||||
return mBinder;
|
||||
}
|
||||
|
||||
public boolean checkAndInitImpl ()
|
||||
@Override
|
||||
public void onRebind(Intent intent) {
|
||||
|
||||
super.onRebind(intent);
|
||||
}
|
||||
|
||||
public boolean checkAndInitImpl ()
|
||||
{
|
||||
if (fileTor != null)
|
||||
{
|
||||
|
@ -1693,8 +1689,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
return true;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
logException("error init Tor", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2026,7 +2021,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst
|
|||
mBinder.saveConfiguration();
|
||||
}
|
||||
|
||||
if (currentStatus != STATUS_OFF)
|
||||
if (mCurrentStatus != STATUS_OFF)
|
||||
{
|
||||
if (!mConnectivity)
|
||||
{
|
||||
|
|
|
@ -71,9 +71,6 @@ public interface TorServiceConstants {
|
|||
public final static int STATUS_ON = 1;
|
||||
public final static int STATUS_CONNECTING = 2;
|
||||
|
||||
public final static int PROFILE_OFF = -1;
|
||||
public final static int PROFILE_ON = 1;
|
||||
|
||||
public static final int STATUS_MSG = 1;
|
||||
public static final int ENABLE_TOR_MSG = 2;
|
||||
public static final int DISABLE_TOR_MSG = 3;
|
||||
|
|
Loading…
Reference in New Issue