diff options
author | Andres Petralli <a.petralli@live.com> | 2013-12-23 20:20:32 -0800 |
---|---|---|
committer | Andres Petralli <a.petralli@live.com> | 2013-12-23 20:20:32 -0800 |
commit | 87019fc4e0f0fdd4e344b26ace61380ea4972793 (patch) | |
tree | 4a19ff092b0bad4d312bca9568e87ef9cf651752 /usr | |
parent | d8b37f910e2b864e3eaa159aeacbbd37c40198a9 (diff) | |
download | pfsense-87019fc4e0f0fdd4e344b26ace61380ea4972793.zip pfsense-87019fc4e0f0fdd4e344b26ace61380ea4972793.tar.gz |
Enabling advanced RFC 2136 configuration for DHCPd service
This change adds the ability to configure RFC 2136 domain name updates
using a hmac-md5 keyname/key.
Diffstat (limited to 'usr')
-rwxr-xr-x | usr/local/www/services_dhcp.php | 24 | ||||
-rwxr-xr-x | usr/local/www/services_dhcp_edit.php | 21 | ||||
-rw-r--r-- | usr/local/www/services_dhcpv6.php | 20 |
3 files changed, 62 insertions, 3 deletions
diff --git a/usr/local/www/services_dhcp.php b/usr/local/www/services_dhcp.php index 2566cd8..b364768 100755 --- a/usr/local/www/services_dhcp.php +++ b/usr/local/www/services_dhcp.php @@ -184,6 +184,9 @@ if (is_array($dhcpdconf)) { list($pconfig['dns1'],$pconfig['dns2']) = $dhcpdconf['dnsserver']; $pconfig['denyunknown'] = isset($dhcpdconf['denyunknown']); $pconfig['ddnsdomain'] = $dhcpdconf['ddnsdomain']; + $pconfig['ddnsdomainprimary'] = $dhcpdconf['ddnsdomainprimary']; + $pconfig['ddnsdomainkeyname'] = $dhcpdconf['ddnsdomainkeyname']; + $pconfig['ddnsdomainkey'] = $dhcpdconf['ddnsdomainkey']; $pconfig['ddnsupdate'] = isset($dhcpdconf['ddnsupdate']); $pconfig['mac_allow'] = $dhcpdconf['mac_allow']; $pconfig['mac_deny'] = $dhcpdconf['mac_deny']; @@ -280,6 +283,11 @@ if ($_POST) { $input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time."); if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain']))) $input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration."); + if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary']))) + $input_errors[] = gettext("A valid primary domain name server IP address must be specified for the dynamic domain name."); + if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) || + ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey'])) + $input_errors[] = gettext("You must specify both a valid domain key and key name."); if ($_POST['domainsearchlist']) { $domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']); foreach ($domain_array as $curdomain) { @@ -471,6 +479,9 @@ if ($_POST) { $dhcpdconf['domainsearchlist'] = $_POST['domainsearchlist']; $dhcpdconf['denyunknown'] = ($_POST['denyunknown']) ? true : false; $dhcpdconf['ddnsdomain'] = $_POST['ddnsdomain']; + $dhcpdconf['ddnsdomainprimary'] = $_POST['ddnsdomainprimary']; + $dhcpdconf['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname']; + $dhcpdconf['ddnsdomainkey'] = $_POST['ddnsdomainkey']; $dhcpdconf['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false; $dhcpdconf['mac_allow'] = $_POST['mac_allow']; $dhcpdconf['mac_deny'] = $_POST['mac_deny']; @@ -612,6 +623,9 @@ include("head.inc"); document.iform.staticarp.disabled = endis; document.iform.dhcpleaseinlocaltime.disabled = endis; document.iform.ddnsdomain.disabled = endis; + document.iform.ddnsdomainprimary.disabled = endis; + document.iform.ddnsdomainkeyname.disabled = endis; + document.iform.ddnsdomainkey.disabled = endis; document.iform.ddnsupdate.disabled = endis; document.iform.mac_allow.disabled = endis; document.iform.mac_deny.disabled = endis; @@ -890,14 +904,14 @@ include("head.inc"); <td width="22%" valign="top" class="vncell"><?=gettext("Gateway");?></td> <td width="78%" class="vtable"> <input name="gateway" type="text" class="formfld host" id="gateway" size="20" value="<?=htmlspecialchars($pconfig['gateway']);?>"><br> - <?=gettext("The default is to use the IP on this interface of the firewall as the gateway. Specify an alternate gateway here if this is not the correct gateway for your network. Type \"none\" for no gateway assignment.");?> + <?=gettext("The default is to use the IP on this interface of the firewall as the gateway. Specify an alternate gateway here if this is not the correct gateway for your network. Type \"none\" for no gateway assignment.");?> </td> </tr> <tr> <td width="22%" valign="top" class="vncell"><?=gettext("Domain name");?></td> <td width="78%" class="vtable"> <input name="domain" type="text" class="formfld unknown" id="domain" size="20" value="<?=htmlspecialchars($pconfig['domain']);?>"><br> - <?=gettext("The default is to use the domain name of this system as the default domain name provided by DHCP. You may specify an alternate domain name here.");?> + <?=gettext("The default is to use the domain name of this system as the default domain name provided by DHCP. You may specify an alternate domain name here.");?> </td> </tr> <tr> @@ -996,6 +1010,12 @@ include("head.inc"); <input name="ddnsdomain" type="text" class="formfld unknown" id="ddnsdomain" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomain']);?>"><br /> <?=gettext("Note: Leave blank to disable dynamic DNS registration.");?><br /> <?=gettext("Enter the dynamic DNS domain which will be used to register client names in the DNS server.");?> + <input name="ddnsdomainprimary" type="text" class="formfld unknown" id="ddnsdomainprimary" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainprimary']);?>"><br> + <?=gettext("Enter the primary domain name server IP address for the dynamic domain name.");?><br /> + <input name="ddnsdomainkeyname" type="text" class="formfld unknown" id="ddnsdomainkeyname" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkeyname']);?>"><br /> + <?=gettext("Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.");?> + <input name="ddnsdomainkey" type="text" class="formfld unknown" id="ddnsdomainkey" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkey']);?>"><br /> + <?=gettext("Enter the dynamic DNS domain key secret which will be used to register client names in the DNS server.");?> </div> </td> </tr> diff --git a/usr/local/www/services_dhcp_edit.php b/usr/local/www/services_dhcp_edit.php index da77afc..d7ade1c 100755 --- a/usr/local/www/services_dhcp_edit.php +++ b/usr/local/www/services_dhcp_edit.php @@ -107,6 +107,9 @@ if (isset($id) && $a_maps[$id]) { list($pconfig['wins1'],$pconfig['wins2']) = $a_maps[$id]['winsserver']; list($pconfig['dns1'],$pconfig['dns2']) = $a_maps[$id]['dnsserver']; $pconfig['ddnsdomain'] = $a_maps[$id]['ddnsdomain']; + $pconfig['ddnsdomainprimary'] = $a_maps[$id]['ddnsdomainprimary']; + $pconfig['ddnsdomainkeyname'] = $a_maps[$id]['ddnsdomainkeyname']; + $pconfig['ddnsdomainkey'] = $a_maps[$id]['ddnsdomainkey']; $pconfig['ddnsupdate'] = isset($a_maps[$id]['ddnsupdate']); list($pconfig['ntp1'],$pconfig['ntp2']) = $a_maps[$id]['ntpserver']; $pconfig['tftp'] = $a_maps[$id]['tftp']; @@ -128,6 +131,9 @@ if (isset($id) && $a_maps[$id]) { $pconfig['dns1'] = $_GET['dns1']; $pconfig['dns2'] = $_GET['dns2']; $pconfig['ddnsdomain'] = $_GET['ddnsdomain']; + $pconfig['ddnsdomainprimary'] = $_GET['ddnsdomainprimary']; + $pconfig['ddnsdomainkeyname'] = $_GET['ddnsdomainkeyname']; + $pconfig['ddnsdomainkey'] = $_GET['ddnsdomainkey']; $pconfig['ddnsupdate'] = isset($_GET['ddnsupdate']); $pconfig['ntp1'] = $_GET['ntp1']; $pconfig['ntp2'] = $_GET['ntp2']; @@ -180,7 +186,6 @@ if ($_POST) { continue; if ((($mapent['hostname'] == $_POST['hostname']) && $mapent['hostname']) || (($mapent['mac'] == $_POST['mac']) && $mapent['mac']) || (($mapent['ipaddr'] == $_POST['ipaddr']) && $mapent['ipaddr'] ) || (($mapent['cid'] == $_POST['cid']) && $mapent['cid'])) { - $input_errors[] = gettext("This Hostname, IP, MAC address or Client identifier already exists."); break; } @@ -230,6 +235,11 @@ if ($_POST) { $input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time."); if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain']))) $input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration."); + if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary']))) + $input_errors[] = gettext("A valid primary domain name server IP address must be specified for the dynamic domain name."); + if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) || + ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey'])) + $input_errors[] = gettext("You must specify both a valid domain key and key name."); if ($_POST['domainsearchlist']) { $domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']); foreach ($domain_array as $curdomain) { @@ -276,6 +286,9 @@ if ($_POST) { $mapent['domain'] = $_POST['domain']; $mapent['domainsearchlist'] = $_POST['domainsearchlist']; $mapent['ddnsdomain'] = $_POST['ddnsdomain']; + $mapent['ddnsdomainprimary'] = $_POST['ddnsdomainprimary']; + $mapent['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname']; + $mapent['ddnsdomainkey'] = $_POST['ddnsdomainkey']; $mapent['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false; unset($mapent['ntpserver']); @@ -473,6 +486,12 @@ include("head.inc"); <input name="ddnsdomain" type="text" class="formfld unknown" id="ddnsdomain" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomain']);?>"><br /> <?=gettext("Note: Leave blank to disable dynamic DNS registration.");?><br /> <?=gettext("Enter the dynamic DNS domain which will be used to register client names in the DNS server.");?> + <input name="ddnsdomainprimary" type="text" class="formfld unknown" id="ddnsdomainprimary" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainprimary']);?>"><br> + <?=gettext("Enter the primary domain name server IP address for the dynamic domain name.");?><br /> + <input name="ddnsdomainkeyname" type="text" class="formfld unknown" id="ddnsdomainkeyname" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkeyname']);?>"><br /> + <?=gettext("Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.");?> + <input name="ddnsdomainkey" type="text" class="formfld unknown" id="ddnsdomainkey" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkey']);?>"><br /> + <?=gettext("Enter the dynamic DNS domain key secret which will be used to register client names in the DNS server.");?> </div> </td> </tr> diff --git a/usr/local/www/services_dhcpv6.php b/usr/local/www/services_dhcpv6.php index 238497f..b123e12 100644 --- a/usr/local/www/services_dhcpv6.php +++ b/usr/local/www/services_dhcpv6.php @@ -109,6 +109,9 @@ if (is_array($config['dhcpdv6'][$if])){ list($pconfig['dns1'],$pconfig['dns2']) = $config['dhcpdv6'][$if]['dnsserver']; $pconfig['enable'] = isset($config['dhcpdv6'][$if]['enable']); $pconfig['ddnsdomain'] = $config['dhcpdv6'][$if]['ddnsdomain']; + $pconfig['ddnsdomainprimary'] = $config['dhcpdv6'][$if]['ddnsdomainprimary']; + $pconfig['ddnsdomainkeyname'] = $config['dhcpdv6'][$if]['ddnsdomainkeyname']; + $pconfig['ddnsdomainkey'] = $config['dhcpdv6'][$if]['ddnsdomainkey']; $pconfig['ddnsupdate'] = isset($config['dhcpdv6'][$if]['ddnsupdate']); list($pconfig['ntp1'],$pconfig['ntp2']) = $config['dhcpdv6'][$if]['ntpserver']; $pconfig['tftp'] = $config['dhcpdv6'][$if]['tftp']; @@ -192,6 +195,11 @@ if ($_POST) { $input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time."); if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain']))) $input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration."); + if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary']))) + $input_errors[] = gettext("A valid primary domain name server IPv4 address must be specified for the dynamic domain name."); + if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) || + ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey'])) + $input_errors[] = gettext("You must specify both a valid domain key and key name."); if ($_POST['domainsearchlist']) { $domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']); foreach ($domain_array as $curdomain) { @@ -294,6 +302,9 @@ if ($_POST) { $config['dhcpdv6'][$if]['domainsearchlist'] = $_POST['domainsearchlist']; $config['dhcpdv6'][$if]['enable'] = ($_POST['enable']) ? true : false; $config['dhcpdv6'][$if]['ddnsdomain'] = $_POST['ddnsdomain']; + $config['dhcpdv6'][$if]['ddnsdomainprimary'] = $_POST['ddnsdomainprimary']; + $config['dhcpdv6'][$if]['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname']; + $config['dhcpdv6'][$if]['ddnsdomainkey'] = $_POST['ddnsdomainkey']; $config['dhcpdv6'][$if]['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false; unset($config['dhcpdv6'][$if]['ntpserver']); @@ -396,6 +407,9 @@ include("head.inc"); document.iform.domain.disabled = endis; document.iform.domainsearchlist.disabled = endis; document.iform.ddnsdomain.disabled = endis; + document.iform.ddnsdomainprimary.disabled = endis; + document.iform.ddnsdomainkeyname.disabled = endis; + document.iform.ddnsdomainkey.disabled = endis; document.iform.ddnsupdate.disabled = endis; document.iform.ntp1.disabled = endis; document.iform.ntp2.disabled = endis; @@ -682,6 +696,12 @@ display_top_tabs($tab_array); <input name="ddnsdomain" type="text" class="formfld unknown" id="ddnsdomain" size="28" value="<?=htmlspecialchars($pconfig['ddnsdomain']);?>"><br /> <?=gettext("Note: Leave blank to disable dynamic DNS registration.");?><br /> <?=gettext("Enter the dynamic DNS domain which will be used to register client names in the DNS server.");?> + <input name="ddnsdomainprimary" type="text" class="formfld unknown" id="ddnsdomainprimary" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainprimary']);?>"><br> + <?=gettext("Enter the primary domain name server IP address for the dynamic domain name.");?><br /> + <input name="ddnsdomainkeyname" type="text" class="formfld unknown" id="ddnsdomainkeyname" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkeyname']);?>"><br /> + <?=gettext("Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.");?> + <input name="ddnsdomainkey" type="text" class="formfld unknown" id="ddnsdomainkey" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkey']);?>"><br /> + <?=gettext("Enter the dynamic DNS domain key secret which will be used to register client names in the DNS server.");?> </div> </td> </tr> |