From 22ae1adf1733df3c08f31a01f1891a201b295b46 Mon Sep 17 00:00:00 2001 From: Mark Schouten Date: Tue, 24 Feb 2015 11:15:52 +0100 Subject: [PATCH] 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 --- index.php | 36 ++++++++++++++++++++++++++++++++++-- zones.php | 22 ++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index 669509e..60cdf8b 100644 --- a/index.php +++ b/index.php @@ -436,7 +436,23 @@ $(document).ready(function () { create: true, list: false, edit: false, - defaultValue: '', + input: function(data) { + var $template = data.form.find('#Edit-template'); + var $elem = $(''); + $elem.val(); + $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(); + $elem.attr('readonly', false); + } + }); + }); + return $elem; + }, inputClass: 'nameserver nameserver1' }, nameserver2: { @@ -444,7 +460,23 @@ $(document).ready(function () { create: true, list: false, edit: false, - defaultValue: '', + input: function(data) { + var $template = data.form.find('#Edit-template'); + var $elem = $(''); + $elem.val(); + $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(); + $elem.attr('readonly', false); + } + }); + }); + return $elem; + }, inputClass: 'nameserver nameserver2' }, serial: { diff --git a/zones.php b/zones.php index 83cc135..0dd31b4 100644 --- a/zones.php +++ b/zones.php @@ -498,6 +498,9 @@ case "create": if ($template['name'] !== $_POST['template']) continue; foreach ($template['records'] as $record) { + if ($record['type'] == 'NS' and array_search($record['content'], $nameservers) !== FALSE) { + continue; + } if (isset($record['label'])) { $record['name'] = $record['label']; unset($record['label']); @@ -628,6 +631,25 @@ case "export": jtable_respond($export, 'single'); 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: jtable_respond(null, 'error', 'No such action'); break;