expose start action via a BroadcastReceiver that any app can send to
This allows any app to broadcast an Intent to Orbot in order to make Orbot start in the background. closes #3117 https://dev.guardianproject.info/issues/3117
This commit is contained in:
parent
13d29878f9
commit
f433a5e655
|
@ -87,7 +87,15 @@
|
||||||
android:permission="org.torproject.android.MANAGE_TOR"
|
android:permission="org.torproject.android.MANAGE_TOR"
|
||||||
android:stopWithTask="false" >
|
android:stopWithTask="false" >
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
|
<receiver
|
||||||
|
android:name=".service.StartTorReceiver"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="org.torproject.android.intent.action.START" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
<receiver android:name="org.torproject.android.service.OnBootReceiver"
|
<receiver android:name="org.torproject.android.service.OnBootReceiver"
|
||||||
android:enabled="true" android:exported="true"
|
android:enabled="true" android:exported="true"
|
||||||
|
|
||||||
|
|
|
@ -924,11 +924,11 @@ public class OrbotMainActivity extends Activity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestTorRereadConfig() {
|
private void requestTorRereadConfig() {
|
||||||
sendIntentToService (TorServiceConstants.CMD_START);
|
sendIntentToService(TorServiceConstants.CMD_SIGNAL_HUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void promptStartVpnService ()
|
public void promptStartVpnService ()
|
||||||
{
|
{
|
||||||
LayoutInflater li = LayoutInflater.from(this);
|
LayoutInflater li = LayoutInflater.from(this);
|
||||||
|
@ -1127,7 +1127,7 @@ public class OrbotMainActivity extends Activity
|
||||||
imgStatus.setImageResource(R.drawable.torstarting);
|
imgStatus.setImageResource(R.drawable.torstarting);
|
||||||
lblStatus.setText(getString(R.string.status_starting_up));
|
lblStatus.setText(getString(R.string.status_starting_up));
|
||||||
|
|
||||||
sendIntentToService(TorServiceConstants.CMD_START);
|
sendIntentToService(TorServiceConstants.ACTION_START);
|
||||||
|
|
||||||
//we send a message here to the progressDialog i believe, but we can clarify that shortly
|
//we send a message here to the progressDialog i believe, but we can clarify that shortly
|
||||||
Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
|
Message msg = mStatusUpdateHandler.obtainMessage(STATUS_UPDATE);
|
||||||
|
|
|
@ -16,8 +16,8 @@ public class OnBootReceiver extends BroadcastReceiver {
|
||||||
Prefs.setContext(context);
|
Prefs.setContext(context);
|
||||||
if (Prefs.startOnBoot())
|
if (Prefs.startOnBoot())
|
||||||
{
|
{
|
||||||
startService(TorServiceConstants.CMD_START,context);
|
startService(TorServiceConstants.ACTION_START, context);
|
||||||
|
|
||||||
if (Prefs.useVpn())
|
if (Prefs.useVpn())
|
||||||
startVpnService(context);
|
startVpnService(context);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
package org.torproject.android.service;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
public class StartTorReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
/* sanitize the Intent before forwarding it to TorService */
|
||||||
|
if (TextUtils.equals(intent.getAction(), TorServiceConstants.ACTION_START)) {
|
||||||
|
Intent startTorService = new Intent(context, TorService.class);
|
||||||
|
startTorService.setAction(intent.getAction());
|
||||||
|
context.startService(startTorService);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -341,7 +341,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
|
||||||
String action = mIntent.getAction();
|
String action = mIntent.getAction();
|
||||||
|
|
||||||
if (action != null) {
|
if (action != null) {
|
||||||
if (action.equals(CMD_START)) {
|
if (action.equals(ACTION_START)) {
|
||||||
startTor();
|
startTor();
|
||||||
// stopTor() is called when the Service is destroyed
|
// stopTor() is called when the Service is destroyed
|
||||||
} else if (action.equals(CMD_SIGNAL_HUP)) {
|
} else if (action.equals(CMD_SIGNAL_HUP)) {
|
||||||
|
|
|
@ -67,6 +67,7 @@ public interface TorServiceConstants {
|
||||||
//control port
|
//control port
|
||||||
public final static String TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE = "Bootstrapped 100%";
|
public final static String TOR_CONTROL_PORT_MSG_BOOTSTRAP_DONE = "Bootstrapped 100%";
|
||||||
|
|
||||||
|
public final static String ACTION_START = "org.torproject.android.intent.action.START";
|
||||||
public final static String ACTION_STATUS = "org.torproject.android.intent.action.STATUS";
|
public final static String ACTION_STATUS = "org.torproject.android.intent.action.STATUS";
|
||||||
public final static String EXTRA_STATUS = "org.torproject.android.intent.extra.STATUS";
|
public final static String EXTRA_STATUS = "org.torproject.android.intent.extra.STATUS";
|
||||||
|
|
||||||
|
@ -79,7 +80,6 @@ public interface TorServiceConstants {
|
||||||
public final static String STATUS_STARTING = "STARTING";
|
public final static String STATUS_STARTING = "STARTING";
|
||||||
public final static String STATUS_STOPPING = "STOPPING";
|
public final static String STATUS_STOPPING = "STOPPING";
|
||||||
|
|
||||||
public static final String CMD_START = "start";
|
|
||||||
public static final String CMD_SIGNAL_HUP = "signal_hup";
|
public static final String CMD_SIGNAL_HUP = "signal_hup";
|
||||||
public static final String CMD_FLUSH = "flush";
|
public static final String CMD_FLUSH = "flush";
|
||||||
public static final String CMD_NEWNYM = "newnym";
|
public static final String CMD_NEWNYM = "newnym";
|
||||||
|
|
Loading…
Reference in New Issue