summaryrefslogtreecommitdiff
path: root/vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java')
-rw-r--r--vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java31
1 files changed, 28 insertions, 3 deletions
diff --git a/vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java b/vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java
index d87b2d89..9cf22d0c 100644
--- a/vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java
+++ b/vpndialogxposed/src/main/java/de/blinkt/vpndialogxposed/VpnDialogPatcher.java
@@ -8,11 +8,26 @@ import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
+import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
+import de.robv.android.xposed.IXposedHookZygoteInit;
+
import java.lang.reflect.Method;
+import java.util.HashSet;
+import java.util.Set;
+
+public class VpnDialogPatcher implements IXposedHookLoadPackage, IXposedHookZygoteInit {
+ public static final String MY_PACKAGE_NAME = AllowedVPNsChooser.class.getPackage().getName();
+ private static XSharedPreferences pref;
+
+
+ @Override
+ public void initZygote(StartupParam startupParam) throws Throwable {
+ pref = new XSharedPreferences(MY_PACKAGE_NAME, "AllowedVPNsChooser");
+
+ }
-public class VpnDialogPatcher implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
if (!lpparam.packageName.equals("com.android.vpndialogs"))
@@ -52,11 +67,21 @@ public class VpnDialogPatcher implements IXposedHookLoadPackage {
if((Boolean) XposedHelpers.callMethod(mService,"prepareVpn",prepareVPNsignature, mPackage,(String)null))
return;
- if (mPackage.equals("de.blinkt.openvpn")) {
+
+ HashSet<String> blinktapp = new HashSet<String>();
+ blinktapp.add("de.blinkt.openvpn");
+ // blinktapp.add("de.blinkt.nothingset");
+
+ pref.reload();
+ Set<String> allowedApps = pref.getStringSet("allowedApps",blinktapp);
+
+ //Toast.makeText((Context)param.thisObject, "Allowed apps: " + allowedApps, Toast.LENGTH_LONG).show();
+
+ if (allowedApps.contains(mPackage)) {
//mService.prepareVpn(null, mPackage);
XposedHelpers.callMethod(mService,"prepareVpn",prepareVPNsignature, (String)null,mPackage);
((Activity) param.thisObject).setResult(Activity.RESULT_OK);
- Toast.makeText((Context)param.thisObject,"Allowed de.blinkt.openvpn",Toast.LENGTH_LONG).show();
+ Toast.makeText((Context)param.thisObject,"Allowed VpnService app: " + mPackage,Toast.LENGTH_LONG).show();
((Activity) param.thisObject).finish();
}