Viewing File: /usr/local/cpanel/whostmgr/docroot/templates/nameserverconfig.tmpl

[%
    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 %]
                    [% IF data.nameserver == 'MYDNS' || data.nameserver == 'NSD' %]depWarning();[% 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 %]
                    [% IF data.nameserver == 'MYDNS' || data.nameserver == 'NSD' %]depWarning();[% 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 data.nameserver == 'MYDNS' %]
           <tr>
                <td><input
                    type="radio"
                    id="nameserver_mydns"
                    name="nameserver"
                    value="mydns"
                    disabled
                        checked="checked"
                </td>
                <td><label for="nameserver_mydns">MyDNS</label></td>
                <td colspan="3">
                    <div class="alert alert-warning" role="alert">
                        <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
                        <div class="alert-message">
                            <strong class="alert-title">Warning:</strong>
                            <span class="alert-body">[% locale.maketext('[asis,MyDNS] is no longer supported. Please choose another nameserver configuration.') %]</span>
                        </div>
                    </div>
                </td>
            </tr>
            [% END %]

            [% IF data.nameserver == 'NSD' %]
            <tr>
                <td><input
                    type="radio"
                    id="nameserver_nsd"
                    name="nameserver"
                    value="nsd"
                    disabled
                    checked="checked"
                </td>
                <td><label for="nameserver_nsd">NSD</label></td>
                <td colspan="3">
                    <div class="alert alert-warning" role="alert">
                        <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
                        <div class="alert-message">
                            <strong class="alert-title">Warning:</strong>
                            <span class="alert-body">[% locale.maketext('[asis,NSD] is no longer supported. Please choose another nameserver configuration.') %]</span>
                        </div>
                    </div>
                </td>
            </tr>
        [% END -%]

        [% 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 %]
                    [% IF data.nameserver == 'MYDNS' || data.nameserver == 'NSD' %]depWarning();[% END %]">
                </td>
                <td><label for="nameserver_disabled">Disabled</label></td>
                <td>&nbsp;</td>
                <td>&nbsp;</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 domains do not have [asis,DS] records configured at their domain registrar. Failure to do so will cause [asis,DNS] resolution issues.') %]</p>
                    <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 %]
        [% IF data.nameserver == 'MYDNS' || data.nameserver == 'NSD' %]
            [% pretty_ns = (data.nameserver == 'MYDNS' ? 'MyDNS' : 'NSD' ) %]
        <div id="dep_alert_container" style="display: none">
            <div id="dep-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 “[_1]”, you cannot reselect “[_1]”.', pretty_ns) %]
                    </p>
                    <p class="alert-body">[% locale.maketext('For more information, read the [output,url,_1,cPanel Deprecation Plan documentation,_2].', 'https://go.cpanel.net/depplan', { 'target' => 'blank' }) %]</p>
                    <div class="checkbox"><input type="checkbox" id="confirm_dep_checkbox" onclick="depUnderstand();"><label for="confirm_dep_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 &&
                (currSelection !== "mydns" || currSelection !== "nsd") &&
                currSelection !== originalSelection.toLowerCase()){
                    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 pdns_alert = document.getElementById("dnssec_alert_container");

            pdns_checkbox.checked = false;

            if (pdns_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 %]
    [% IF data.nameserver == 'MYDNS' || data.nameserver == 'NSD' %]
    <script>
        var dep_checkbox = document.getElementById("confirm_dep_checkbox");

        function depWarning () {
            var mydns_radio = document.getElementById("nameserver_mydns") || {};
            var nsd_radio = document.getElementById("nameserver_nsd") || {};
            var dep_alert = document.getElementById("dep_alert_container") || {};

            dep_checkbox.checked = false;

            if (mydns_radio.checked || nsd_radio.checked ) {
                dep_alert.style.display = "none";
            } else {
                saveButton.disabled = true;
                dep_alert.style.display = "inline";
            }
        }

        function depUnderstand () {
            saveButton.disabled = !dep_checkbox.checked;
        }
    </script>
    [% END %]
</div>
[% END %]
Back to Directory File Manager