--- a/src/etc/inc/openvpn.inc +++ b/src/etc/inc/openvpn.inc @@ -794,6 +794,9 @@ if (!empty($settings['nbdd_server1'])) { $conf .= "push \"dhcp-option NBDD {$settings['nbdd_server1']}\"\n"; } + if (!empty($settings['nbdd_server2'])) { + $conf .= "push \"dhcp-option NBDD {$settings['nbdd_server2']}\"\n"; + } } if ($settings['gwredir']) { --- a/src/usr/local/www/vpn_openvpn_csc.php +++ b/src/usr/local/www/vpn_openvpn_csc.php @@ -134,7 +134,10 @@ } $pconfig['nbdd_server1'] = $a_csc[$id]['nbdd_server1']; - if ($pconfig['nbdd_server1']) { + $pconfig['nbdd_server2'] = $a_csc[$id]['nbdd_server2']; + + if ($pconfig['nbdd_server1'] || + $pconfig['nbdd_server2']) { $pconfig['nbdd_server_enable'] = true; } } @@ -239,7 +242,10 @@ if (!empty($pconfig['nbdd_server1']) && !is_ipaddr(trim($pconfig['nbdd_server1']))) { $input_errors[] = gettext("The field 'NetBIOS Data Distribution Server #1' must contain a valid IP address"); } + if (!empty($pconfig['nbdd_server2']) && !is_ipaddr(trim($pconfig['nbdd_server2']))) { + $input_errors[] = gettext("The field 'NetBIOS Data Distribution Server #2' must contain a valid IP address"); } + } if (!empty($pconfig['netbios_ntype']) && !array_key_exists($pconfig['netbios_ntype'], $netbios_nodetypes)) { @@ -304,8 +310,9 @@ $csc['wins_server2'] = $pconfig['wins_server2']; } - if ($pconfig['dns_server_enable']) { + if ($pconfig['nbdd_server_enable']) { $csc['nbdd_server1'] = $pconfig['nbdd_server1']; + $csc['nbdd_server2'] = $pconfig['nbdd_server2']; } } @@ -635,6 +642,33 @@ $section->add($group); + $section->addInput(new Form_Checkbox( + 'nbdd_server_enable', + 'NBDD servers', + 'Provide a NetBIOS over TCP/IP Datagram Distribution Servers list to clients', + $pconfig['nbdd_server_enable'] + )); + + $group = new Form_Group(null); + + $group->add(new Form_Input( + 'nbdd_server1', + null, + 'text', + $pconfig['nbdd_server1'] + ))->setHelp('Server 1'); + + $group->add(new Form_Input( + 'nbdd_server2', + null, + 'text', + $pconfig['nbdd_server2'] + ))->setHelp('Server 2'); + + $group->addClass('nbddservers'); + + $section->add($group); + $custops = new Form_Textarea( 'custom_options', 'Advanced', @@ -703,11 +737,15 @@ hideInput('netbios_scope', false); hideCheckbox('wins_server_enable', false); setWins(); + hideCheckbox('nbdd_server_enable', false); + setNbdds(); } else { hideInput('netbios_ntype', true); hideInput('netbios_scope', true); hideCheckbox('wins_server_enable', true); hideClass('winsservers', true); + hideCheckbox('nbdd_server_enable', true); + hideClass('nbddservers', true); } } @@ -715,6 +753,10 @@ hideClass('winsservers', ! $('#wins_server_enable').prop('checked')); } + function setNbdds() { + hideClass('nbddservers', ! $('#nbdd_server_enable').prop('checked')); + } + // ---------- Click checkbox handlers --------------------------------------------------------- // On clicking DNS Default Domain @@ -740,6 +782,11 @@ // On clicking the wins_server_enable checkbox $('#wins_server_enable').click(function () { setWins(); + }); + + // On clicking the nbdd_server_enable checkbox + $('#nbdd_server_enable').click(function () { + setNbdds(); }); // ---------- On initial page load ------------------------------------------------------------ --- a/src/usr/local/www/vpn_openvpn_server.php +++ b/src/usr/local/www/vpn_openvpn_server.php @@ -241,7 +241,10 @@ } $pconfig['nbdd_server1'] = $a_server[$id]['nbdd_server1']; - if ($pconfig['nbdd_server1']) { + $pconfig['nbdd_server2'] = $a_server[$id]['nbdd_server2']; + + if ($pconfig['nbdd_server1'] || + $pconfig['nbdd_server2']) { $pconfig['nbdd_server_enable'] = true; } @@ -553,11 +556,15 @@ $input_errors[] = gettext("The field 'WINS Server #2' must contain a valid IP address"); } } + if ($pconfig['nbdd_server_enable']) { if (!empty($pconfig['nbdd_server1']) && !is_ipaddr(trim($pconfig['nbdd_server1']))) { $input_errors[] = gettext("The field 'NetBIOS Data Distribution Server #1' must contain a valid IP address"); } + if (!empty($pconfig['nbdd_server2']) && !is_ipaddr(trim($pconfig['nbdd_server2']))) { + $input_errors[] = gettext("The field 'NetBIOS Data Distribution Server #2' must contain a valid IP address"); } + } if (!empty($pconfig['netbios_ntype']) && !array_key_exists($pconfig['netbios_ntype'], $netbios_nodetypes)) { @@ -821,8 +828,9 @@ $server['wins_server2'] = $pconfig['wins_server2']; } - if ($pconfig['dns_server_enable']) { + if ($pconfig['nbdd_server_enable']) { $server['nbdd_server1'] = $pconfig['nbdd_server1']; + $server['nbdd_server2'] = $pconfig['nbdd_server2']; } } @@ -1689,6 +1697,33 @@ $pconfig['wins_server2'] )); + $section->addInput(new Form_Checkbox( + 'nbdd_server_enable', + 'NBDD servers', + 'Provide a NetBIOS over TCP/IP Datagram Distribution Servers list to clients', + $pconfig['nbdd_server_enable'] + )); + + $group = new Form_Group(null); + + $group->add(new Form_Input( + 'nbdd_server1', + null, + 'text', + $pconfig['nbdd_server1'] + ))->setHelp('Server 1'); + + $group->add(new Form_Input( + 'nbdd_server2', + null, + 'text', + $pconfig['nbdd_server2'] + ))->setHelp('Server 2'); + + $group->addClass('nbddservers'); + + $section->add($group); + $form->add($section); $section = new Form_Section('Advanced Configuration'); @@ -2144,6 +2179,9 @@ hideInput('wins_server2', hide); } + function nbdd_server_change() { + hideClass('nbddservers', ! $('#nbdd_server_enable').prop('checked') || ! $('#netbios_enable').prop('checked')); + } function ntp_server_change() { var hide = ! $('#ntp_server_enable').prop('checked') @@ -2159,6 +2197,8 @@ hideInput('netbios_scope', hide); hideCheckbox('wins_server_enable', hide); wins_server_change(); + hideCheckbox('nbdd_server_enable', hide); + nbdd_server_change(); } function tuntap_change() { @@ -2289,6 +2329,11 @@ wins_server_change(); }); + // NBDD server + $('#nbdd_server_enable').click(function () { + nbdd_server_change(); + }); + // DNS server port $('#dns_server_enable').click(function () { dns_server_change(); @@ -2425,6 +2470,7 @@ dns_domain_change(); dns_server_change(); wins_server_change(); + nbdd_server_change ntp_server_change(); netbios_change(); tuntap_change();