diff options
| author | Arne Schwabe <arne@rfc2549.org> | 2025-03-31 12:09:13 +0200 |
|---|---|---|
| committer | Arne Schwabe <arne@rfc2549.org> | 2025-03-31 12:13:56 +0200 |
| commit | d5aa4f15c221b065cbde0b9c535fb5bc6427b498 (patch) | |
| tree | 7accc5e619d35a61f8d3e95252d0d7f4e76401f2 /main/src | |
| parent | 1354f214fa3ba79d8af76390cbb90477daf2c6f5 (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.java | 19 | ||||
| -rwxr-xr-x | main/src/main/res/values/strings.xml | 2 | ||||
| -rw-r--r-- | main/src/ui/res/xml/general_settings.xml | 83 |
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 |
