mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-31 07:43:33 +00:00 
			
		
		
		
	Implements dns challenge provider selection in frontend
This commit is contained in:
		| @@ -3,6 +3,8 @@ const Mn               = require('backbone.marionette'); | ||||
| const App              = require('../../main'); | ||||
| const CertificateModel = require('../../../models/certificate'); | ||||
| const template         = require('./form.ejs'); | ||||
| const i18n             = require('../../i18n'); | ||||
| const dns_providers    = require('../../../../../utils/certbot-dns-plugins'); | ||||
|  | ||||
| require('jquery-serializejson'); | ||||
| require('selectize'); | ||||
| @@ -21,25 +23,46 @@ module.exports = Mn.View.extend({ | ||||
|         other_certificate:                    '#other_certificate', | ||||
|         other_certificate_label:              '#other_certificate_label', | ||||
|         other_certificate_key:                '#other_certificate_key', | ||||
|         cloudflare_switch:                    'input[name="meta[cloudflare_use]"]', | ||||
|         cloudflare_token:                     'input[name="meta[cloudflare_token]"', | ||||
|         cloudflare:                           '.cloudflare', | ||||
|         dns_challenge_switch:                 'input[name="meta[dns_challenge]"]', | ||||
|         dns_challenge_content:                '.dns-challenge', | ||||
|         dns_provider:                         'select[name="meta[dns_provider]"]', | ||||
|         credentials_file_content:             '.credentials-file-content', | ||||
|         dns_provider_credentials:             'textarea[name="meta[dns_provider_credentials]"]', | ||||
|         propagation_seconds:                  'input[name="meta[propagation_seconds]"]', | ||||
|         other_certificate_key_label:          '#other_certificate_key_label', | ||||
|         other_intermediate_certificate:       '#other_intermediate_certificate', | ||||
|         other_intermediate_certificate_label: '#other_intermediate_certificate_label' | ||||
|     }, | ||||
|      | ||||
|     events: { | ||||
|         'change @ui.cloudflare_switch': function() { | ||||
|             let checked = this.ui.cloudflare_switch.prop('checked'); | ||||
|             if (checked) {                 | ||||
|                 this.ui.cloudflare_token.prop('required', 'required'); | ||||
|                 this.ui.cloudflare.show(); | ||||
|             } else {                 | ||||
|                 this.ui.cloudflare_token.prop('required', false); | ||||
|                 this.ui.cloudflare.hide();                 | ||||
|         'change @ui.dns_challenge_switch': function () { | ||||
|             const checked = this.ui.dns_challenge_switch.prop('checked'); | ||||
|             if (checked) { | ||||
|                 this.ui.dns_provider.prop('required', 'required'); | ||||
|                 const selected_provider = this.ui.dns_provider[0].options[this.ui.dns_provider[0].selectedIndex].value; | ||||
|                 if(selected_provider != '' && dns_providers[selected_provider].credentials !== false){ | ||||
|                     this.ui.dns_provider_credentials.prop('required', 'required'); | ||||
|                 } | ||||
|                 this.ui.dns_challenge_content.show(); | ||||
|             } else { | ||||
|                 this.ui.dns_provider.prop('required', false); | ||||
|                 this.ui.dns_provider_credentials.prop('required', false); | ||||
|                 this.ui.dns_challenge_content.hide();                 | ||||
|             } | ||||
|         }, | ||||
|  | ||||
|         'change @ui.dns_provider': function () { | ||||
|             const selected_provider = this.ui.dns_provider[0].options[this.ui.dns_provider[0].selectedIndex].value; | ||||
|             if (selected_provider != '' && dns_providers[selected_provider].credentials !== false) { | ||||
|                 this.ui.dns_provider_credentials.prop('required', 'required'); | ||||
|                 this.ui.dns_provider_credentials[0].value = dns_providers[selected_provider].credentials; | ||||
|                 this.ui.credentials_file_content.show(); | ||||
|             } else { | ||||
|                 this.ui.dns_provider_credentials.prop('required', false); | ||||
|                 this.ui.credentials_file_content.hide();                 | ||||
|             } | ||||
|         }, | ||||
|          | ||||
|         'click @ui.save': function (e) { | ||||
|             e.preventDefault(); | ||||
|  | ||||
| @@ -56,7 +79,7 @@ module.exports = Mn.View.extend({ | ||||
|  | ||||
|  | ||||
|             let domain_err = false; | ||||
|             if (!data.meta.cloudflare_use) {                 | ||||
|             if (!data.meta.dns_challenge) {                 | ||||
|                 data.domain_names.split(',').map(function (name) { | ||||
|                     if (name.match(/\*/im)) { | ||||
|                         domain_err = true; | ||||
| @@ -65,7 +88,7 @@ module.exports = Mn.View.extend({ | ||||
|             } | ||||
|  | ||||
|             if (domain_err) { | ||||
|                 alert('Cannot request Let\'s Encrypt Certificate for wildcard domains when not using CloudFlare DNS'); | ||||
|                 alert(i18n('ssl', 'no-wildcard-without-dns')); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
| @@ -73,8 +96,9 @@ module.exports = Mn.View.extend({ | ||||
|             if (typeof data.meta !== 'undefined' && typeof data.meta.letsencrypt_agree !== 'undefined') { | ||||
|                 data.meta.letsencrypt_agree = !!data.meta.letsencrypt_agree; | ||||
|             } | ||||
|             if (typeof data.meta !== 'undefined' && typeof data.meta.cloudflare_use !== 'undefined') { | ||||
|                 data.meta.cloudflare_use = !!data.meta.cloudflare_use; | ||||
|  | ||||
|             if (typeof data.meta !== 'undefined' && typeof data.meta.dns_challenge !== 'undefined') { | ||||
|                 data.meta.dns_challenge = !!data.meta.dns_challenge; | ||||
|             } | ||||
|  | ||||
|             if (typeof data.domain_names === 'string' && data.domain_names) { | ||||
| @@ -176,14 +200,22 @@ module.exports = Mn.View.extend({ | ||||
|         getLetsencryptEmail: function () { | ||||
|             return typeof this.meta.letsencrypt_email !== 'undefined' ? this.meta.letsencrypt_email : App.Cache.User.get('email'); | ||||
|         }, | ||||
|  | ||||
|         getLetsencryptAgree: function () { | ||||
|             return typeof this.meta.letsencrypt_agree !== 'undefined' ? this.meta.letsencrypt_agree : false; | ||||
|         }, | ||||
|  | ||||
|         getCloudflareUse: function () { | ||||
|             return typeof this.meta.cloudflare_use !== 'undefined' ? this.meta.cloudflare_use : false; | ||||
|         } | ||||
|         getUseDnsChallenge: function () { | ||||
|             return typeof this.meta.dns_challenge !== 'undefined' ? this.meta.dns_challenge : false; | ||||
|         }, | ||||
|         getDnsProvider: function () { | ||||
|             return typeof this.meta.dns_provider !== 'undefined' && this.meta.dns_provider != '' ? this.meta.dns_provider : null; | ||||
|         }, | ||||
|         getDnsProviderCredentials: function () { | ||||
|             return typeof this.meta.dns_provider_credentials !== 'undefined' ? this.meta.dns_provider_credentials : ''; | ||||
|         }, | ||||
|         getPropagationSeconds: function () { | ||||
|             return typeof this.meta.propagation_seconds !== 'undefined' ? this.meta.propagation_seconds : ''; | ||||
|         }, | ||||
|         dns_plugins: dns_providers, | ||||
|     }, | ||||
|  | ||||
|     onRender: function () { | ||||
| @@ -199,7 +231,8 @@ module.exports = Mn.View.extend({ | ||||
|             }, | ||||
|             createFilter: /^(?:[^.]+\.?)+[^.]$/ | ||||
|         }); | ||||
|         this.ui.cloudflare.hide(); | ||||
|         this.ui.dns_challenge_content.hide(); | ||||
|         this.ui.credentials_file_content.hide();  | ||||
|     }, | ||||
|  | ||||
|     initialize: function (options) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user