]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Allow setting proxy settings in managed profiles
authorTobias Brunner <tobias@strongswan.org>
Thu, 5 Jun 2025 14:13:45 +0000 (16:13 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 27 Jun 2025 06:57:45 +0000 (08:57 +0200)
src/frontends/android/app/src/main/java/org/strongswan/android/data/ManagedVpnProfile.java
src/frontends/android/app/src/main/java/org/strongswan/android/data/VpnProfileDataSource.java
src/frontends/android/app/src/main/res/values-de/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/values-pl/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/values-ru/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/values-uk/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/values-zh-rCN/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/values-zh-rTW/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/values/strings_managed_configuration.xml
src/frontends/android/app/src/main/res/xml/managed_configuration.xml

index 30943aa6be9f6acb82717554a58161892bf699dd..47e85a5ca9cf155eca4bfbd050932cba2e48c047 100644 (file)
@@ -83,6 +83,14 @@ public class ManagedVpnProfile extends VpnProfile
                        setIncludedSubnets(getString(splitTunneling, VpnProfileDataSource.KEY_INCLUDED_SUBNETS));
                }
 
+               final Bundle proxyServer = bundle.getBundle(VpnProfileDataSource.KEY_PROXY_SERVER);
+               if (proxyServer != null)
+               {
+                       setProxyHost(getString(proxyServer, VpnProfileDataSource.KEY_PROXY_HOST));
+                       setProxyPort(getInt(proxyServer, VpnProfileDataSource.KEY_PROXY_PORT, 1, 65_535));
+                       setProxyExclusions(getString(proxyServer, VpnProfileDataSource.KEY_PROXY_EXCLUSIONS));
+               }
+
                setSplitTunneling(splitFlags);
                setFlags(flags);
        }
index 541d2eb9a767b596717bc06f5002ca10b85bad1a..b5289337c7e0393d3772a6eb1cb0d5b29eef9ae6 100644 (file)
@@ -50,6 +50,7 @@ public interface VpnProfileDataSource
        String KEY_IKE_PROPOSAL = "ike_proposal";
        String KEY_ESP_PROPOSAL = "esp_proposal";
        String KEY_DNS_SERVERS = "dns_servers";
+       String KEY_PROXY_SERVER = "proxy_server";
        String KEY_PROXY_HOST = "proxy_host";
        String KEY_PROXY_PORT = "proxy_port";
        String KEY_PROXY_EXCLUSIONS = "proxy_exclusions";
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..c7d516011bf0d73ddec418df9b92e452c67eb5ab 100644 (file)
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..c7d516011bf0d73ddec418df9b92e452c67eb5ab 100644 (file)
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..c7d516011bf0d73ddec418df9b92e452c67eb5ab 100644 (file)
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..c7d516011bf0d73ddec418df9b92e452c67eb5ab 100644 (file)
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..c7d516011bf0d73ddec418df9b92e452c67eb5ab 100644 (file)
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..c7d516011bf0d73ddec418df9b92e452c67eb5ab 100644 (file)
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index 74e59cfe7da7d85532d3ff5325b9a90c20d142ba..04922033d8648e61fbbb11f27a12ccc23de617b8 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
+    Copyright (C) 2025 Tobias Brunner
     Copyright (C) 2023 Relution GmbH
 
     Copyright (C) secunet Security Networks AG
     <string name="managed_config_split_tunneling_block_ipv6_title">@string/profile_split_tunnelingv6_title</string>
     <string name="managed_config_split_tunneling_block_ipv6_description">Specifies whether to block IPv6 traffic that\'s not destined for the VPN. Forces all IPv6 traffic via VPN (traffic that does not match the negotiated traffic selector is then just dropped). Thus this is basically equivalent to including ::/0 in subnets</string>
 
+    <!-- Managed configuration, VPN profile, proxy server -->
+    <string name="managed_config_proxy_server_bundle_title">@string/profile_proxy_server_label</string>
+    <string name="managed_config_proxy_server_bundle_description">@string/profile_proxy_server_intro</string>
+    <string name="managed_config_proxy_host_title">@string/profile_proxy_host_label</string>
+    <string name="managed_config_proxy_host_description">@string/profile_proxy_host_hint</string>
+    <string name="managed_config_proxy_port_title">@string/profile_proxy_port_label</string>
+    <string name="managed_config_proxy_port_description">@string/profile_proxy_port_hint</string>
+    <string name="managed_config_proxy_exclusions_title">@string/profile_proxy_exclusions_label</string>
+    <string name="managed_config_proxy_exclusions_description">@string/profile_proxy_exclusions_hint</string>
 </resources>
index e86ad721edce5711c0f9bf6856f8229dd1559c66..8c2a70eb8ff8c5f0b86d1b81028a38a727fb046c 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
+    Copyright (C) 2025 Tobias Brunner
     Copyright (C) 2023 Relution GmbH
 
     Copyright (C) secunet Security Networks AG
 
             </restriction>
 
+            <restriction
+                android:description="@string/managed_config_proxy_server_bundle_description"
+                android:key="proxy_server"
+                android:restrictionType="bundle"
+                android:title="@string/managed_config_proxy_server_bundle_title">
+
+                <restriction
+                    android:defaultValue=""
+                    android:description="@string/managed_config_proxy_host_description"
+                    android:key="proxy_host"
+                    android:restrictionType="string"
+                    android:title="@string/managed_config_proxy_host_title" />
+
+                <restriction
+                    android:defaultValue="-1"
+                    android:description="@string/managed_config_proxy_port_description"
+                    android:key="proxy_port"
+                    android:restrictionType="integer"
+                    android:title="@string/managed_config_proxy_port_description" />
+
+                <restriction
+                    android:defaultValue=""
+                    android:description="@string/managed_config_proxy_exclusions_description"
+                    android:key="proxy_exclusions"
+                    android:restrictionType="string"
+                    android:title="@string/managed_config_proxy_exclusions_title" />
+
+            </restriction>
+
         </restriction>
     </restriction>
 </restrictions>