aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2017-04-20 09:33:41 +0200
committerTobias Brunner <tobias@strongswan.org>2017-07-03 10:27:50 +0200
commit59693d6c5641b67a7467f0ca2fdce986e4af7daf (patch)
treeff9fbcd120b6c7b501732c4208a84e425d4daec0
parentbef8bc3aac62e0327c4e333c473aed0f99333a2f (diff)
downloadstrongswan-59693d6c5641b67a7467f0ca2fdce986e4af7daf.tar.bz2
strongswan-59693d6c5641b67a7467f0ca2fdce986e4af7daf.tar.xz
android: Use a specific action to disconnect from the VPN
-rw-r--r--src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java26
-rw-r--r--src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java7
2 files changed, 21 insertions, 12 deletions
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java
index 9e9b6733a..4ebcb1432 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/CharonVpnService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2016 Tobias Brunner
+ * Copyright (C) 2012-2017 Tobias Brunner
* Copyright (C) 2012 Giuliano Grassi
* Copyright (C) 2012 Ralf Sager
* HSR Hochschule fuer Technik Rapperswil
@@ -64,6 +64,7 @@ import java.util.Locale;
public class CharonVpnService extends VpnService implements Runnable, VpnStateService.VpnStateListener
{
private static final String TAG = CharonVpnService.class.getSimpleName();
+ public static final String DISCONNECT_ACTION = "org.strongswan.android.CharonVpnService.DISCONNECT";
public static final String LOG_FILE = "charon.log";
public static final int VPN_STATE_NOTIFICATION_ID = 1;
@@ -119,18 +120,25 @@ public class CharonVpnService extends VpnService implements Runnable, VpnStateSe
{
if (intent != null)
{
- Bundle bundle = intent.getExtras();
- VpnProfile profile = null;
- if (bundle != null)
+ if (DISCONNECT_ACTION.equals(intent.getAction()))
{
- profile = mDataSource.getVpnProfile(bundle.getLong(VpnProfileDataSource.KEY_ID));
- if (profile != null)
+ setNextProfile(null);
+ }
+ else
+ {
+ Bundle bundle = intent.getExtras();
+ VpnProfile profile = null;
+ if (bundle != null)
{
- String password = bundle.getString(VpnProfileDataSource.KEY_PASSWORD);
- profile.setPassword(password);
+ profile = mDataSource.getVpnProfile(bundle.getLong(VpnProfileDataSource.KEY_ID));
+ if (profile != null)
+ {
+ String password = bundle.getString(VpnProfileDataSource.KEY_PASSWORD);
+ profile.setPassword(password);
+ }
}
+ setNextProfile(profile);
}
- setNextProfile(profile);
}
return START_NOT_STICKY;
}
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java
index 01c1452af..cd30049f7 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/logic/VpnStateService.java
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2012-2013 Tobias Brunner
- * Hochschule fuer Technik Rapperswil
+ * Copyright (C) 2012-2017 Tobias Brunner
+ * HSR Hochschule fuer Technik Rapperswil
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@@ -197,10 +197,11 @@ public class VpnStateService extends Service
* VpnService.Builder object the system binds to the service and keeps
* bound until the file descriptor of the TUN device is closed. thus
* calling stopService() here would not stop (destroy) the service yet,
- * instead we call startService() with an empty Intent which shuts down
+ * instead we call startService() with a specific action which shuts down
* the daemon (and closes the TUN device, if any) */
Context context = getApplicationContext();
Intent intent = new Intent(context, CharonVpnService.class);
+ intent.setAction(CharonVpnService.DISCONNECT_ACTION);
context.startService(intent);
}