diff options
author | Tobias Brunner <tobias@strongswan.org> | 2017-04-20 09:33:41 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2017-07-03 10:27:50 +0200 |
commit | 59693d6c5641b67a7467f0ca2fdce986e4af7daf (patch) | |
tree | ff9fbcd120b6c7b501732c4208a84e425d4daec0 | |
parent | bef8bc3aac62e0327c4e333c473aed0f99333a2f (diff) | |
download | strongswan-59693d6c5641b67a7467f0ca2fdce986e4af7daf.tar.bz2 strongswan-59693d6c5641b67a7467f0ca2fdce986e4af7daf.tar.xz |
android: Use a specific action to disconnect from the VPN
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); } |