diff --git a/src/etc/inc/plugins.inc.d/ipsec.inc b/src/etc/inc/plugins.inc.d/ipsec.inc index cf139cb1b..5bcdcbd9b 100644 --- a/src/etc/inc/plugins.inc.d/ipsec.inc +++ b/src/etc/inc/plugins.inc.d/ipsec.inc @@ -1349,8 +1349,17 @@ function ipsec_configure_do($verbose = false, $interface = '') } $rightsourceip = null; - if (!empty($a_client['pool_address']) && isset($ph1ent['mobile'])) { - $rightsourceip = "\trightsourceip = {$a_client['pool_address']}/{$a_client['pool_netbits']}\n"; + if (isset($ph1ent['mobile']) && + (!empty($a_client['pool_address']) || !empty($a_client['pool_address_v6']))) { + $rightsourceip = "\trightsourceip = "; + if (!empty($a_client['pool_address'])) { + $rightsourceip .= "{$a_client['pool_address']}/{$a_client['pool_netbits']}"; + } + if (!empty($a_client['pool_address_v6'])) { + $rightsourceip .= (!empty($a_client['pool_address']) ? "," : ""); + $rightsourceip .= "{$a_client['pool_address_v6']}/{$a_client['pool_netbits_v6']}"; + } + $rightsourceip .= "\n"; } $authentication = ""; diff --git a/src/www/vpn_ipsec_mobile.php b/src/www/vpn_ipsec_mobile.php index e25a6ffa0..2dea8d0f9 100644 --- a/src/www/vpn_ipsec_mobile.php +++ b/src/www/vpn_ipsec_mobile.php @@ -36,7 +36,7 @@ config_read_array('ipsec', 'client'); config_read_array('ipsec', 'phase1'); // define formfields -$form_fields = "user_source,local_group,pool_address,pool_netbits,net_list +$form_fields = "user_source,local_group,pool_address,pool_netbits,pool_address_v6,pool_netbits_v6,net_list ,save_passwd,dns_domain,dns_split,dns_server1,dns_server2,dns_server3 ,dns_server4,wins_server1,wins_server2,pfs_group,login_banner"; @@ -48,6 +48,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { $pconfig = array(); // defaults $pconfig['pool_netbits'] = 24; + $pconfig['pool_netbits_v6'] = 64; // copy / initialize $pconfig attributes foreach (explode(",", $form_fields) as $fieldname) { @@ -97,7 +98,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); if (!empty($pconfig['pool_address']) && !is_ipaddr($pconfig['pool_address'])) { - $input_errors[] = gettext("A valid IP address for 'Virtual Address Pool Network' must be specified."); + $input_errors[] = gettext("A valid IPv4 address for 'Virtual IPv4 Address Pool Network' must be specified."); + } + + if (!empty($pconfig['pool_address_v6']) && !is_ipaddr($pconfig['pool_address_v6'])) { + $input_errors[] = gettext("A valid IPv6 address for 'Virtual IPv6 Address Pool Network' must be specified."); } if (!empty($pconfig['dns_domain']) && !is_domain($pconfig['dns_domain'])) { @@ -136,7 +141,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { if (count($input_errors) == 0) { $client = array(); - $copy_fields = "user_source,local_group,pool_address,pool_netbits,dns_domain,dns_server1 + $copy_fields = "user_source,local_group,pool_address,pool_netbits,pool_address_v6,pool_netbits_v6,dns_domain,dns_server1 ,dns_server2,dns_server3,dns_server4,wins_server1,wins_server2 ,dns_split,pfs_group,login_banner"; foreach (explode(",", $copy_fields) as $fieldname) { @@ -189,6 +194,7 @@ include("head.inc"); // $auth_server) : ?> - - - onclick="pool_change()" /> - -
- - -
- + + + onclick="pool_change()" /> + +
+ + +
+ + + + + + onclick="pool_v6_change()" /> + +
+ + +
+