diff --git a/dashboard/src/components/DomainDialog.vue b/dashboard/src/components/DomainDialog.vue index 5e3343afa..df710ab2c 100644 --- a/dashboard/src/components/DomainDialog.vue +++ b/dashboard/src/components/DomainDialog.vue @@ -20,7 +20,31 @@ const provider = ref(''); const tlsProvider = ref('letsencrypt-prod-wildcard'); const showAdvanced = ref(false); const customNameservers = ref(false); -const dnsConfig = ref({}); + +// we have to define all properties here which are used in the DomainProviderForm to keep reactivity alive +const dnsConfig = ref({ + accessKeyId: '', + accessKey: '', + accessToken: '', + apiKey: '', + apikey: '', + appSecret: '', + apiPassword: '', + apiSecret: '', + consumerKey: '', + credentials: { client_email: '', private_key: '' }, + customerNumber: '', + defaultProxyStatus: false, + email: '', + endpoint: '', + password: '', + projectId: '', + secretAccessKey: '', + secretapikey: '', + token: '', + tokenType: '', + username: '', +}); const isFormValid = ref(false); function checkValidity() { diff --git a/dashboard/src/components/DomainProviderForm.vue b/dashboard/src/components/DomainProviderForm.vue index 6b01eaf68..8c0175542 100644 --- a/dashboard/src/components/DomainProviderForm.vue +++ b/dashboard/src/components/DomainProviderForm.vue @@ -70,9 +70,9 @@ function needsPort80(dnsProvider, tlsProvider) { (tlsProvider === 'letsencrypt-prod' || tlsProvider === 'letsencrypt-staging')); } -function setDefaultTlsProvider() { +function setDefaultTlsProvider(p) { // wildcard LE won't work without automated DNS - if (provider.value === 'manual' || provider.value === 'noop' || provider.value === 'wildcard') { + if (p === 'manual' || p === 'noop' || p === 'wildcard') { tlsProvider.value = 'letsencrypt-prod'; } else { tlsProvider.value = 'letsencrypt-prod-wildcard'; @@ -80,68 +80,32 @@ function setDefaultTlsProvider() { } function resetFields() { - dnsConfig.value = {}; - if (provider.value === 'route53') { - dnsConfig.value.accessKeyId = ''; - dnsConfig.value.secretAccessKey = ''; - } else if (provider.value === 'gcdns') { - dnsConfig.value.projectId = ''; - dnsConfig.value.credentials = { - client_email: '', - private_key: '', - }; - } else if (provider.value === 'digitalocean') { - dnsConfig.value.token = ''; - } else if (provider.value === 'linode') { - dnsConfig.value.token = ''; - } else if (provider.value === 'bunny') { - dnsConfig.value.accessKey = ''; - } else if (provider.value === 'dnsimple') { - dnsConfig.value.accessToken = ''; - } else if (provider.value === 'hetzner') { - dnsConfig.value.token = ''; - } else if (provider.value === 'vultr') { - dnsConfig.value.token = ''; - } else if (provider.value === 'desec') { - dnsConfig.value.token = ''; - } else if (provider.value === 'gandi') { - dnsConfig.value.token = ''; - dnsConfig.value.tokenType = ''; - } else if (provider.value === 'godaddy') { - dnsConfig.value.apiKey = ''; - dnsConfig.value.apiSecret = ''; - } else if (provider.value === 'cloudflare') { - dnsConfig.value.token = ''; - dnsConfig.value.email = ''; - dnsConfig.value.tokenType = ''; - dnsConfig.value.defaultProxyStatus = false; - } else if (provider.value === 'namecom') { - dnsConfig.value.token = ''; - dnsConfig.value.username = ''; - } else if (provider.value === 'namecheap') { - dnsConfig.value.token = ''; - dnsConfig.value.username = ''; - } else if (provider.value === 'inwx') { - dnsConfig.value.username = ''; - dnsConfig.value.password = ''; - } else if (provider.value === 'netcup') { - dnsConfig.value.customerNumber = ''; - dnsConfig.value.apiKey = ''; - dnsConfig.value.apiPassword = ''; - } else if (provider.value === 'ovh') { - dnsConfig.value.endpoint = ''; - dnsConfig.value.consumerKey = ''; - dnsConfig.value.appKey = ''; - dnsConfig.value.appSecret = '';; - } else if (provider.value === 'porkbun') { - dnsConfig.value.apikey = ''; - dnsConfig.value.secretapikey = ''; - } + dnsConfig.value.accessKeyId = ''; + dnsConfig.value.accessKey = ''; + dnsConfig.value.accessToken = ''; + dnsConfig.value.apiKey = ''; + dnsConfig.value.apikey = ''; + dnsConfig.value.appSecret = ''; + dnsConfig.value.apiPassword = ''; + dnsConfig.value.apiSecret = ''; + dnsConfig.value.consumerKey = ''; + dnsConfig.value.credentials = { client_email: '', private_key: '' }; + dnsConfig.value.customerNumber = ''; + dnsConfig.value.defaultProxyStatus = false; + dnsConfig.value.email = ''; + dnsConfig.value.endpoint = ''; + dnsConfig.value.password = ''; + dnsConfig.value.projectId = ''; + dnsConfig.value.secretAccessKey = ''; + dnsConfig.value.secretapikey = ''; + dnsConfig.value.token = ''; + dnsConfig.value.tokenType = ''; + dnsConfig.value.username = ''; } -function onProviderChange() { - setDefaultTlsProvider(); - resetFields(); +function onProviderChange(p) { + setDefaultTlsProvider(p); + resetFields(p); } function onGcdnsFileInputChange(event) { @@ -164,7 +128,7 @@ function onGcdnsFileInputChange(event) {