Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enhance AIDL-interface with function addNewVPNProfileWithExtras (String name, boolean userEditable, String config, in Bundle extras) #1735

Open
mx-tc opened this issue Jul 3, 2024 · 0 comments

Comments

@mx-tc
Copy link
Contributor

mx-tc commented Jul 3, 2024

To make issues more manageable, I would appreciate it if you fill out the following details as applicable:

General information

  1. Android Version
    irrelevant
  2. Android Vendor/Custom ROM
    irrelevant
  3. Device
    irrelevant
  4. Version of the app (version number/play store version/self-built)
    0.7.51

Description of the issue

I'd suggest a minor enhancement to allow setting the option "allow vpn bypass" when importing a profile using the AIDL-interface.
I already have tried it with following patch

Subject: [PATCH] add api-function addNewVPNProfileWithExtras()
---
Index: main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl b/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl
--- a/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl	(revision 4473ad1f1bc49c166fb8ab92ee7a7b91c608135e)
+++ b/main/src/main/aidl/de/blinkt/openvpn/api/IOpenVPNAPIService.aidl	(date 1720018856664)
@@ -67,4 +67,10 @@
     /** Same as startVPN(String), but also takes a Bundle with extra parameters,
     * which will be applied to the created VPNProfile (e.g. allow vpn bypass). */
     void startVPNwithExtras(in String inlineconfig, in Bundle extras);
+
+    /** Same as addNewVPNProfile(String, boolean, String) but giving possibility to pass a Bundle like
+    * in startVPNwithExtras(String, Bundle) to apply e.g. "allow vpn bypass" to profile.
+    * up to now the only extra that can be put is a boolean "de.blinkt.openvpn.api.ALLOW_VPN_BYPASS"
+    */
+    APIVpnProfile addNewVPNProfileWithExtras (String name, boolean userEditable, String config, in Bundle extras);
 }
\ No newline at end of file
Index: main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java
--- a/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java	(revision 4473ad1f1bc49c166fb8ab92ee7a7b91c608135e)
+++ b/main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java	(date 1720018897380)
@@ -151,6 +151,13 @@
 
         }
 
+        private void updateProfileFromExtras(Bundle extras, VpnProfile vp) {
+            if (extras != null) {
+                vp.mAllowAppVpnBypass = extras.getBoolean(EXTRA_INLINE_PROFILE_ALLOW_VPN_BYPASS, false);
+                VpnStatus.logDebug("got extra " + EXTRA_INLINE_PROFILE_ALLOW_VPN_BYPASS + ", mAllowAppVpnBypass=" + vp.mAllowAppVpnBypass);
+            }
+        }
+
         @Override
         public void startProfile(String profileUUID) throws RemoteException {
             mExtAppDb.checkOpenVPNPermission(getPackageManager());
@@ -176,9 +183,7 @@
 
                 vp.mProfileCreator = callingApp;
 
-                if (extras != null) {
-                    vp.mAllowAppVpnBypass = extras.getBoolean(EXTRA_INLINE_PROFILE_ALLOW_VPN_BYPASS, false);
-                }
+                updateProfileFromExtras(extras, vp);
 
                 /*int needpw = vp.needUserPWInput(false);
                 if(needpw !=0)
@@ -207,6 +212,11 @@
 
         @Override
         public APIVpnProfile addNewVPNProfile(String name, boolean userEditable, String config) throws RemoteException {
+            return addNewVPNProfileWithExtras(name, userEditable, config, null);
+        }
+
+        @Override
+        public APIVpnProfile addNewVPNProfileWithExtras(String name, boolean userEditable, String config, Bundle extras) throws RemoteException {
             String callingPackage = mExtAppDb.checkOpenVPNPermission(getPackageManager());
 
             ConfigParser cp = new ConfigParser();
@@ -216,6 +226,7 @@
                 vp.mName = name;
                 vp.mProfileCreator = callingPackage;
                 vp.mUserEditable = userEditable;
+                updateProfileFromExtras(extras, vp);
                 ProfileManager pm = ProfileManager.getInstance(getBaseContext());
                 pm.addProfile(vp);
                 pm.saveProfile(ExternalOpenVPNService.this, vp);

I could also provide an according PR if desired.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant