Viewing File: /usr/local/cpanel/base/sharedjs/zone_editor/views/dnssec.ptt
<div class="row">
<div class="col-xs-12">
<h2 class="view-title">[% locale.maketext('[asis,DNSSEC] Keys for “[_1]”', '{{ dnssec.domain }}') %]</h2>
<p>[% locale.maketext('[asis,DNSSEC] can protect clients from various forms of attack, such as [asis,Spoofing] or a [asis,Man-in-the-Middle] attack. Visitors’ browsers will compare the [asis,DNS] server’s [asis,DS] record to the [asis,DS] record at the registrar. If they match, then the visitor knows that the record is valid. [asis,DNSSEC] uses digital signatures to strengthen [asis,DNS] authentication. These digital signatures use public key cryptography to sign the [asis,DNS] data.') %]</p>
</div>
</div>
<cp-alert type="danger" id="notAllowedWarning" ng-show="dnssec.loading_error">{{ dnssec.loading_error_message }}</cp-alert>
<div id="dns_sec_keys_container" ng-hide="dnssec.loading_error">
<div class="row action-bar">
<div class="col-xs-12">
<div class="pull-right flip">
<button id="btnImport"
class="btn btn-default btn-sm"
type="button"
ng-click="dnssec.goToInnerView('import')"
ng-disabled="dnssec.is_generating"
aria-label="[% locale.maketext('Import a [asis,DNSEC] key') %]"
>
<i class="fas fa-upload" aria-hidden="true"></i>
[% locale.maketext('Import Key') %]
</button>
<button id="btnGenerate"
type="button"
class="btn btn-primary btn-sm"
ng-click="dnssec.launchGenerateModal()"
aria-label="[% locale.maketext('Create [asis,DNSSEC] keys') %]"
>
<i class="fas fa-plus" aria-hidden="true"></i>
[% locale.maketext('Create Key') %]
</button>
</div>
</div>
</div>
<div id="tableContainer" class="dnssec-view">
<table id="dns_sec_keys" class="table table-striped table-striped-child responsive-table dnssec details-table">
<thead>
<tr>
<th class="name-column">[% locale.maketext('Key Tag') %]</th>
<th class="hidden-xs">[% locale.maketext('Key Type') %]</th>
<th class="hidden-xs hidden-sm">[% locale.maketext('Algorithm') %]</th>
<th class="hidden-xs">[% locale.maketext('Created') %]</th>
<th></th>
</tr>
</thead>
<tbody>
<tr id="key_row_{{:: key.key_tag }}"
ng-repeat-start="key in dnssec.keys track by key.key_id"
ng-class="{ 'warning': key.should_rotate }">
<td id="key_tag_column_{{:: key.key_tag }}" class="name-column">
<div class="row-expand-container">
<button type="button" id="lnkToggleViewInfo_{{::key.key_tag}}" class="btn btn-link"
title="[% locale.maketext('View details.') %]"
aria-label="[% locale.maketext('View details.') %]"
ng-click="dnssec.expandKey(key, !key.isExpanded)"
aria-expanded="{{key.isExpanded}}"
>
<i class="fas"
ng-class="{ 'fa-chevron-right': !dnssec.isRTL && !key.isExpanded, 'fa-chevron-left': dnssec.isRTL && !key.isExpanded, 'fa-chevron-down': key.isExpanded }"
aria-hidden="true"
>
</i>
</button>
</div>
<span id="key_tag_{{:: key.key_tag}}" class="account-name collapse-text">{{ ::key.key_tag }}
<button type="button" id="lnkToggleViewForWarning_{{::key.key_tag}}" class="btn btn-link dnssec-table-cell-warning-icon visible-xs-inline-block hidden-sm hidden-md hidden-lg"
ng-if="::key.should_rotate"
uib-tooltip="[% locale.maketext('We recommend that you rotate this key.') %]"
aria-label="[% locale.maketext('We recommend that you rotate this key.') %]"
ng-click="dnssec.expandKey(key, !key.isExpanded)">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
</button>
</span>
</td>
<td id="key_type_{{:: key.key_tag }}" class="hidden-xs">{{:: key.key_type }}</td>
<td id="key_algo_{{:: key.key_tag }}" class="hidden-xs hidden-sm">{{:: key.algo_num}}: {{:: key.algo_tag }}</td>
<td id="key_created_{{:: key.key_tag }}" class="hidden-xs">
{{:: key.created }}
<button type="button" id="lnkToggleViewForWarning_{{::key.key_tag}}" class="btn btn-link dnssec-table-cell-warning-icon hidden-xs"
ng-if="::key.should_rotate"
uib-tooltip="[% locale.maketext('We recommend that you rotate this key.') %]"
aria-label="[% locale.maketext('We recommend that you rotate this key.') %]"
ng-click="dnssec.expandKey(key, !key.isExpanded)">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
</button>
</td>
<td class="action-column">
<span ng-if="key.digests">
<button type="button"
id="ds_records_for_{{:: key.key_tag }}"
class="btn btn-outline-primary btn-sm"
ng-disabled="dnssec.is_generating"
aria-label="[% locale.maketext('View [asis,DS] Records for key “[_1]”', '{{ key.key_tag }}') %]"
ng-click="dnssec.goToInnerView('dsrecords', key.key_id)">
<i class="fas fa-search" aria-hidden="true"></i>
[% locale.maketext("View [asis,DS] Records") %]
</button>
</span>
<button type="button"
id="export_for_{{:: key.key_tag }}"
aria-label="[% locale.maketext('Export Key “[_1]”', '{{ key.key_tag }}') %]"
ng-disabled="dnssec.is_generating"
ng-click="dnssec.goToInnerView('export', key.key_id)"
class="btn btn-outline-primary btn-sm hidden-xs">
<i class="fas fa-download" aria-hidden="true"></i>
[% locale.maketext("Export") %]
</button>
</td>
</tr>
<tr ng-repeat-end="" class="wordbreak" ng-class="{ 'warning': key.should_rotate }">
<td class="expand-panel-data" colspan="5">
<div class="list-panel expand-panel"
ng-if="key.isExpanded">
<div class="row">
<div class="col-xs-12 col-sm-8">
<cp-alert type="info" info-label="" ng-if="key.should_rotate">[% locale.maketext('We recommend that you rotate this key. Read our [output,url,_1,documentation,_2] on how to rotate your [asis,DNSSEC] keys.', 'https://go.cpanel.net/rotatednsseckey', { 'target' => 'rotatednsseckey' }) %]</cp-alert>
<dl class="expand-details">
<dt class="visible-xs">[% locale.maketext('Key Tag') %]</dt>
<dd class="visible-xs">{{:: key.key_tag }}</dd>
<dt class="visible-xs">[% locale.maketext('Key Type') %]</dt>
<dd class="visible-xs">{{:: key.key_type }}</dd>
<dt>[% locale.maketext('Algorithm') %]</dt>
<dd id="key_algo_full_{{::key.key_tag}}"> {{:: key.algo_desc }} [% locale.maketext('(Algorithm [_1])', '{{ key.algo_num }}') %], {{:: key.bits_msg }} </dd>
<dt class="visible-xs">[% locale.maketext('Created') %]</dt>
<dd class="visible-xs">
{{:: key.created }}
<i ng-if="::key.should_rotate" class="fas fa-exclamation-triangle" uib-tooltip="[% locale.maketext('We recommend that you rotate this key.') %]" aria-label="[% locale.maketext('We recommend that you rotate this key.') %]"></i>
</dd>
<dt>[% locale.maketext('Status') %]</dt>
<dd id="key_status_{{::key.key_tag}}">
<span ng-show="key.active">
<i class="fas fa-fw fa-check text-success" aria-hidden="true"></i>
[% locale.maketext('Active') %]
</span>
<span ng-show="!key.active">
<i class="fas fa-fw fa-times text-danger" aria-hidden="true"></i>
[% locale.maketext('Not Active') %]
</span>
</dd>
</dl>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="expand-actions">
<button type="button"
id="inner_export_for_{{:: key.key_tag }}"
aria-label="[% locale.maketext('Export Key “[_1]”', '{{ key.key_tag }}') %]"
ng-disabled="dnssec.is_generating"
ng-click="dnssec.goToInnerView('export', key.key_id)"
class="btn btn-outline-primary btn-sm visible-xs-inline-block hidden-sm hidden-md hidden-lg">
<i class="fas fa-download" aria-hidden="true"></i>
[% locale.maketext("Export") %]
</button>
<span ng-if="!key.active">
<button type="button"
id="activate_for_{{:: key.key_tag }}"
aria-label="[% locale.maketext('Activate Key “[_1]”', '{{ key.key_tag }}') %]"
ng-disabled="dnssec.is_generating"
cp-action="dnssec.activate(key)"
button-class="btn btn-outline-primary btn-sm">
<i class="fas fa-play-circle" aria-hidden="true"></i>
[% locale.maketext("Activate") %]
</button>
</span>
<span ng-if="key.active">
<button type="button"
id="deactivate_for_{{:: key.key_tag }}"
aria-label="[% locale.maketext('Deactivate Key “[_1]”', '{{ key.key_tag }}') %]"
ng-disabled="dnssec.is_generating"
cp-action="dnssec.confirmDeactivateKey(key)"
button-class="btn btn-outline-primary btn-sm">
<i class="fas fa-stop-circle" aria-hidden="true"></i>
[% locale.maketext("Deactivate") %]
</button>
</span>
<button type="button"
id="delete_key_for_{{:: key.key_tag }}"
aria-label="[% locale.maketext('Delete key “[_1]”', '{{ key.key_tag }}') %]"
ng-disabled="dnssec.is_generating"
cp-action="dnssec.confirmDeleteKey(key)"
button-class="btn btn-outline-primary btn-sm">
<i class="fas fa-fw fa-trash-alt" aria-hidden="true"></i>
[% locale.maketext("Delete") %]
</button>
<button type="button"
id="dnskey_for_{{:: key.key_tag }}"
aria-label="[% locale.maketext('Public [asis,DNSKEY] for “[_1]”', '{{ key.key_tag }}') %]"
ng-disabled="dnssec.is_generating"
ng-click="dnssec.goToInnerView('dnskey', key.key_id)"
class="btn btn-outline-primary btn-sm">
<i class="fas fa-download" aria-hidden="true"></i>
[% locale.maketext("Public [asis,DNSKEY]") %]
</button>
</div>
</div>
</div>
</div>
</td>
</tr>
<tr ng-if="!(dnssec.keys.length > 0 || dnssec.is_loading)">
<td colspan="6" id="emptyRow">
[% locale.maketext("No keys found. Click Create Key or Import Key to get started.") %]
</td>
</tr>
<tr id="loadingNotice" class="info empty-row" ng-if="dnssec.is_loading">
<td colspan="6" id="loadingMessage">
<i id="loadingSpinner" class="fas fa-spinner fa-spin" aria-hidden="true"></i>
[% locale.maketext('Loading …') %]
</td>
</tr>
</tbody>
</table>
</div>
</div>
<script id="dnssec_confirm_deactivate.html" type="text/ng-template">
<div class="modal-header">
<h4>[% locale.maketext('Confirm Deactivation') %]</h4>
</div>
<div class="modal-body">
<p>[% locale.maketext('Before deactivating this key, you must remove the corresponding [asis,DS] record at your domain registrar. Failure to do this will cause [asis,DNSSEC] validation to fail, which will cause [asis,DNS] resolution errors.') %]</p>
<p class="last-paragraph">[% locale.maketext('Are you certain that you want to deactivate key “[_1]”?', '{{ ctrl.key.key_tag }}') %]</p>
</div>
<div class="modal-footer">
<button type="button"
id="modalContinueBtn"
cp-action="ctrl.confirm()"
button-class="btn btn-primary btn-sm">[% locale.maketext('Deactivate') %]</button>
<button type="button"
id="modalCancelBtn"
class="btn btn-link btn-sm"
ng-click="ctrl.cancel()">[% locale.maketext('Cancel') %]</button>
</div>
</script>
<script id="dnssec_confirm_delete.html" type="text/ng-template">
<div class="modal-header">
<h4>[% locale.maketext('Confirm Delete') %]</h4>
</div>
<div class="modal-body">
<p>[% locale.maketext('Before deleting this key, you must remove the corresponding [asis,DS] record at your domain registrar. Failure to do this will cause [asis,DNSSEC] validation to fail, which will cause [asis,DNS] resolution errors.') %]</p>
<p class="last-paragraph">[% locale.maketext('Are you certain that you want to delete key “[_1]”?', '{{ ctrl.key.key_tag }}') %]</p>
</div>
<div class="modal-footer">
<button type="button"
id="modalContinueBtn"
cp-action="ctrl.confirm()"
button-class="btn btn-primary btn-sm">[% locale.maketext('Delete') %]</button>
<button type="button"
id="modalCancelBtn"
class="btn btn-link btn-sm"
ng-click="ctrl.cancel()">[% locale.maketext('Cancel') %]</button>
</div>
</script>
<script id="quick_generate.html" type="text/ng-template">
<div class="modal-header">
<h4>[% locale.maketext('Confirm Create') %]</h4>
</div>
<div class="modal-body">
<p>[% locale.maketext('Click the Create button to generate the following keys:') %]</p>
<pre><code>Key-Signing Key: RSA/SHA-256 (Algorithm 8), 2,048 bits
Zone-Signing Key: RSA/SHA-256 (Algorithm 8), 1,024 bits</code></pre>
<p>[% locale.maketext('Most domain registrars will accept one of these keys.') %]</p>
<p class="last-paragraph">[% locale.maketext('If you want to create a customized key with a different algorithm, click the Customize button.') %]</p>
</div>
<div class="modal-footer clearfix">
<button type="button"
id="modalCustomize"
aria-label="[% locale.maketext('Customize a [asis,DNSSEC] key') %]"
class="btn btn-default btn-sm pull-left flip"
ng-click="ctrl.goToGenerate()">[% locale.maketext('Customize') %]</button>
<button type="button"
id="modalContinueBtn"
aria-label="[% locale.maketext('Create the [asis,DNSSEC] keys') %]"
cp-action="ctrl.confirm()"
button-class="btn btn-primary btn-sm">[% locale.maketext('Create') %]</button>
<button type="button"
id="modalCancelBtn"
aria-label="[% locale.maketext('Close the dialog') %]"
class="btn btn-link btn-sm"
ng-click="ctrl.cancel()">[% locale.maketext('Cancel') %]</button>
</div>
</script>
Back to Directory
File Manager