summaryrefslogtreecommitdiff
path: root/src/de/blinkt/openvpn/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/blinkt/openvpn/api')
-rw-r--r--src/de/blinkt/openvpn/api/ExternalOpenVPNService.java7
-rw-r--r--src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl8
2 files changed, 10 insertions, 5 deletions
diff --git a/src/de/blinkt/openvpn/api/ExternalOpenVPNService.java b/src/de/blinkt/openvpn/api/ExternalOpenVPNService.java
index 21580eb4..866fb698 100644
--- a/src/de/blinkt/openvpn/api/ExternalOpenVPNService.java
+++ b/src/de/blinkt/openvpn/api/ExternalOpenVPNService.java
@@ -177,10 +177,13 @@ public class ExternalOpenVPNService extends Service implements StateListener {
}
@Override
- public boolean hasPermission() throws RemoteException {
+ public Intent prepareVPNService() throws RemoteException {
checkOpenVPNPermission();
- return VpnService.prepare(ExternalOpenVPNService.this)==null;
+ if(VpnService.prepare(ExternalOpenVPNService.this)==null)
+ return null;
+ else
+ return new Intent(getBaseContext(), GrantPermissionsActivity.class);
}
diff --git a/src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl b/src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
index c1e32eac..3e0b94e4 100644
--- a/src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
+++ b/src/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
@@ -19,11 +19,13 @@ interface IOpenVPNAPIService {
void startVPN (String inlineconfig);
/* This permission framework is used to avoid confused deputy style attack to the VPN
- * calling this will give null if the app is allowed to use the frame and null otherwise */
+ * calling this will give null if the app is allowed to use the external API and an Intent
+ * that can be launched to request permissions otherwise */
Intent prepare (String packagename);
- /* Tells the calling app wether we already have permission to avoid calling the activity/flicker */
- boolean hasPermission();
+ /* Used to trigger to the Android VPN permission dialog (VPNService.prepare()) in advance,
+ * if this return null OpenVPN for ANdroid already has the permissions */
+ Intent prepareVPNService ();
/* Disconnect the VPN */
void disconnect();