Merge email domain status into the domain view
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { Button, ProgressBar } from '@cloudron/pankow';
|
||||
import Section from './Section.vue';
|
||||
import MailModel from '../models/MailModel.js';
|
||||
|
||||
const props = defineProps([ 'domain' ]);
|
||||
@@ -46,12 +47,15 @@ onMounted(async () => {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<ProgressBar mode="indeterminate" v-if="busy" slim :show-label="false" />
|
||||
<Section title="Status">
|
||||
<template #header-buttons>
|
||||
<Button @click="refresh()" secondary tool icon="fa fa-sync-alt" :disabled="busy" :loading="busy"/>
|
||||
</template>
|
||||
|
||||
<div v-html="$t('email.dnsStatus.description', { emailDnsDocsLink:'https://docs.cloudron.io/email/#dns-records'})"></div>
|
||||
<br/>
|
||||
|
||||
<div v-if="domainStatus.mx">
|
||||
<h4>{{ $t('email.dnsStatus.title') }} <Button @click="refresh()" plain tool icon="fa fa-sync-alt" :disabled="busy" :loading="busy"/></h4>
|
||||
<div v-html="$t('email.dnsStatus.description', { emailDnsDocsLink:'https://docs.cloudron.io/email/#dns-records'})"></div>
|
||||
<br/>
|
||||
<div v-for="(label, type) in dnsRecordLabels" :key="type">
|
||||
<div>
|
||||
<i v-if="!busy" class="fa-solid" :class="{
|
||||
@@ -96,53 +100,51 @@ onMounted(async () => {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<h4>{{ $t('email.smtpStatus.title') }} <sup><a href="https://docs.cloudron.io/email/#smtp-status" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></h4>
|
||||
<div v-if="domainStatus.relay">
|
||||
<div>
|
||||
<i v-if="!busy" class="fa" :class="{
|
||||
'fa-check-circle text-success': domainStatus.relay.status === 'passed',
|
||||
'fa-exclamation-triangle text-danger': domainStatus.relay.status === 'failed',
|
||||
'fa-circle-minus text-warning': domainStatus.relay.status === 'skipped',
|
||||
}"></i>
|
||||
<i v-else class="fa-solid fa-circle-notch fa-spin"></i>
|
||||
|
||||
<b>{{ $t('email.smtpStatus.outboundSmtp') }}</b>
|
||||
</div>
|
||||
<div class="record-details">
|
||||
{{ domainStatus.relay.message }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="domainStatus.relay">
|
||||
<div v-for="type in rblTypes" :key="type">
|
||||
<div v-if="domainStatus[type]">
|
||||
<div>
|
||||
<i v-if="!busy" class="fa" :class="{
|
||||
'fa-check-circle text-success': domainStatus.relay.status === 'passed',
|
||||
'fa-exclamation-triangle text-danger': domainStatus.relay.status === 'failed',
|
||||
'fa-circle-minus text-warning': domainStatus.relay.status === 'skipped',
|
||||
'fa-check-circle text-success': domainStatus[type].status === 'passed',
|
||||
'fa-exclamation-triangle text-danger': domainStatus[type].status === 'failed',
|
||||
'fa-circle-minus text-success': domainStatus[type].status === 'skipped',
|
||||
}"></i>
|
||||
<i v-else class="fa-solid fa-circle-notch fa-spin"></i>
|
||||
|
||||
<b>{{ $t('email.smtpStatus.outboundSmtp') }}</b>
|
||||
<b>{{ type === 'rbl4' ? 'IPv4' : 'IPv6' }} {{ $t('email.smtpStatus.rblCheck') }}</b>
|
||||
</div>
|
||||
<div class="record-details">
|
||||
{{ domainStatus.relay.message }}
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="domainStatus[type].status !== 'failed'">{{ domainStatus[type].message }}</div>
|
||||
<div v-else>
|
||||
<div v-if="domainStatus[type].servers.length" v-html="$t('email.smtpStatus.blacklisted', { ip: domainStatus[type].ip })"></div>
|
||||
<div v-else v-html="$t('email.smtpStatus.notBlacklisted', { ip: domainStatus[type].ip })"></div>
|
||||
|
||||
<div v-for="type in rblTypes" :key="type">
|
||||
<div v-if="domainStatus[type]">
|
||||
<div>
|
||||
<i v-if="!busy" class="fa" :class="{
|
||||
'fa-check-circle text-success': domainStatus[type].status === 'passed',
|
||||
'fa-exclamation-triangle text-danger': domainStatus[type].status === 'failed',
|
||||
'fa-circle-minus text-success': domainStatus[type].status === 'skipped',
|
||||
}"></i>
|
||||
<i v-else class="fa-solid fa-circle-notch fa-spin"></i>
|
||||
|
||||
<b>{{ type === 'rbl4' ? 'IPv4' : 'IPv6' }} {{ $t('email.smtpStatus.rblCheck') }}</b>
|
||||
</div>
|
||||
<div class="record-details">
|
||||
<div v-if="domainStatus[type].status !== 'failed'">{{ domainStatus[type].message }}</div>
|
||||
<div v-else>
|
||||
<div v-if="domainStatus[type].servers.length" v-html="$t('email.smtpStatus.blacklisted', { ip: domainStatus[type].ip })"></div>
|
||||
<div v-else v-html="$t('email.smtpStatus.notBlacklisted', { ip: domainStatus[type].ip })"></div>
|
||||
|
||||
<div v-for="server in domainStatus[type].servers" :key="server.name">
|
||||
<a :href="server.removal" target="_blank">{{ server.name }}</a>
|
||||
</div>
|
||||
<div v-for="server in domainStatus[type].servers" :key="server.name">
|
||||
<a :href="server.removal" target="_blank">{{ server.name }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Section>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
Reference in New Issue
Block a user