Project

General

Profile

Feature #6621 ยป ddns_algortithm-choice.patch

Joeri Capens, 12/03/2017 03:48 PM

View differences:

src/etc/inc/services.inc
if ($need_ddns_updates) {
$newzone['dns-servers'] = array($dhcpifconf['ddnsdomainprimary']);
$newzone['ddnsdomainkeyname'] = $dhcpifconf['ddnsdomainkeyname'];
$newzone['ddnsdomainkeyalgorithm'] = $dhcpifconf['ddnsdomainkeyalgorithm'];
$newzone['ddnsdomainkey'] = $dhcpifconf['ddnsdomainkey'];
$dhcpdconf .= dhcpdkey($dhcpifconf);
}
......
function dhcpdkey($dhcpifconf) {
$dhcpdconf = "";
if ($dhcpifconf['ddnsdomainkeyname'] <> "" && $dhcpifconf['ddnsdomainkey'] <> "") {
if ($dhcpifconf['ddnsdomainkeyname'] <> "" && $dhcpifconf['ddnsdomainkeyalgorithm'] <> "" && $dhcpifconf['ddnsdomainkey'] <> "") {
$dhcpdconf .= "key {$dhcpifconf['ddnsdomainkeyname']} {\n";
$dhcpdconf .= " algorithm hmac-md5;\n";
$dhcpdconf .= " algorithm {$dhcpifconf['ddnsdomainkeyalgorithm']};\n";
$dhcpdconf .= " secret {$dhcpifconf['ddnsdomainkey']};\n";
$dhcpdconf .= "}\n";
}
src/usr/local/www/services_dhcp.php
$pconfig['ddnsdomain'] = $dhcpdconf['ddnsdomain'];
$pconfig['ddnsdomainprimary'] = $dhcpdconf['ddnsdomainprimary'];
$pconfig['ddnsdomainkeyname'] = $dhcpdconf['ddnsdomainkeyname'];
$pconfig['ddnsdomainkeyalgorithm'] = $dhcpdconf['ddnsdomainkeyalgorithm'];
$pconfig['ddnsdomainkey'] = $dhcpdconf['ddnsdomainkey'];
$pconfig['ddnsupdate'] = isset($dhcpdconf['ddnsupdate']);
$pconfig['ddnsforcehostname'] = isset($dhcpdconf['ddnsforcehostname']);
......
if ($_POST['maxtime'] && (!is_numeric($_POST['maxtime']) || ($_POST['maxtime'] < 60) || ($_POST['maxtime'] <= $_POST['deftime']))) {
$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']))) {
if ($_POST['ddnsupdate'] && !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']))) {
if ($_POST['ddnsupdate'] && !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("Both a valid domain key and key name must be specified.");
if ($_POST['ddnsupdate'] && (!$_POST['ddnsdomainkeyname'] || !$_POST['ddnsdomainkeyalgorithm'] || !$_POST['ddnsdomainkey'])) {
$input_errors[] = gettext("A valid domain key name, algorithm and secret must be specified.");
}
if ($_POST['domainsearchlist']) {
$domain_array = preg_split("/[ ;]+/", $_POST['domainsearchlist']);
......
$dhcpdconf['ddnsdomain'] = $_POST['ddnsdomain'];
$dhcpdconf['ddnsdomainprimary'] = $_POST['ddnsdomainprimary'];
$dhcpdconf['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname'];
$dhcpdconf['ddnsdomainkeyalgorithm'] = $_POST['ddnsdomainkeyalgorithm'];
$dhcpdconf['ddnsdomainkey'] = $_POST['ddnsdomainkey'];
$dhcpdconf['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false;
$dhcpdconf['ddnsforcehostname'] = ($_POST['ddnsforcehostname']) ? true : false;
......
$pconfig['ddnsdomainkeyname']
))->setHelp('Dynamic DNS domain key name which will be used to register client names in the DNS server.');
$section->addInput(new Form_Select(
'ddnsdomainkeyalgorithm',
'Key algorithm',
$pconfig['ddnsdomainkeyalgorithm'],
array(
'hmac-md5' => 'HMAC-MD5 (legacy default)',
'hmac-sha1' => 'HMAC-SHA1',
'hmac-sha224' => 'HMAC-SHA224',
'hmac-sha256' => 'HMAC-SHA256 (current bind9 default)',
'hmac-sha384' => 'HMAC-SHA384',
'hmac-sha512' => 'HMAC-SHA512 (most secure)',
)
));
$section->addInput(new Form_Input(
'ddnsdomainkey',
'DNS Domain key secret',
......
if (ispageload) {
<?php
if (!$pconfig['ddnsupdate'] && !$pconfig['ddnsforcehostname'] && empty($pconfig['ddnsdomain']) && empty($pconfig['ddnsdomainprimary']) &&
empty($pconfig['ddnsdomainkeyname']) && empty($pconfig['ddnsdomainkey'])) {
empty($pconfig['ddnsdomainkeyname']) && empty($pconfig['ddnsdomainkeyalgorithm']) && empty($pconfig['ddnsdomainkey'])) {
$showadv = false;
} else {
$showadv = true;
......
hideCheckbox('ddnsforcehostname', !showadvdns);
hideInput('ddnsdomainprimary', !showadvdns);
hideInput('ddnsdomainkeyname', !showadvdns);
hideInput('ddnsdomainkeyalgorithm', !showadvdns);
hideInput('ddnsdomainkey', !showadvdns);
if (showadvdns) {
src/usr/local/www/services_dhcpv6.php
$pconfig['ddnsdomain'] = $config['dhcpdv6'][$if]['ddnsdomain'];
$pconfig['ddnsdomainprimary'] = $config['dhcpdv6'][$if]['ddnsdomainprimary'];
$pconfig['ddnsdomainkeyname'] = $config['dhcpdv6'][$if]['ddnsdomainkeyname'];
$pconfig['ddnsdomainkeyalgorithm'] = $config['dhcpdv6'][$if]['ddnsdomainkeyalgorithm'];
$pconfig['ddnsdomainkey'] = $config['dhcpdv6'][$if]['ddnsdomainkey'];
$pconfig['ddnsupdate'] = isset($config['dhcpdv6'][$if]['ddnsupdate']);
$pconfig['ddnsforcehostname'] = isset($config['dhcpdv6'][$if]['ddnsforcehostname']);
......
if ($_POST['maxtime'] && (!is_numeric($_POST['maxtime']) || ($_POST['maxtime'] < 60) || ($_POST['maxtime'] <= $_POST['deftime']))) {
$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']))) {
if ($_POST['ddnsupdate'] && !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']))) {
if ($_POST['ddnsupdate'] && !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("Both a valid domain key and key name must be specified.");
if ($_POST['ddnsupdate'] && (!$_POST['ddnsdomainkeyname'] || !$_POST['ddnsdomainkeyalgorithm'] || !$_POST['ddnsdomainkey'])) {
$input_errors[] = gettext("A valid domain key name, algorithm and secret must be specified.");
}
if ($_POST['domainsearchlist']) {
$domain_array=preg_split("/[ ;]+/", $_POST['domainsearchlist']);
$domain_array = preg_split("/[ ;]+/", $_POST['domainsearchlist']);
foreach ($domain_array as $curdomain) {
if (!is_domain($curdomain)) {
$input_errors[] = gettext("A valid domain search list must be specified.");
......
$config['dhcpdv6'][$if]['ddnsdomain'] = $_POST['ddnsdomain'];
$config['dhcpdv6'][$if]['ddnsdomainprimary'] = $_POST['ddnsdomainprimary'];
$config['dhcpdv6'][$if]['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname'];
$config['dhcpdv6'][$if]['ddnsdomainkeyalgorithm'] = $_POST['ddnsdomainkeyalgorithm'];
$config['dhcpdv6'][$if]['ddnsdomainkey'] = $_POST['ddnsdomainkey'];
$config['dhcpdv6'][$if]['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false;
$config['dhcpdv6'][$if]['ddnsforcehostname'] = ($_POST['ddnsforcehostname']) ? true : false;
......
$pconfig['ddnsdomainkeyname']
))->setHelp('Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.');
$section->addInput(new Form_Select(
'ddnsdomainkeyalgorithm',
'Key algorithm',
$pconfig['ddnsdomainkeyalgorithm'],
array(
'hmac-md5' => 'HMAC-MD5 (legacy default)',
'hmac-sha1' => 'HMAC-SHA1',
'hmac-sha224' => 'HMAC-SHA224',
'hmac-sha256' => 'HMAC-SHA256 (current bind9 default)',
'hmac-sha384' => 'HMAC-SHA384',
'hmac-sha512' => 'HMAC-SHA512 (most secure)',
)
));
$section->addInput(new Form_Input(
'ddnsdomainkey',
'DDNS Domain Key secret',
......
empty($pconfig['ddnsdomain']) &&
empty($pconfig['ddnsdomainprimary']) &&
empty($pconfig['ddnsdomainkeyname']) &&
empty($pconfig['ddnsdomainkeyalgorithm']) &&
empty($pconfig['ddnsdomainkey']) &&
(empty($pconfig['ddnsclientupdates']) || ($pconfig['ddnsclientupdates'] == "allow")) &&
!$pconfig['ddnsreverse']) {
......
hideCheckbox('ddnsforcehostname', !showadvdns);
hideInput('ddnsdomainprimary', !showadvdns);
hideInput('ddnsdomainkeyname', !showadvdns);
hideInput('ddnsdomainkeyalgorithm', !showadvdns);
hideInput('ddnsdomainkey', !showadvdns);
hideInput('ddnsclientupdates', !showadvdns);
hideCheckbox('ddnsreverse', !showadvdns);
    (1-1/1)