summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2025-03-31 12:09:13 +0200
committerArne Schwabe <arne@rfc2549.org>2025-03-31 12:13:56 +0200
commitd5aa4f15c221b065cbde0b9c535fb5bc6427b498 (patch)
tree7accc5e619d35a61f8d3e95252d0d7f4e76401f2 /main/src
parent1354f214fa3ba79d8af76390cbb90477daf2c6f5 (diff)
Allow disabling VPN confirmation
This is not recommended but people keep annoying for their broken Samsung automation nonsense that abuses Android APIs for their own ****** instead of providing proper APIs or trying to improve overall ecosystem. So app programmers are bugged to make questionable implementation choices like this to cater to that mess that Samsung created. Github: closes schwabe/ics-openvpn#1808
Diffstat (limited to 'main/src')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java19
-rwxr-xr-xmain/src/main/res/values/strings.xml2
-rw-r--r--main/src/ui/res/xml/general_settings.xml83
3 files changed, 65 insertions, 39 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java b/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
index 4ccf5bd3..544dc413 100644
--- a/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
+++ b/main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java
@@ -12,6 +12,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.content.SharedPreferences;
import android.os.IBinder;
import android.os.RemoteException;
@@ -19,6 +20,7 @@ import de.blinkt.openvpn.LaunchVPN;
import de.blinkt.openvpn.R;
import de.blinkt.openvpn.core.IOpenVPNServiceInternal;
import de.blinkt.openvpn.core.OpenVPNService;
+import de.blinkt.openvpn.core.Preferences;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VpnStatus;
@@ -27,6 +29,7 @@ import de.blinkt.openvpn.core.VpnStatus;
*/
public class DisconnectVPN extends Activity implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
private IOpenVPNServiceInternal mService;
+ private boolean disconnectPending = false;
private final ServiceConnection mConnection = new ServiceConnection() {
@@ -36,6 +39,14 @@ public class DisconnectVPN extends Activity implements DialogInterface.OnClickLi
IBinder service) {
mService = IOpenVPNServiceInternal.Stub.asInterface(service);
+ if (disconnectPending) {
+ try {
+ mService.stopVPN(false);
+ } catch (RemoteException e) {
+ VpnStatus.logException(e);
+ }
+ finish();
+ }
}
@Override
@@ -50,8 +61,14 @@ public class DisconnectVPN extends Activity implements DialogInterface.OnClickLi
super.onResume();
Intent intent = new Intent(this, OpenVPNService.class);
intent.setAction(OpenVPNService.START_SERVICE);
+ SharedPreferences prefs = Preferences.getDefaultSharedPreferences(this);
+ if (prefs.getBoolean("disableconfirmation", false)) {
+ disconnectPending = true;
+ }
+ else {
+ showDisconnectDialog();
+ }
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- showDisconnectDialog();
}
@Override
diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml
index 45d3755f..2d4b7587 100755
--- a/main/src/main/res/values/strings.xml
+++ b/main/src/main/res/values/strings.xml
@@ -518,5 +518,7 @@
<string name="dnsserver_ignore_dnsport">Skipping address %1$s:%2$d for DNS server entry %1$d as uses a non-default port: %2$s</string>
<string name="dnsserver_no_valid_server">No valid DNS server left. Terminating connection.</string>
<string name="editor_close_profile_changed">Profile has changed outside the editor. Closing configuration editor.</string>
+ <string name="confirmations_title">Disable VPN connection confirmations</string>
+ <string name="confirmations_summary">(Not recommended) Disables confirmations when connecting/disconnecting VPN. This disables the safeguard to accidientially disconnect VPN connections</string>
</resources>
diff --git a/main/src/ui/res/xml/general_settings.xml b/main/src/ui/res/xml/general_settings.xml
index a1920aaf..15a635fb 100644
--- a/main/src/ui/res/xml/general_settings.xml
+++ b/main/src/ui/res/xml/general_settings.xml
@@ -1,102 +1,109 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
~ Copyright (c) 2012-2016 Arne Schwabe
~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools">
- <PreferenceCategory android:title="@string/appbehaviour" android:key="app_behaviour">
+ xmlns:tools="http://schemas.android.com/tools">
+ <PreferenceCategory
+ android:key="app_behaviour"
+ android:title="@string/appbehaviour">
<CheckBoxPreference
android:defaultValue="true"
android:key="showlogwindow"
android:summary="@string/show_log_summary"
- android:title="@string/show_log_window"/>
+ android:title="@string/show_log_window" />
<CheckBoxPreference
- android:defaultValue="@bool/allowTranslationDefault"
- android:key="allow_translation"
- android:title="@string/allow_translations_title"
- android:summary="@string/allow_translations_summary"
- />
+ android:defaultValue="@bool/allowTranslationDefault"
+ android:key="allow_translation"
+ android:summary="@string/allow_translations_summary"
+ android:title="@string/allow_translations_title" />
<CheckBoxPreference
- android:defaultValue="false"
- android:key="ovpn3"
- android:disableDependentsState="true"
- android:summaryOn="Use the C++ OpenVPN library (experimental)"
- android:summaryOff="Use OpenVPN 2.x"
- android:title="OpenVPN 3 Core"/>
+ android:defaultValue="false"
+ android:disableDependentsState="true"
+ android:key="ovpn3"
+ android:summaryOff="Use OpenVPN 2.x"
+ android:summaryOn="Use the C++ O4penVPN library (experimental)"
+ android:title="OpenVPN 3 Core" />
<de.blinkt.openvpn.views.DefaultVPNListPreference
- android:key="alwaysOnVpn"
- android:title="@string/defaultvpn"
- tools:summary="@string/defaultvpnsummary"
- />
+ android:key="alwaysOnVpn"
+ android:title="@string/defaultvpn"
+ tools:summary="@string/defaultvpnsummary" />
<CheckBoxPreference
android:defaultValue="false"
android:key="restartvpnonboot"
android:summary="@string/keep_vpn_connected_summary"
- android:title="@string/keep_vpn_connected"/>
+ android:title="@string/keep_vpn_connected" />
<CheckBoxPreference
android:defaultValue="true"
android:key="preferencryption"
- android:title="@string/encrypt_profiles"/>
+ android:title="@string/encrypt_profiles" />
<Preference
android:key="clearapi"
android:persistent="false"
- android:title="@string/clear_external_apps"/>
+ android:title="@string/clear_external_apps" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/vpnbehaviour">
<CheckBoxPreference
android:defaultValue="true"
- android:key="usesystemproxy"
android:dependency="ovpn3"
+ android:key="usesystemproxy"
android:summary="@string/use_system_proxy_summary"
- android:title="@string/use_system_proxy"/>
+ android:title="@string/use_system_proxy" />
<CheckBoxPreference
android:defaultValue="true"
android:key="netchangereconnect"
android:summary="@string/netchange_summary"
- android:title="@string/netchange"/>
+ android:title="@string/netchange" />
<CheckBoxPreference
android:defaultValue="false"
android:key="screenoff"
android:summary="@string/screenoff_summary"
- android:title="@string/screenoff_title"/>
+ android:title="@string/screenoff_title" />
+
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="disableconfirmation"
+ android:summary="@string/confirmations_summary"
+ android:title="@string/confirmations_title" />\
<Preference
android:dependency=""
- android:key="osslspeed"
- android:persistent="false"
- android:title="@string/osslspeedtest" />
+ android:key="osslspeed"
+ android:persistent="false"
+ android:title="@string/osslspeedtest" />
+
</PreferenceCategory>
- <PreferenceCategory android:title="@string/device_specific" android:key="device_hacks">
+ <PreferenceCategory
+ android:key="device_hacks"
+ android:title="@string/device_specific">
<CheckBoxPreference
android:defaultValue="false"
android:key="useCM9Fix"
android:summary="@string/owner_fix_summary"
- android:title="@string/owner_fix"/>
+ android:title="@string/owner_fix" />
<CheckBoxPreference
android:defaultValue="false"
android:key="loadTunModule"
android:summary="@string/setting_loadtun_summary"
- android:title="@string/setting_loadtun"/>
+ android:title="@string/setting_loadtun" />
<CheckBoxPreference
- android:defaultValue="false"
- android:title="Use internal file browser"
- android:summary="Always use the very basic file browser instead of the Android file browser. Use this option if you have problems selecting files."
- android:key="useInternalFileSelector">
- </CheckBoxPreference>
+ android:defaultValue="false"
+ android:key="useInternalFileSelector"
+ android:summary="Always use the very basic file browser instead of the Android file browser. Use this option if you have problems selecting files."
+ android:title="Use internal file browser" />
</PreferenceCategory>
</PreferenceScreen> \ No newline at end of file