mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-07-19 07:54:34 +00:00
Add initial support for managing Client Certificate Authority public certificates as certificate objects in the database. The new provider type 'clientca' is defined to implement this.
202 lines
13 KiB
Plaintext
202 lines
13 KiB
Plaintext
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title"><%- i18n('certificates', 'form-title', {provider: provider}) %></h5>
|
|
<button type="button" class="close cancel non-loader-content" aria-label="Close" data-dismiss="modal"> </button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="alert alert-danger mb-0 rounded-0" id="le-error-info" role="alert"></div>
|
|
<div class="text-center loader-content">
|
|
<div class="loader mx-auto my-6"></div>
|
|
<p><%- i18n('ssl', 'processing-info') %></p>
|
|
</div>
|
|
<form class="non-loader-content">
|
|
<div class="row">
|
|
<% if (provider === 'letsencrypt') { %>
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="form-label"><%- i18n('all-hosts', 'domain-names') %> <span class="form-required">*</span></label>
|
|
<input type="text" name="domain_names" class="form-control" id="input-domains" value="<%- domain_names.join(',') %>" required>
|
|
<div class="text-blue"><i class="fe fe-alert-triangle"></i> <%- i18n('ssl', 'hosts-warning') %></div>
|
|
</div>
|
|
|
|
<div class="mb-3 test-domains-container">
|
|
<button type="button" class="btn btn-secondary test-domains col-sm-12"><%- i18n('certificates', 'test-reachability') %></button>
|
|
<div class="text-secondary small">
|
|
<i class="fe fe-info"></i>
|
|
<%- i18n('certificates', 'reachability-info') %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="form-label"><%- i18n('ssl', 'letsencrypt-email') %> <span class="form-required">*</span></label>
|
|
<input name="meta[letsencrypt_email]" type="email" class="form-control" placeholder="" value="<%- getLetsencryptEmail() %>" required>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- DNS challenge -->
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="custom-switch">
|
|
<input
|
|
type="checkbox"
|
|
class="custom-switch-input"
|
|
name="meta[dns_challenge]"
|
|
value="1"
|
|
<%- getUseDnsChallenge() ? 'checked' : '' %>
|
|
>
|
|
<span class="custom-switch-indicator"></span>
|
|
<span class="custom-switch-description"><%= i18n('ssl', 'dns-challenge') %></span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12">
|
|
<fieldset class="form-fieldset dns-challenge">
|
|
<div class="text-red mb-4"><i class="fe fe-alert-triangle"></i> <%= i18n('ssl', 'certbot-warning') %></div>
|
|
|
|
<!-- Certbot DNS plugin selection -->
|
|
<div class="row">
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="form-label"><%- i18n('ssl', 'dns-provider') %> <span class="form-required">*</span></label>
|
|
<select
|
|
name="meta[dns_provider]"
|
|
id="dns_provider"
|
|
class="form-control custom-select"
|
|
>
|
|
<option
|
|
value=""
|
|
disabled
|
|
hidden
|
|
<%- getDnsProvider() === null ? 'selected' : '' %>
|
|
>Please Choose...</option>
|
|
<% _.each(dns_plugins, function(plugin_info, plugin_name){ %>
|
|
<option
|
|
value="<%- plugin_name %>"
|
|
<%- getDnsProvider() === plugin_name ? 'selected' : '' %>
|
|
><%- plugin_info.display_name %></option>
|
|
<% }); %>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Certbot credentials file content -->
|
|
<div class="row credentials-file-content">
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="form-label"><%- i18n('ssl', 'credentials-file-content') %> <span class="form-required">*</span></label>
|
|
<textarea
|
|
name="meta[dns_provider_credentials]"
|
|
class="form-control text-monospace"
|
|
id="dns_provider_credentials"
|
|
><%- getDnsProviderCredentials() %></textarea>
|
|
<div class="text-secondary small">
|
|
<i class="fe fe-info"></i>
|
|
<%= i18n('ssl', 'credentials-file-content-info') %>
|
|
</div>
|
|
<div class="text-red small">
|
|
<i class="fe fe-alert-triangle"></i>
|
|
<%= i18n('ssl', 'stored-as-plaintext-info') %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- DNS propagation delay -->
|
|
<div class="row">
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group mb-0">
|
|
<label class="form-label"><%- i18n('ssl', 'propagation-seconds') %></label>
|
|
<input
|
|
type="number"
|
|
min="0"
|
|
name="meta[propagation_seconds]"
|
|
class="form-control"
|
|
id="propagation_seconds"
|
|
value="<%- getPropagationSeconds() %>"
|
|
>
|
|
<div class="text-secondary small">
|
|
<i class="fe fe-info"></i>
|
|
<%= i18n('ssl', 'propagation-seconds-info') %>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="custom-switch">
|
|
<input type="checkbox" class="custom-switch-input" name="meta[letsencrypt_agree]" value="1" required<%- getLetsencryptAgree() ? ' checked' : '' %>>
|
|
<span class="custom-switch-indicator"></span>
|
|
<span class="custom-switch-description"><%= i18n('ssl', 'letsencrypt-agree', {url: 'https://letsencrypt.org/repository/'}) %> <span class="form-required">*</span></span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<% } else if (provider === 'other') { %>
|
|
<!-- Other -->
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="text-blue mb-4"><i class="fe fe-alert-triangle"></i> <%= i18n('ssl', 'passphrase-protection-support-info') %></div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="form-label"><%- i18n('str', 'name') %> <span class="form-required">*</span></label>
|
|
<input name="nice_name" type="text" class="form-control" placeholder="" value="<%- nice_name %>" required>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12 other-ssl">
|
|
<div class="form-group">
|
|
<div class="form-label"><%- i18n('certificates', 'other-certificate-key') %><span class="form-required">*</span></div>
|
|
<div class="custom-file">
|
|
<input type="file" class="custom-file-input" name="meta[other_certificate_key]" id="other_certificate_key" required>
|
|
<label id="other_certificate_key_label" class="custom-file-label"><%- i18n('str', 'choose-file') %></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12 other-ssl">
|
|
<div class="form-group">
|
|
<div class="form-label"><%- i18n('certificates', 'other-certificate') %><span class="form-required">*</span></div>
|
|
<div class="custom-file">
|
|
<input type="file" class="custom-file-input" name="meta[other_certificate]" id="other_certificate">
|
|
<label id="other_certificate_label" class="custom-file-label"><%- i18n('str', 'choose-file') %></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12 other-ssl">
|
|
<div class="form-group">
|
|
<div class="form-label"><%- i18n('certificates', 'other-intermediate-certificate') %></div>
|
|
<div class="custom-file">
|
|
<input type="file" class="custom-file-input" name="meta[other_intermediate_certificate]" id="other_intermediate_certificate">
|
|
<label id="other_intermediate_certificate_label" class="custom-file-label"><%- i18n('str', 'choose-file') %></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<% } else if (provider === 'clientca') { %>
|
|
<!-- Client Certificate Authority -->
|
|
<div class="col-sm-12 col-md-12">
|
|
<div class="form-group">
|
|
<label class="form-label"><%- i18n('str', 'name') %> <span class="form-required">*</span></label>
|
|
<input name="nice_name" type="text" class="form-control" placeholder="" value="<%- nice_name %>" required>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-md-12 other-ssl">
|
|
<div class="form-group">
|
|
<div class="form-label"><%- i18n('certificates', 'clientca-certificate') %><span class="form-required">*</span></div>
|
|
<div class="custom-file">
|
|
<input type="file" class="custom-file-input" name="meta[clientca_certificate]" id="clientca_certificate">
|
|
<label id="clientca_certificate_label" class="custom-file-label"><%- i18n('str', 'choose-file') %></label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<% } %>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="modal-footer non-loader-content">
|
|
<button type="button" class="btn btn-secondary cancel" data-dismiss="modal"><%- i18n('str', 'cancel') %></button>
|
|
<button type="button" class="btn btn-teal save"><%- i18n('str', 'save') %></button>
|
|
</div>
|
|
</div>
|