Get the nameservers from the template, if any. If we don't have nameservers in the template use the default nameservers.

Also, when appying the template, skip adding records for nameservers that we already added. This fixes and closes issue #15
This commit is contained in:
Mark Schouten 2015-02-24 11:15:52 +01:00
parent 6f3c5f8a20
commit 22ae1adf17
2 changed files with 56 additions and 2 deletions

View file

@ -436,7 +436,23 @@ $(document).ready(function () {
create: true, create: true,
list: false, list: false,
edit: false, edit: false,
defaultValue: '<?php echo $defaults['primaryns']; ?>', input: function(data) {
var $template = data.form.find('#Edit-template');
var $elem = $('<input type="text" name="nameserver1" />');
$elem.val(<?php echo "'".$defaults['primaryns']."'"; ?>);
$template.change(function() {
$.get('zones.php?action=gettemplatenameservers&template='+$template.val()+'&prisec=pri', function(getdata) {
if (getdata != "") {
$elem.val(getdata);
$elem.attr('readonly', true);
} else {
$elem.val(<?php echo "'".$defaults['primaryns']."'"; ?>);
$elem.attr('readonly', false);
}
});
});
return $elem;
},
inputClass: 'nameserver nameserver1' inputClass: 'nameserver nameserver1'
}, },
nameserver2: { nameserver2: {
@ -444,7 +460,23 @@ $(document).ready(function () {
create: true, create: true,
list: false, list: false,
edit: false, edit: false,
defaultValue: '<?php echo $defaults['secondaryns']; ?>', input: function(data) {
var $template = data.form.find('#Edit-template');
var $elem = $('<input type="text" name="nameserver2" />');
$elem.val(<?php echo "'".$defaults['secondaryns']."'"; ?>);
$template.change(function() {
$.get('zones.php?action=gettemplatenameservers&template='+$template+'&prisec=sec', function(getdata) {
if (getdata != "") {
$elem.val(getdata);
$elem.attr('readonly', true);
} else {
$elem.val(<?php echo "'".$defaults['secondaryns']."'"; ?>);
$elem.attr('readonly', false);
}
});
});
return $elem;
},
inputClass: 'nameserver nameserver2' inputClass: 'nameserver nameserver2'
}, },
serial: { serial: {

View file

@ -498,6 +498,9 @@ case "create":
if ($template['name'] !== $_POST['template']) continue; if ($template['name'] !== $_POST['template']) continue;
foreach ($template['records'] as $record) { foreach ($template['records'] as $record) {
if ($record['type'] == 'NS' and array_search($record['content'], $nameservers) !== FALSE) {
continue;
}
if (isset($record['label'])) { if (isset($record['label'])) {
$record['name'] = $record['label']; $record['name'] = $record['label'];
unset($record['label']); unset($record['label']);
@ -628,6 +631,25 @@ case "export":
jtable_respond($export, 'single'); jtable_respond($export, 'single');
break; break;
case "gettemplatenameservers":
$ret = array();
$type = $_GET['prisec'];
foreach (user_template_list() as $template) {
if ($template['name'] !== $_GET['template']) continue;
$rc = 0;
foreach ($template['records'] as $record) {
if ($record['type'] == "NS") {
if (($type == 'pri' && $rc == 0) or ($type == 'sec' && $rc == 1)) {
echo $record['content'];
exit(0);
}
$rc++;
}
}
echo "";
}
break;
default: default:
jtable_respond(null, 'error', 'No such action'); jtable_respond(null, 'error', 'No such action');
break; break;