Finish initial implementation dns setup view

This commit is contained in:
Johannes Zellner
2025-04-02 12:43:59 +02:00
parent f82f3fa858
commit 5527926508
6 changed files with 238 additions and 96 deletions

View File

@@ -1,6 +1,6 @@
<script setup>
import { TextInput, FormGroup, Checkbox } from 'pankow';
import { TextInput, FormGroup, Checkbox, SingleSelect } from 'pankow';
import { ENDPOINTS_OVH } from '../constants.js';
defineProps({
@@ -8,6 +8,10 @@ defineProps({
type: String,
default: '',
},
showAdvanced: {
type: Boolean,
default: false,
},
});
const provider = defineModel('provider');
@@ -39,6 +43,14 @@ const domainProviders = [
{ name: 'No-op (only for development)', value: 'noop' }
];
const tlsProviders = [
{ name: 'Let\'s Encrypt Prod', value: 'letsencrypt-prod' },
{ name: 'Let\'s Encrypt Prod - Wildcard', value: 'letsencrypt-prod-wildcard' },
{ name: 'Let\'s Encrypt Staging', value: 'letsencrypt-staging' },
{ name: 'Let\'s Encrypt Staging - Wildcard', value: 'letsencrypt-staging-wildcard' },
{ name: 'Self-Signed', value: 'fallback' }, // this is not 'Custom' because we don't allow user to upload certs during setup phase
];
function needsPort80(dnsProvider, tlsProvider) {
return ((dnsProvider === 'manual' || dnsProvider === 'noop' || dnsProvider === 'wildcard') &&
(tlsProvider === 'letsencrypt-prod' || tlsProvider === 'letsencrypt-staging'));
@@ -133,9 +145,7 @@ function onGcdnsFileInputChange(event) {
<div>
<FormGroup>
<label for="providerInput">{{ $t('domains.domainDialog.provider') }} <sup><a href="https://docs.cloudron.io/domains/#dns-providers" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<select id="providerInput" v-model="provider" @change="setDefaultTlsProvider()" required>
<option v-for="p in domainProviders" :value="p.value" :key="p.value">{{ p.name }}</option>
</select>
<SingleSelect v-model="provider" @select="setDefaultTlsProvider()" :options="domainProviders" option-key="value" option-label="name" />
</FormGroup>
<!-- Route53 -->
@@ -322,6 +332,11 @@ function onGcdnsFileInputChange(event) {
<TextInput id="inwxPasswordInput" v-model="dnsConfig.password" required />
</FormGroup>
<FormGroup v-if="showAdvanced">
<label>Certificate Provider <sup><a href="https://docs.cloudron.io/certificates/#certificate-providers" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<SingleSelect v-model="tlsProvider" :options="tlsProviders" option-key="value" option-label="name"/>
</FormGroup>
<p class="small text-info text-bold" v-show="provider === 'wildcard'" v-html="$t('domains.domainDialog.wildcardInfo', { domain: domain })"></p>
<p class="small text-info text-bold" v-show="provider === 'manual'" v-html="$t('domains.domainDialog.manualInfo')"></p>
<p class="small text-info text-bold" v-show="needsPort80(provider, tlsProvider)" v-html="$t('domains.domainDialog.letsEncryptInfo')"></p>