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;