diff options
author | Norbel AMBANUMBEN <aanorbel@gmail.com> | 2024-11-13 08:18:09 +0100 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2024-11-28 22:53:30 +0100 |
commit | 504bb9ae0e84b3d0d1685ad290f914e5199a4c0e (patch) | |
tree | bfa219aa19c3b25a8af53532f5c9d48a3b883532 /app | |
parent | 12526ef8ff49c9492f5b9e22acdfb762ccd4d514 (diff) |
updated settings
Diffstat (limited to 'app')
5 files changed, 58 insertions, 40 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/CensorshipCircumventionFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/CensorshipCircumventionFragment.java index 5766fb55..7ca93f2b 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/CensorshipCircumventionFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/CensorshipCircumventionFragment.java @@ -5,9 +5,8 @@ import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseObfs4Kcp; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUsePortHopping; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseSnowflake; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.hasSnowflakePrefs; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseObfs4; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseObfs4Kcp; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUsePortHopping; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseTunnel; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useBridges; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useSnowflake; import static se.leap.bitmaskclient.base.utils.ViewHelper.setActionBarSubtitle; @@ -137,16 +136,7 @@ public class CensorshipCircumventionFragment extends Fragment { binding.tunnelingRadioGroup.setOnCheckedChangeListener((group, checkedId) -> { useBridges(true); - if (checkedId == TUNNELING_NONE) { - setUseObfs4Kcp(false); - setUseObfs4(false); - } else if (checkedId == TUNNELING_OBFS4) { - setUseObfs4Kcp(false); - setUseObfs4(true); - } else if (checkedId == TUNNELING_OBFS4_KCP) { - setUseObfs4Kcp(true); - setUseObfs4(false); - } + setUseTunnel(checkedId); tryReconnectVpn(); }); } diff --git a/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java index 1167e8a7..99d49ccb 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/SettingsFragment.java @@ -3,6 +3,7 @@ package se.leap.bitmaskclient.base.fragments; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static se.leap.bitmaskclient.R.string.advanced_settings; +import static se.leap.bitmaskclient.base.fragments.CensorshipCircumventionFragment.TUNNELING_NONE; import static se.leap.bitmaskclient.base.models.Constants.GATEWAY_PINNING; import static se.leap.bitmaskclient.base.models.Constants.PREFER_UDP; import static se.leap.bitmaskclient.base.models.Constants.USE_BRIDGES; @@ -14,13 +15,11 @@ import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getExcludedApps; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferUDP; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getShowAlwaysOnDialog; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseBridges; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseSnowflake; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.preferUDP; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setAllowExperimentalTransports; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseObfs4; -import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseObfs4Kcp; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseObfuscationPinning; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUsePortHopping; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.setUseTunnel; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useBridges; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useObfuscationPinning; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.useSnowflake; @@ -106,8 +105,7 @@ public class SettingsFragment extends Fragment implements SharedPreferences.OnSh if (isChecked) { useSnowflake(false); - setUseObfs4Kcp(false); - setUseObfs4(false); + setUseTunnel(TUNNELING_NONE); setUsePortHopping(false); } useBridges(isChecked); @@ -151,8 +149,7 @@ public class SettingsFragment extends Fragment implements SharedPreferences.OnSh private void resetManualConfig() { useSnowflake(false); - setUseObfs4Kcp(false); - setUseObfs4(false); + setUseTunnel(TUNNELING_NONE); setUsePortHopping(false); if (VpnStatus.isVPNActive()) { EipCommand.startVPN(getContext(), false); diff --git a/app/src/main/java/se/leap/bitmaskclient/base/models/Constants.java b/app/src/main/java/se/leap/bitmaskclient/base/models/Constants.java index c24feda5..6c4a71d0 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/models/Constants.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/models/Constants.java @@ -55,8 +55,7 @@ public interface Constants { String USE_SYSTEM_PROXY = "usesystemproxy"; String CUSTOM_PROVIDER_DOMAINS = "custom_provider_domains"; String USE_PORT_HOPPING = "use_port_hopping"; - String USE_OBSF4 = "use_obsf4"; - String USE_OBSF4_KCP = "use_obsf4_kcp"; + String USE_TUNNEL = "tunnel"; ////////////////////////////////////////////// diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java index 407976c3..694f2149 100644 --- a/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java +++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/PreferenceHelper.java @@ -1,6 +1,9 @@ package se.leap.bitmaskclient.base.utils; import static android.content.Context.MODE_PRIVATE; +import static se.leap.bitmaskclient.base.fragments.CensorshipCircumventionFragment.TUNNELING_NONE; +import static se.leap.bitmaskclient.base.fragments.CensorshipCircumventionFragment.TUNNELING_OBFS4; +import static se.leap.bitmaskclient.base.fragments.CensorshipCircumventionFragment.TUNNELING_OBFS4_KCP; import static se.leap.bitmaskclient.base.models.Constants.ALLOW_EXPERIMENTAL_TRANSPORTS; import static se.leap.bitmaskclient.base.models.Constants.ALLOW_TETHERING_BLUETOOTH; import static se.leap.bitmaskclient.base.models.Constants.ALLOW_TETHERING_USB; @@ -40,11 +43,10 @@ import static se.leap.bitmaskclient.base.models.Constants.SHOW_EXPERIMENTAL; import static se.leap.bitmaskclient.base.models.Constants.USE_BRIDGES; import static se.leap.bitmaskclient.base.models.Constants.USE_IPv6_FIREWALL; import static se.leap.bitmaskclient.base.models.Constants.USE_OBFUSCATION_PINNING; -import static se.leap.bitmaskclient.base.models.Constants.USE_OBSF4; -import static se.leap.bitmaskclient.base.models.Constants.USE_OBSF4_KCP; import static se.leap.bitmaskclient.base.models.Constants.USE_PORT_HOPPING; import static se.leap.bitmaskclient.base.models.Constants.USE_SNOWFLAKE; import static se.leap.bitmaskclient.base.models.Constants.USE_SYSTEM_PROXY; +import static se.leap.bitmaskclient.base.models.Constants.USE_TUNNEL; import android.content.Context; import android.content.SharedPreferences; @@ -576,23 +578,27 @@ public class PreferenceHelper { } public static boolean getUseObfs4() { - return getBoolean(USE_OBSF4, false); + return getUseTunnel() == TUNNELING_OBFS4; } - public static void setUseObfs4(boolean useObsf4) { - putBoolean(USE_OBSF4, useObsf4); + public static boolean getUseObfs4Kcp() { + return getUseTunnel() == TUNNELING_OBFS4_KCP; } - public static void setUseObfs4Kcp(boolean useObfs4Kcp) { - putBoolean(USE_OBSF4_KCP, useObfs4Kcp); + public static boolean usesManualBridges(){ + return getUseSnowflake() || usesSpecificTunnel() || getUsePortHopping(); } - public static boolean getUseObfs4Kcp() { - return getBoolean(USE_OBSF4_KCP, false); + public static boolean usesSpecificTunnel() { + return getUseObfs4() || getUseObfs4Kcp(); } - public static boolean usesManualBridges(){ - return getUseSnowflake() || getUseObfs4() || getUseObfs4Kcp() || getUsePortHopping(); + public static void setUseTunnel(int tunnel) { + putInt(USE_TUNNEL, tunnel); + } + + public static int getUseTunnel() { + return getInt(USE_TUNNEL, TUNNELING_NONE); } public static boolean useIpv6Firewall() { diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java index cd85f419..5b4fedf2 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaysManager.java @@ -32,6 +32,10 @@ import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getObfuscationPi import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getObfuscationPinningPort; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferredCity; import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseBridges; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseObfs4; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUseObfs4Kcp; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getUsePortHopping; +import static se.leap.bitmaskclient.base.utils.PreferenceHelper.usesSpecificTunnel; import android.content.Context; import android.util.Log; @@ -152,7 +156,7 @@ public class GatewaysManager { * @return VpnProfile of the n closest Gateway or null if no remaining VpnProfiles available */ public @Nullable VpnProfile selectVpnProfile(int nClosestGateway, String city) { - TransportType[] transportTypes = getUseBridges() ? new TransportType[]{OBFS4, OBFS4_HOP} : new TransportType[]{OPENVPN}; + TransportType[] transportTypes = determineTransportTypes(); Set<String> obfuscationTransportLayerProtocols = getObfuscationTransportLayerProtocols(); if (presortedList.size() > 0) { return getVpnProfileFromPresortedList(nClosestGateway, transportTypes, obfuscationTransportLayerProtocols, city); @@ -160,13 +164,35 @@ public class GatewaysManager { return getVpnProfileFromTimezoneCalculation(nClosestGateway, transportTypes, obfuscationTransportLayerProtocols, city); } + + private TransportType[] determineTransportTypes() { + if (getUseBridges() && !usesSpecificTunnel()) { + return new TransportType[]{OBFS4, OBFS4_HOP}; + } else if (getUseBridges() && getUseObfs4()) { + return new TransportType[]{OBFS4}; + } else if (getUseBridges() && getUseObfs4Kcp()) { + return new TransportType[]{OBFS4_HOP}; + } else { + return new TransportType[]{OPENVPN}; + } + } + + @Nullable private static Set<String> getObfuscationTransportLayerProtocols() { - Set<String> obfuscationTransportLayerProtocols = null; + Set<String> transportProtocols = null; + if (getUseBridges()) { - obfuscationTransportLayerProtocols = new HashSet<>(Arrays.asList(TCP, KCP)); + if (getUseObfs4Kcp()) { + transportProtocols = Set.of(KCP); + } else if (getUseObfs4()) { + transportProtocols = Set.of(TCP); + } else { + transportProtocols = Set.of(TCP, KCP); + } } - return obfuscationTransportLayerProtocols; + + return transportProtocols; } public void updateTransport(TransportType transportType) { @@ -333,13 +359,13 @@ public class GatewaysManager { * @return position of the gateway owning to the profile */ public int getPosition(VpnProfile profile) { - if (presortedList.size() > 0) { + if (presortedList.size() > 0) { return getPositionFromPresortedList(profile); - } - + } + return getPositionFromTimezoneCalculatedList(profile); } - + private int getPositionFromPresortedList(VpnProfile profile) { int nClosestGateway = 0; for (Gateway gateway : presortedList) { |