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 %]">
                </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>&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 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 %]
Back to Directory File Manager