[%
USE Whostmgr;
WRAPPER 'master_templates/master.tmpl'
app_key = 'nameserver_selection',
header = locale.maketext('Nameserver Selection'),
breadcrumburl = '/scripts/nameserverconfig',
base = '/scripts/nameserverconfig',
extrastyle = '
.alert {
margin-bottom: 0;
}
#dnssec-alert {
margin-bottom: 10px;
}
.advantageContent {
width: 30%;
}
'
theme='bootstrap';
%]
<div>
<p>A nameserver is a program that maintains a list of your domain names and their corresponding IP addresses, allowing visitors to find the domains hosted on your server. It is a vital component of the networking setups of most servers. However, servers using a remote nameserver do not need to configure their own.</p>
<p>Here you can select the nameserver you wish to use, if any.</p>
<form action="[% cp_security_token %]/scripts/doconfigurenameserver">
<table class="table table-striped table-bordered" id="nameserverconfig">
<tr>
<th></th>
<th>Nameserver</th>
<th class="advantageContent">Advantages</th>
<th class="advantageContent">Disadvantages</th>
<th>Notes</th>
</tr>
[% IF data.available.PowerDNS != 1 %]
<tr class="danger">
<td colspan="5">
<p>PowerDNS is not available for your system. Please choose another nameserver configuration.</p>
</td>
</tr>
[% END %]
<tr>
<td><input
type="radio"
id="nameserver_pdns"
name="nameserver"
value="powerdns"
[% IF data.available.PowerDNS != 1 %]
disabled="true"
[% END %]
[% IF data.nameserver == 'POWERDNS' %]
checked="checked"
[% END %]
onclick="updateSaveBtnState();
[% IF data.nameserver == 'POWERDNS' %]confirmPdnsSwitch();[% END %]">
</td>
<td><label for="nameserver_pdns">PowerDNS</label></td>
<td>
<ul>
<li>
Very high performance.
</li>
<li>
Instant start-up.
</li>
<li>
Low memory requirements.
</li>
</ul>
</td>
<td>
<ul>
<li>
Does not provide a recursive (caching) nameserver.
(<a target=_blank href="[% cp_security_token %]/scripts2/setupresolvconf">requires external nameservers in resolv.conf</a>)
</li>
<li>
CPU intensive with a high volume of DNS zones that use DNSSEC
</li>
</ul>
</td>
<td>
<ul>
<li>
This is the default choice.
</li>
<li>
[%- IF data.available.PowerDNS != 1 %]
<b>PowerDNS is not available for your system:</b> [% data.warnings.PowerDNS %]
[%- ELSE %]
Built-in support for DNSSEC.
[%- END %]
</li>
</ul>
</td>
</tr>
[% IF data.available.BIND != 1 %]
<tr class="danger">
<td colspan="5">
<p>Bind is not available for your system. Please choose another nameserver configuration.</p>
</td>
</tr>
[% END %]
<tr>
<td><input
type="radio"
id="nameserver_bind"
name="nameserver"
value="bind"
[% IF data.nameserver == 'BIND' %]
checked="checked"
[% END %]
[% IF data.available.BIND != 1 %]
disabled="true"
[% END %]
onclick="updateSaveBtnState();
[% IF data.nameserver == 'POWERDNS' %]confirmPdnsSwitch();[% END %]">
</td>
<td><label for="nameserver_bind">BIND</label></td>
<td>
<ul>
<li>
Configuration file can be manually edited.
</li>
<li>
Extremely configurable.
</li>
<li>
Provides a caching nameserver.
</li>
<li>
Very tolerant of syntax errors in zone files.
</li>
</ul>
</td>
<td><ul>
<li>
Large memory footprint.
</li>
</ul>
</td>
</tr>
[% IF dnsonly != 1 -%]
<tr>
<td><input
type="radio"
id="nameserver_disabled"
name="nameserver"
value="disabled"
[% IF data.nameserver == 'DISABLED' %]
checked="checked"
[% END %]
onclick="updateSaveBtnState();
[% IF data.nameserver == 'POWERDNS' %]confirmPdnsSwitch();[% END %]">
</td>
<td><label for="nameserver_disabled">Disabled</label></td>
<td> </td>
<td> </td>
<td>
<ul>
<li>This option will disable the nameserver. If you are serving dns as part of a cluster you may not need to run one locally.</li>
</ul>
</td>
</tr>
[% END -%]
</table>
[% IF data.available.PowerDNS == 1 && data.nameserver == 'POWERDNS' %]
<div id="dnssec_alert_container" style="display: none">
<div id="dnssec-alert" class="alert alert-warning" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<div class="alert-message">
<p class="alert-body">
<strong>[% locale.maketext('Warning:') %]</strong>
[% locale.maketext('If you switch your nameserver away from [asis,PowerDNS], your [asis,DNS] server will no longer serve [asis,DNSSEC] records.') %]
</p>
<p class="alert-body">[% locale.maketext('You must ensure that the following records are not configured on your domains to avoid [asis,DNS] resolution issues:') %]</p>
<ul>
<li><span>[% locale.maketext('An [asis,ALIAS] record.') %]</span></li>
<li><span>[% locale.maketext('A [asis,DS] record at the domain’s registrar.') %]</span></li>
</ul>
<div class="checkbox"><input type="checkbox" id="confirm_pdns_checkbox" onclick="pdnsUnderstand();"><label for="confirm_pdns_checkbox">[% locale.maketext('I understand and want to continue.') %]</label></div>
</div>
</div>
</div>
[% END %]
<input type="submit" value="Save" id="nameserver_save_btn" class="btn btn-primary">
</form>
<script>
var originalSelection = "[% data.nameserver %]";
var saveButton = document.querySelector("#nameserver_save_btn");
saveButton.disabled = true;
//Check for changes to the form selection:
function updateSaveBtnState () {
var currSelection = document.querySelector('input[name="nameserver"]:checked').value;
if (currSelection
&& ((originalSelection.toLowerCase() !== "powerdns" && currSelection.toLowerCase() !== originalSelection.toLowerCase() )
|| currSelection.toLowerCase() === "disabled" ) ){
saveButton.disabled = false;
}else{
saveButton.disabled = true;
}
}
</script>
[% IF data.available.PowerDNS == 1 && data.nameserver == 'POWERDNS' %]
<script>
var pdns_checkbox = document.getElementById("confirm_pdns_checkbox");
function confirmPdnsSwitch () {
var pdns_radio = document.getElementById("nameserver_pdns");
var disabled_radio = document.getElementById("nameserver_disabled");
var pdns_alert = document.getElementById("dnssec_alert_container");
pdns_checkbox.checked = false;
if (pdns_radio.checked || disabled_radio.checked) {
pdns_alert.style.display = "none";
} else {
saveButton.disabled = true;
pdns_alert.style.display = "inline";
}
}
function pdnsUnderstand () {
saveButton.disabled = !pdns_checkbox.checked;
}
</script>
[% END %]
</div>
[% END %]