summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2014-11-09 23:07:43 +0100
committerArne Schwabe <arne@rfc2549.org>2014-11-09 23:07:43 +0100
commit0f7435453ecbf405e12b175b5ebfdc74659f83c7 (patch)
treec0bbf4d35d2b5ecc8301352e86c9153e5d595c05
parentedef63448d317f489f49f93fb7c6a4c1e570bc6b (diff)
Implement removal of profiles via external API
-rw-r--r--main/build.gradle1
-rw-r--r--main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl3
-rw-r--r--main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java37
3 files changed, 29 insertions, 12 deletions
diff --git a/main/build.gradle b/main/build.gradle
index 58565e73..da0881e6 100644
--- a/main/build.gradle
+++ b/main/build.gradle
@@ -10,7 +10,6 @@ dependencies {
compile 'com.intellij:annotations:12.0'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
-
// compile 'ch.acra:acra:4.5.0'
}
diff --git a/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl b/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
index 794e3aad..f1c108ea 100644
--- a/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
+++ b/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
@@ -14,6 +14,9 @@ interface IOpenVPNAPIService {
/** Use a profile with all certificates etc. embedded */
boolean addVPNProfile (String name, String config);
+
+ /** Remove a profile by UUID */
+ void removeProfile (String profileUUID);
/** start a profile using an config */
void startVPN (String inlineconfig);
diff --git a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
index 4b07c7ab..06b116fe 100644
--- a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
@@ -5,12 +5,6 @@
package de.blinkt.openvpn.api;
-import java.io.IOException;
-import java.io.StringReader;
-import java.lang.ref.WeakReference;
-import java.util.LinkedList;
-import java.util.List;
-
import android.annotation.TargetApi;
import android.app.Service;
import android.content.ComponentName;
@@ -21,20 +15,31 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.VpnService;
-import android.os.*;
+import android.os.Binder;
+import android.os.Build;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.RemoteCallbackList;
+import android.os.RemoteException;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.lang.ref.WeakReference;
+import java.util.LinkedList;
+import java.util.List;
-import de.blinkt.openvpn.LaunchVPN;
import de.blinkt.openvpn.R;
import de.blinkt.openvpn.VpnProfile;
import de.blinkt.openvpn.core.ConfigParser;
import de.blinkt.openvpn.core.ConfigParser.ConfigParseError;
import de.blinkt.openvpn.core.OpenVPNService;
-import de.blinkt.openvpn.core.VpnStatus;
-import de.blinkt.openvpn.core.VpnStatus.ConnectionStatus;
-import de.blinkt.openvpn.core.VpnStatus.StateListener;
import de.blinkt.openvpn.core.OpenVPNService.LocalBinder;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VPNLaunchHelper;
+import de.blinkt.openvpn.core.VpnStatus;
+import de.blinkt.openvpn.core.VpnStatus.ConnectionStatus;
+import de.blinkt.openvpn.core.VpnStatus.StateListener;
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1)
public class ExternalOpenVPNService extends Service implements StateListener {
@@ -161,6 +166,8 @@ public class ExternalOpenVPNService extends Service implements StateListener {
}
}
+
+
@Override
public boolean addVPNProfile(String name, String config) throws RemoteException {
checkOpenVPNPermission();
@@ -183,6 +190,14 @@ public class ExternalOpenVPNService extends Service implements StateListener {
return true;
}
+ @Override
+ public void removeProfile(String profileUUID) throws RemoteException {
+ checkOpenVPNPermission();
+ ProfileManager pm = ProfileManager.getInstance(getBaseContext());
+ VpnProfile vp = ProfileManager.get(getBaseContext(), profileUUID);
+ pm.removeProfile(ExternalOpenVPNService.this, vp);
+ }
+
@Override
public Intent prepare(String packagename) {