- Mail in a Box: comandi per aggiungere/modificare/rimuovere le caselle di posta
- aggiunto idMyGroup: ospiti siti di gruppi (AbitareGliIblei)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="19"
|
APP_ID="19"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="18"
|
APP_ID="18"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="17"
|
APP_ID="17"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="19"
|
APP_ID="19"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="18"
|
APP_ID="18"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="17"
|
APP_ID="17"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker_1.0.39.js"
|
SERVICE_WORKER_FILE="service-worker_1.0.39.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="19"
|
APP_ID="19"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="16"
|
APP_ID="16"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "abitaregliiblei",
|
"name": "abitaregliiblei",
|
||||||
"version": "1.0.57",
|
"version": "1.0.58",
|
||||||
"description": "Abitare Gli Iblei",
|
"description": "Abitare Gli Iblei",
|
||||||
"productName": "AbitareGliIblei",
|
"productName": "AbitareGliIblei",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="15"
|
APP_ID="15"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="15"
|
APP_ID="15"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fioredellavita",
|
"name": "fioredellavita",
|
||||||
"version": "1.0.57",
|
"version": "1.0.58",
|
||||||
"description": "Fiore Della Vita",
|
"description": "Fiore Della Vita",
|
||||||
"productName": "Fiore Della Vita",
|
"productName": "Fiore Della Vita",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="18"
|
APP_ID="18"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="16"
|
APP_ID="16"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "gruppomacro",
|
"name": "gruppomacro",
|
||||||
"version": "1.0.57",
|
"version": "1.0.58",
|
||||||
"description": "GruppoMacro",
|
"description": "GruppoMacro",
|
||||||
"productName": "Gruppo Macro",
|
"productName": "Gruppo Macro",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="17"
|
APP_ID="17"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL="newfreeplanet"
|
DIRECTORY_LOCAL="newfreeplanet"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="13"
|
APP_ID="13"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
APP_VERSION="1.0.57"
|
APP_VERSION="1.0.58"
|
||||||
SERVICE_WORKER_FILE="service-worker.js"
|
SERVICE_WORKER_FILE="service-worker.js"
|
||||||
APP_ID="16"
|
APP_ID="16"
|
||||||
DIRECTORY_LOCAL=newfreeplanet
|
DIRECTORY_LOCAL=newfreeplanet
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "riso",
|
"name": "riso",
|
||||||
"version": "1.0.57",
|
"version": "1.0.58",
|
||||||
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
"description": "Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.",
|
||||||
"productName": "Riso",
|
"productName": "Riso",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "abitaregliiblei",
|
"name": "abitaregliiblei",
|
||||||
"version": "1.0.57",
|
"version": "1.0.58",
|
||||||
"description": "Abitare Gli Iblei",
|
"description": "Abitare Gli Iblei",
|
||||||
"productName": "AbitareGliIblei",
|
"productName": "AbitareGliIblei",
|
||||||
"author": "Paolo Arena",
|
"author": "Paolo Arena",
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ self.addEventListener('activate', (event) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const VersioneApp = "1.0.57";
|
const VersioneApp = "1.0.58";
|
||||||
|
|
||||||
console.log(' [ VER-' + VersioneApp + ' ] _---------________------ PAO: this is my custom service worker');
|
console.log(' [ VER-' + VersioneApp + ' ] _---------________------ PAO: this is my custom service worker');
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<meta name="description" content="<%= productDescription %>">
|
<meta name="description" content="<%= productDescription %>">
|
||||||
<meta name="format-detection" content="telephone=no">
|
<meta name="format-detection" content="telephone=no">
|
||||||
<meta name="msapplication-tap-highlight" content="no">
|
<meta name="msapplication-tap-highlight" content="no">
|
||||||
<meta name="version" content="1.0.57">
|
<meta name="version" content="1.0.58">
|
||||||
<meta name="viewport"
|
<meta name="viewport"
|
||||||
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
|
||||||
|
|
||||||
|
|||||||
@@ -319,6 +319,10 @@ export interface ISites {
|
|||||||
host_testapi_ip?: string
|
host_testapi_ip?: string
|
||||||
cf_token?: string
|
cf_token?: string
|
||||||
cf_zoneId?: string
|
cf_zoneId?: string
|
||||||
|
enable_servermail?: boolean
|
||||||
|
servermail?: string
|
||||||
|
servermailip?: string
|
||||||
|
dkim?: string
|
||||||
portapp?: string
|
portapp?: string
|
||||||
dir?: string
|
dir?: string
|
||||||
email_from?: string
|
email_from?: string
|
||||||
@@ -338,6 +342,7 @@ export interface ISites {
|
|||||||
contacts?: IContacts
|
contacts?: IContacts
|
||||||
confpages: IConfPages
|
confpages: IConfPages
|
||||||
ecomm?: IECommSettings
|
ecomm?: IECommSettings
|
||||||
|
idMyGroup?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface INewsToSent {
|
export interface INewsToSent {
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ export interface IUserFields {
|
|||||||
perm?: number
|
perm?: number
|
||||||
verified_email?: boolean
|
verified_email?: boolean
|
||||||
verified_by_aportador?: boolean
|
verified_by_aportador?: boolean
|
||||||
|
idMyGroup?: string
|
||||||
reported?: boolean
|
reported?: boolean
|
||||||
username_who_report?: string
|
username_who_report?: string
|
||||||
date_report?: Date
|
date_report?: Date
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import { CTitleBanner } from '@/components/CTitleBanner'
|
|||||||
import { CMyFieldRec } from '@/components/CMyFieldRec'
|
import { CMyFieldRec } from '@/components/CMyFieldRec'
|
||||||
import { CMyFieldDb } from '@/components/CMyFieldDb'
|
import { CMyFieldDb } from '@/components/CMyFieldDb'
|
||||||
|
|
||||||
|
import { toolsext } from '@src/store/Modules/toolsext'
|
||||||
|
|
||||||
import { useGlobalStore } from '@store/globalStore'
|
import { useGlobalStore } from '@store/globalStore'
|
||||||
import { costanti } from '@costanti'
|
import { costanti } from '@costanti'
|
||||||
import { tools } from '@src/store/Modules/tools'
|
import { tools } from '@src/store/Modules/tools'
|
||||||
@@ -64,6 +66,7 @@ export default defineComponent({
|
|||||||
globalStore,
|
globalStore,
|
||||||
saveShowDark,
|
saveShowDark,
|
||||||
updateSite,
|
updateSite,
|
||||||
|
toolsext,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -71,6 +71,7 @@
|
|||||||
|
|
||||||
<q-tabs v-model="tab" inline-label class="bg-gray shadow-2">
|
<q-tabs v-model="tab" inline-label class="bg-gray shadow-2">
|
||||||
<q-tab name="server" label="Server" icon="mail" />
|
<q-tab name="server" label="Server" icon="mail" />
|
||||||
|
<q-tab name="mail" label="Mail" icon="doc" />
|
||||||
<q-tab name="contacts" label="Contatti" icon="mail" />
|
<q-tab name="contacts" label="Contatti" icon="mail" />
|
||||||
<q-tab name="pages" label="Pagine" icon="doc" />
|
<q-tab name="pages" label="Pagine" icon="doc" />
|
||||||
<q-tab name="config" label="Config" icon="doc" />
|
<q-tab name="config" label="Config" icon="doc" />
|
||||||
@@ -78,6 +79,85 @@
|
|||||||
</q-tabs>
|
</q-tabs>
|
||||||
|
|
||||||
<q-tab-panels v-model="tab" animated>
|
<q-tab-panels v-model="tab" animated>
|
||||||
|
<q-tab-panel name="mail">
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.enable_servermail')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="enable_servermail"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.boolean"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.servermail')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="servermail"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.servermailip')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="servermailip"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.adminemail')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="adminemail"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.manageremail')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="manageremail"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.replyTo')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="replyTo"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.dkim')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="dkim"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
</q-tab-panel>
|
||||||
<q-tab-panel name="contacts">
|
<q-tab-panel name="contacts">
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
table="sites"
|
table="sites"
|
||||||
@@ -203,7 +283,7 @@
|
|||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
<q-tab-panel name="server">
|
<q-tab-panel name="server">
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.cf_token')"
|
:title="$t('sites.cf_token')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -214,7 +294,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.cf_zoneId')"
|
:title="$t('sites.cf_zoneId')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -225,7 +305,31 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host')"
|
:title="$t('sites.idMyGroup')"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="idMyGroup"
|
||||||
|
debounce="1000"
|
||||||
|
:type="costanti.FieldType.string"
|
||||||
|
@save="updateSite"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
<CMyFieldDb
|
||||||
|
title="My Group"
|
||||||
|
table="sites"
|
||||||
|
:id="mysite._id"
|
||||||
|
:rec="mysite"
|
||||||
|
mykey="idMyGroup"
|
||||||
|
debounce="1000"
|
||||||
|
@save="save"
|
||||||
|
:jointable="toolsext.TABMYGROUPS"
|
||||||
|
:type="costanti.FieldType.select"
|
||||||
|
>
|
||||||
|
</CMyFieldDb>
|
||||||
|
|
||||||
|
<CMyFieldDb
|
||||||
|
:title="$t('sites.host')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -236,7 +340,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_ip')"
|
:title="$t('sites.host_ip')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -248,7 +352,7 @@
|
|||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
|
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_api')"
|
:title="$t('sites.host_api')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -259,7 +363,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_api_ip')"
|
:title="$t('sites.host_api_ip')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -270,7 +374,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_testapi')"
|
:title="$t('sites.host_testapi')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -281,7 +385,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_testapi_ip')"
|
:title="$t('sites.host_testapi_ip')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -292,7 +396,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_test')"
|
:title="$t('sites.host_test')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -303,7 +407,7 @@
|
|||||||
>
|
>
|
||||||
</CMyFieldDb>
|
</CMyFieldDb>
|
||||||
<CMyFieldDb
|
<CMyFieldDb
|
||||||
:title="$t('site.host_test_ip')"
|
:title="$t('sites.host_test_ip')"
|
||||||
table="sites"
|
table="sites"
|
||||||
:id="mysite._id"
|
:id="mysite._id"
|
||||||
:rec="mysite"
|
:rec="mysite"
|
||||||
@@ -987,5 +1091,5 @@
|
|||||||
"idapp" : "19",
|
"idapp" : "19",
|
||||||
"chiave" : "vers",
|
"chiave" : "vers",
|
||||||
"userId" : "ALL",
|
"userId" : "ALL",
|
||||||
"valore" : "1.0.57"
|
"valore" : "1.0.58"
|
||||||
}
|
}
|
||||||
@@ -560,6 +560,7 @@ const msg_it = {
|
|||||||
aportador_solidario: 'Username di chi ti ha Invitato',
|
aportador_solidario: 'Username di chi ti ha Invitato',
|
||||||
username_admin_collettivo: 'Username dell\'Amministratore',
|
username_admin_collettivo: 'Username dell\'Amministratore',
|
||||||
verified_by_aportador: 'Verificato',
|
verified_by_aportador: 'Verificato',
|
||||||
|
idMyGroup: 'Id Gruppo Appartenenza',
|
||||||
notAsk_ToVerify: 'No Verif. Reg',
|
notAsk_ToVerify: 'No Verif. Reg',
|
||||||
trust_modified: 'Fiducia Modificata',
|
trust_modified: 'Fiducia Modificata',
|
||||||
reported: 'Segnalato',
|
reported: 'Segnalato',
|
||||||
@@ -1121,7 +1122,12 @@ const msg_it = {
|
|||||||
host_test_ip: 'Host Test IP',
|
host_test_ip: 'Host Test IP',
|
||||||
host_testapi: 'Host TestApi',
|
host_testapi: 'Host TestApi',
|
||||||
host_testapi_ip: 'Host TestApi IP',
|
host_testapi_ip: 'Host TestApi IP',
|
||||||
|
servermail: 'Server Mail',
|
||||||
|
servermailip: 'IP Server Mail',
|
||||||
|
idMyGroup: 'ID Gruppo Appartenenza Sito',
|
||||||
|
dkim: 'DKIM',
|
||||||
portapp: 'Porta',
|
portapp: 'Porta',
|
||||||
|
enable_servermail: 'Abilita Server Mail sul DNS (MX)',
|
||||||
dir: 'Dir',
|
dir: 'Dir',
|
||||||
dir_test: 'Dir Test',
|
dir_test: 'Dir Test',
|
||||||
email_from: 'Email From',
|
email_from: 'Email From',
|
||||||
@@ -1843,6 +1849,13 @@ const msg_it = {
|
|||||||
vediinmappa: 'Vedi in Mappa',
|
vediinmappa: 'Vedi in Mappa',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
miab: {
|
||||||
|
deleteemail: 'Cancellare la casella di posta: ',
|
||||||
|
err_removed: 'Errore durante la rimozione della casella di posta ',
|
||||||
|
err_addemail: 'Errore durante la creazione della nuova casella di posta',
|
||||||
|
err_setmailuserpwd: 'Errore durante la modifica della password',
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -357,7 +357,8 @@ export const costanti = {
|
|||||||
|
|
||||||
FILTER_NESSUNO: 0,
|
FILTER_NESSUNO: 0,
|
||||||
FILTER_TUTTI: -100,
|
FILTER_TUTTI: -100,
|
||||||
TABLES_ARRAY: ['mygroups', 'circuits'],
|
// TABLES_ARRAY: ['mygroups', 'circuits'],
|
||||||
|
TABLES_ARRAY: ['circuits'],
|
||||||
TABLES_USERNAME_DATE: ['friends', 'friendsandme'],
|
TABLES_USERNAME_DATE: ['friends', 'friendsandme'],
|
||||||
TABLES_IMG_USERNAME: ['friends', 'friendsandme'],
|
TABLES_IMG_USERNAME: ['friends', 'friendsandme'],
|
||||||
FILTER_SEP: '_',
|
FILTER_SEP: '_',
|
||||||
|
|||||||
@@ -1882,6 +1882,8 @@ export const colTableSites = [
|
|||||||
AddCol({ name: 'host_testapi_ip', label_trans: 'sites.host_testapi_ip', fieldtype: costanti.FieldType.string }),
|
AddCol({ name: 'host_testapi_ip', label_trans: 'sites.host_testapi_ip', fieldtype: costanti.FieldType.string }),
|
||||||
AddCol({ name: 'cf_token', label_trans: 'sites.cf_token', fieldtype: costanti.FieldType.string }),
|
AddCol({ name: 'cf_token', label_trans: 'sites.cf_token', fieldtype: costanti.FieldType.string }),
|
||||||
AddCol({ name: 'cf_zoneId', label_trans: 'sites.cf_zoneId', fieldtype: costanti.FieldType.string }),
|
AddCol({ name: 'cf_zoneId', label_trans: 'sites.cf_zoneId', fieldtype: costanti.FieldType.string }),
|
||||||
|
AddCol({ name: 'servermail', label_trans: 'sites.servermail', fieldtype: costanti.FieldType.string }),
|
||||||
|
AddCol({ name: 'enable_servermail', label_trans: 'sites.enable_servermail', fieldtype: costanti.FieldType.boolean }),
|
||||||
AddCol({ name: 'portapp', label_trans: 'sites.portapp', fieldtype: costanti.FieldType.string }),
|
AddCol({ name: 'portapp', label_trans: 'sites.portapp', fieldtype: costanti.FieldType.string }),
|
||||||
AddCol({ name: 'dir', label_trans: 'sites.dir' }),
|
AddCol({ name: 'dir', label_trans: 'sites.dir' }),
|
||||||
AddCol({ name: 'dir_test', label_trans: 'sites.dir_test', fieldtype: costanti.FieldType.string }),
|
AddCol({ name: 'dir_test', label_trans: 'sites.dir_test', fieldtype: costanti.FieldType.string }),
|
||||||
@@ -3141,6 +3143,11 @@ export const colTableUsersISP = [
|
|||||||
label_trans: 'reg.verified_by_aportador',
|
label_trans: 'reg.verified_by_aportador',
|
||||||
fieldtype: costanti.FieldType.boolean
|
fieldtype: costanti.FieldType.boolean
|
||||||
}),
|
}),
|
||||||
|
AddCol({
|
||||||
|
name: 'idMyGroup',
|
||||||
|
label_trans: 'reg.idMyGroup',
|
||||||
|
fieldtype: costanti.FieldType.string
|
||||||
|
}),
|
||||||
AddCol({
|
AddCol({
|
||||||
name: 'notask_verif',
|
name: 'notask_verif',
|
||||||
label_trans: 'reg.notAsk_ToVerify',
|
label_trans: 'reg.notAsk_ToVerify',
|
||||||
|
|||||||
@@ -8747,11 +8747,13 @@ export const tools = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getHostPuntamento(arrDNS: any, tofind: string, paramsulServer: string): any {
|
getHostPuntamento(arrDNS: any, tofind: string, paramsulServer: string, type: string): any {
|
||||||
let checkDomain = ''
|
let checkDomain = ''
|
||||||
let indrec = arrDNS.findIndex((rec: any) => rec.name === tofind && rec.type === 'A')
|
|
||||||
let color = 'red'
|
let color = 'red'
|
||||||
let ok = false
|
let ok = false
|
||||||
|
try {
|
||||||
|
if (arrDNS) {
|
||||||
|
let indrec = arrDNS.findIndex((rec: any) => rec.name === tofind && rec.type === type)
|
||||||
if (indrec >= 0) {
|
if (indrec >= 0) {
|
||||||
checkDomain = tofind + ' -> ' + arrDNS[indrec].content
|
checkDomain = tofind + ' -> ' + arrDNS[indrec].content
|
||||||
let giusto = (paramsulServer === arrDNS[indrec].content)
|
let giusto = (paramsulServer === arrDNS[indrec].content)
|
||||||
@@ -8764,6 +8766,11 @@ export const tools = {
|
|||||||
} else {
|
} else {
|
||||||
checkDomain = tofind + ' N/A'
|
checkDomain = tofind + ' N/A'
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Error: ', e)
|
||||||
|
}
|
||||||
|
|
||||||
return { text: '<span style="color: ' + color + ';">' + checkDomain + '</span><br>', ok }
|
return { text: '<span style="color: ' + color + ';">' + checkDomain + '</span><br>', ok }
|
||||||
|
|
||||||
|
|||||||
@@ -362,8 +362,10 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
return userStore.my.profile.friends
|
return userStore.my.profile.friends
|
||||||
else if (table === 'friendsandme')
|
else if (table === 'friendsandme')
|
||||||
return [{ username: userStore.my.username }, ...userStore.my.profile.friends]
|
return [{ username: userStore.my.username }, ...userStore.my.profile.friends]
|
||||||
|
// else if (table === 'mygroups')
|
||||||
|
// return userStore.groups
|
||||||
else if (table === 'mygroups')
|
else if (table === 'mygroups')
|
||||||
return userStore.groups
|
return state.mygroups
|
||||||
else if (table === 'sendmsgs')
|
else if (table === 'sendmsgs')
|
||||||
return messageStore.last_msgs
|
return messageStore.last_msgs
|
||||||
else if (table === 'sendnotifs')
|
else if (table === 'sendnotifs')
|
||||||
@@ -1923,12 +1925,16 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
const newarr = []
|
const newarr = []
|
||||||
for (const value of myarr) {
|
for (const value of myarr) {
|
||||||
let label = value
|
let label = value
|
||||||
if (table === 'mygroups')
|
let valout = value
|
||||||
label = value.descr
|
// if (table === 'mygroups') {
|
||||||
else if (table === 'circuits')
|
// label = value.descr
|
||||||
|
// valout = value.groupname
|
||||||
|
if (table === 'circuits') {
|
||||||
label = value.name
|
label = value.name
|
||||||
|
}
|
||||||
|
|
||||||
newarr.push({ value, label })
|
// console.log('value', value, 'label', label)
|
||||||
|
newarr.push({ value: valout, label })
|
||||||
}
|
}
|
||||||
|
|
||||||
myarr = newarr
|
myarr = newarr
|
||||||
@@ -2192,6 +2198,22 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async getMailInABox(cmd: string, record: any = undefined) {
|
||||||
|
|
||||||
|
const mydata = {
|
||||||
|
cmd,
|
||||||
|
tokcheck: "php8.1_version_762321HSD121nJDokq@?!aFS.tar.gz",
|
||||||
|
record,
|
||||||
|
}
|
||||||
|
|
||||||
|
return Api.SendReq('/admin/miab', 'POST', mydata)
|
||||||
|
.then((res) => {
|
||||||
|
return res.data
|
||||||
|
}).catch((error) => {
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { defineComponent, onMounted, ref, watch, onUnmounted, nextTick } from 'vue'
|
import { defineComponent, onMounted, ref, computed, watch, onUnmounted, nextTick } from 'vue'
|
||||||
|
|
||||||
import { CTitleBanner } from '../../../components/CTitleBanner'
|
import { CTitleBanner } from '../../../components/CTitleBanner'
|
||||||
import { CDateTime } from '../../../components/CDateTime'
|
import { CDateTime } from '../../../components/CDateTime'
|
||||||
@@ -68,11 +68,28 @@ export default defineComponent({
|
|||||||
const optionsApi = ref(<any>[])
|
const optionsApi = ref(<any>[])
|
||||||
const arrZones = ref(<any>[])
|
const arrZones = ref(<any>[])
|
||||||
const arrDNS = ref(<any>[])
|
const arrDNS = ref(<any>[])
|
||||||
|
const arrEmails = ref(<any>[])
|
||||||
const optZones = ref(<any>[])
|
const optZones = ref(<any>[])
|
||||||
|
|
||||||
const selected = ref(<any>[])
|
const selected = ref(<any>[])
|
||||||
const selZoneId = ref('')
|
const selZoneId = ref('')
|
||||||
|
|
||||||
|
const showNewEmail = ref(false)
|
||||||
|
const showchangePwd = ref(false)
|
||||||
|
const newEmail = ref('')
|
||||||
|
const newPassword = ref('')
|
||||||
|
const changeEmail = ref('')
|
||||||
|
const changePassword = ref('')
|
||||||
|
const isPwd = ref(true)
|
||||||
|
const emailSel = ref('')
|
||||||
|
|
||||||
|
const isFormValid = computed(() => {
|
||||||
|
return newEmail.value && newEmail.value.includes('@') && newPassword.value.length >= 8
|
||||||
|
})
|
||||||
|
const isFormValidChange = computed(() => {
|
||||||
|
return emailSel.value && emailSel.value.includes('@') && changePassword.value.length >= 8
|
||||||
|
})
|
||||||
|
|
||||||
const columnsZones = [
|
const columnsZones = [
|
||||||
{ name: 'id', align: 'right', label: 'ID', field: 'id', visible: true },
|
{ name: 'id', align: 'right', label: 'ID', field: 'id', visible: true },
|
||||||
{ name: 'name', required: true, label: 'Nome', align: 'left', field: 'name', sortable: true, visible: true },
|
{ name: 'name', required: true, label: 'Nome', align: 'left', field: 'name', sortable: true, visible: true },
|
||||||
@@ -86,22 +103,24 @@ export default defineComponent({
|
|||||||
{ name: 'name', required: true, label: 'Nome', align: 'left', field: 'name', sortable: true, visible: true },
|
{ name: 'name', required: true, label: 'Nome', align: 'left', field: 'name', sortable: true, visible: true },
|
||||||
{ name: 'type', required: true, label: 'Tipo', align: 'left', field: 'type', sortable: true, visible: true },
|
{ name: 'type', required: true, label: 'Tipo', align: 'left', field: 'type', sortable: true, visible: true },
|
||||||
{ name: 'proxied', required: true, align: 'center', label: 'Proxy', field: 'proxied', sortable: true, visible: true },
|
{ name: 'proxied', required: true, align: 'center', label: 'Proxy', field: 'proxied', sortable: true, visible: true },
|
||||||
{ name: 'priority', required: true, align: 'center', label: 'Priorità', field: 'priority', sortable: true, visible: true },
|
{ name: 'priority', required: true, align: 'center', label: 'Pri', field: 'priority', sortable: true, visible: true },
|
||||||
{ name: 'ttl', required: true, align: 'center', label: 'TTL', field: 'ttl', sortable: false, visible: true },
|
{ name: 'ttl', required: true, align: 'center', label: 'TTL', field: 'ttl', sortable: false, visible: true },
|
||||||
{ name: 'content', required: true, label: 'Valore', align: 'left', field: 'content', sortable: true, visible: true },
|
{ name: 'content', required: true, label: 'Valore', align: 'left', field: 'content', sortable: true, visible: true },
|
||||||
|
{ name: 'delete', required: true, label: 'Azioni', align: 'left', field: 'delete', sortable: true, visible: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
const viscolumnsDNS = [
|
const viscolumnsDNS = [
|
||||||
{ name: 'name', required: true, label: 'Nome', align: 'left', field: 'name', sortable: true, visible: true, editable: true },
|
{ name: 'name', required: true, label: 'Nome', align: 'left', field: 'name', sortable: true, visible: true, editable: true },
|
||||||
{ name: 'type', required: true, label: 'Tipo', align: 'left', field: 'type', sortable: true, visible: true, editable: true },
|
{ name: 'type', required: true, label: 'Tipo', align: 'left', field: 'type', sortable: true, visible: true, editable: true },
|
||||||
{ name: 'proxied', required: true, align: 'center', label: 'Proxy', field: 'proxied', sortable: true, visible: true, editable: true },
|
{ name: 'proxied', required: true, align: 'center', label: 'Proxy', field: 'proxied', sortable: true, visible: true, editable: true },
|
||||||
{ name: 'priority', required: true, align: 'center', label: 'Priorità', field: 'priority', sortable: true, visible: true },
|
{ name: 'priority', required: true, align: 'center', label: 'Pri', field: 'priority', sortable: true, visible: true },
|
||||||
{ name: 'ttl', required: true, align: 'center', label: 'TTL', field: 'ttl', sortable: false, visible: true },
|
{ name: 'ttl', required: true, align: 'center', label: 'TTL', field: 'ttl', sortable: false, visible: true },
|
||||||
{ name: 'content', required: true, label: 'Valore', align: 'left', field: 'content', sortable: true, visible: true, editable: true },
|
{ name: 'content', required: true, label: 'Valore', align: 'left', field: 'content', sortable: true, visible: true, editable: true },
|
||||||
|
{ name: 'delete', required: true, label: 'Azioni', align: 'left', field: 'delete', sortable: true, visible: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
const pagination = {
|
const pagination = {
|
||||||
rowsPerPage: 10,
|
rowsPerPage: 20,
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(() => selectedApi.value, async (to: any, from: any) => {
|
watch(() => selectedApi.value, async (to: any, from: any) => {
|
||||||
@@ -156,6 +175,76 @@ export default defineComponent({
|
|||||||
arrDNS.value = await globalStore.getCloudFlareTok("getDNS", selectedApi.value, selZoneId.value)
|
arrDNS.value = await globalStore.getCloudFlareTok("getDNS", selectedApi.value, selZoneId.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getEmails() {
|
||||||
|
arrEmails.value = []
|
||||||
|
arrEmails.value = await globalStore.getMailInABox("getEmails", { domain: tools.getDomainSite() })
|
||||||
|
}
|
||||||
|
|
||||||
|
async function addEmailServer(email: string, pwd: string) {
|
||||||
|
|
||||||
|
incaricamento.value = true
|
||||||
|
|
||||||
|
const ris = await globalStore.getMailInABox("addEmail", { domain: tools.getDomainSite(), email, pwd })
|
||||||
|
|
||||||
|
if (ris)
|
||||||
|
tools.showPositiveNotif($q, ris)
|
||||||
|
else {
|
||||||
|
tools.showNegativeNotif($q, t('miab.err_addemail'))
|
||||||
|
}
|
||||||
|
|
||||||
|
await checkDNSSite()
|
||||||
|
|
||||||
|
incaricamento.value = false
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setMailUserPassword(email: string, pwd: string) {
|
||||||
|
|
||||||
|
incaricamento.value = true
|
||||||
|
|
||||||
|
const ris = await globalStore.getMailInABox("setMailUserPassword", { domain: tools.getDomainSite(), email, pwd })
|
||||||
|
|
||||||
|
if (ris)
|
||||||
|
tools.showPositiveNotif($q, ris)
|
||||||
|
else {
|
||||||
|
tools.showNegativeNotif($q, t('miab.err_setmailuserpwd'))
|
||||||
|
}
|
||||||
|
|
||||||
|
await checkDNSSite()
|
||||||
|
|
||||||
|
incaricamento.value = false
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async function removeEmails(email: String) {
|
||||||
|
$q.dialog({
|
||||||
|
message: t('miab.deleteemail') + email + ' ?',
|
||||||
|
ok: {
|
||||||
|
label: t('dialog.yes'),
|
||||||
|
push: true,
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
label: t('dialog.cancel'),
|
||||||
|
},
|
||||||
|
title: 'Funzione:',
|
||||||
|
}).onOk(async () => {
|
||||||
|
|
||||||
|
incaricamento.value = true
|
||||||
|
|
||||||
|
const ris = await globalStore.getMailInABox("removeEmails", { domain: tools.getDomainSite(), email })
|
||||||
|
|
||||||
|
if (ris)
|
||||||
|
tools.showPositiveNotif($q, ris)
|
||||||
|
else {
|
||||||
|
tools.showNegativeNotif($q, t('miab.err_removed'))
|
||||||
|
}
|
||||||
|
|
||||||
|
await checkDNSSite()
|
||||||
|
|
||||||
|
incaricamento.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
watch(() => selZoneId.value, async (to: any, from: any) => {
|
watch(() => selZoneId.value, async (to: any, from: any) => {
|
||||||
if (selZoneId.value) {
|
if (selZoneId.value) {
|
||||||
incaricamento.value = true
|
incaricamento.value = true
|
||||||
@@ -375,11 +464,15 @@ export default defineComponent({
|
|||||||
const getLabelSelApi = () => {
|
const getLabelSelApi = () => {
|
||||||
const myrec = optionsApi.value.find((opt: any) => opt.value === selectedApi.value)
|
const myrec = optionsApi.value.find((opt: any) => opt.value === selectedApi.value)
|
||||||
return myrec ? myrec.label : ''
|
return myrec ? myrec.label : ''
|
||||||
};
|
}
|
||||||
const getNameBySelZoneinId = () => {
|
const getNameBySelZoneinId = () => {
|
||||||
|
if (arrZones.value) {
|
||||||
const myrec = arrZones.value.find((zone: any) => zone.id === selZoneId.value)
|
const myrec = arrZones.value.find((zone: any) => zone.id === selZoneId.value)
|
||||||
return myrec ? myrec.name : ''
|
return myrec ? myrec.name : ''
|
||||||
};
|
} else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const getSelectedString = () => {
|
const getSelectedString = () => {
|
||||||
return selected.value.length === 0 ? '' : `${selected.value[0].name} selezionata.`
|
return selected.value.length === 0 ? '' : `${selected.value[0].name} selezionata.`
|
||||||
@@ -442,12 +535,16 @@ export default defineComponent({
|
|||||||
|
|
||||||
const setCorrectIpsOnDNS = async () => {
|
const setCorrectIpsOnDNS = async () => {
|
||||||
|
|
||||||
|
incaricamento.value = true
|
||||||
|
|
||||||
let myrecord = {
|
let myrecord = {
|
||||||
name: tools.getDomainSite()
|
name: tools.getDomainSite()
|
||||||
}
|
}
|
||||||
await globalStore.getCloudFlareTok("setCorrectIpsOnDNS", selectedApi.value, selZoneId.value, null, myrecord)
|
await globalStore.getCloudFlareTok("setCorrectIpsOnDNS", selectedApi.value, selZoneId.value, null, myrecord)
|
||||||
|
|
||||||
await checkDNSSite()
|
await checkDNSSite()
|
||||||
|
|
||||||
|
incaricamento.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -469,6 +566,60 @@ export default defineComponent({
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const delRecordDNS = async (row: any) => {
|
||||||
|
|
||||||
|
$q.dialog({
|
||||||
|
message: t('db.deletetherecord') + ' type = ' + row.type + ' ?',
|
||||||
|
ok: {
|
||||||
|
label: t('dialog.yes'),
|
||||||
|
push: true,
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
label: t('dialog.cancel'),
|
||||||
|
},
|
||||||
|
title: 'Funzione:',
|
||||||
|
}).onOk(async () => {
|
||||||
|
|
||||||
|
const recupdated = await globalStore.getCloudFlareTok("delRecordDNS", selectedApi.value, selZoneId.value, row.id, null)
|
||||||
|
|
||||||
|
if (recupdated) {
|
||||||
|
// update record
|
||||||
|
updateArrDns()
|
||||||
|
|
||||||
|
tools.showPositiveNotif($q, t('db.deletedrecord'))
|
||||||
|
} else {
|
||||||
|
tools.showNegativeNotif($q, t('db.recfailed'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getResultCheckDnsParam(title: string, recordReal: any, paramReal: string, strExpected: string) {
|
||||||
|
|
||||||
|
let mystr = ''
|
||||||
|
try {
|
||||||
|
if (recordReal) {
|
||||||
|
const contentReal = recordReal[paramReal]
|
||||||
|
|
||||||
|
if (strExpected !== contentReal) {
|
||||||
|
errorDNS.value = true
|
||||||
|
mystr += `<span style="color: red;">${title}: NO</span><br> 👉🏻 🔴 Attuale__: ${contentReal}<br> 👉🏻 🔵 Aspettato: ${strExpected} <br>`
|
||||||
|
} else {
|
||||||
|
mystr += `<span style="color: green;">${title}: 🟢 OK (${contentReal})</span><br>`
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
errorDNS.value = true
|
||||||
|
mystr += `<span style="color: gray;">${title}: 🔴 N/A</span><br>`
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
mystr += `<span style="color: gray;">${title}: 🔴 N/A Errore nell\'estrazione del parametro ... </span><br>`
|
||||||
|
}
|
||||||
|
|
||||||
|
return mystr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async function checkDNSSite() {
|
async function checkDNSSite() {
|
||||||
incaricamento.value = true
|
incaricamento.value = true
|
||||||
await updateArrDns()
|
await updateArrDns()
|
||||||
@@ -478,35 +629,91 @@ export default defineComponent({
|
|||||||
errorDNS.value = false
|
errorDNS.value = false
|
||||||
|
|
||||||
const domainSite = tools.getDomainSite();
|
const domainSite = tools.getDomainSite();
|
||||||
const domains = [
|
const domainsData = [
|
||||||
domainSite,
|
{ url: domainSite, expected: globalStore.site.host_ip, type: 'A' },
|
||||||
'api.' + domainSite,
|
{ url: 'api.' + domainSite, expected: globalStore.site.host_api_ip, type: 'A' },
|
||||||
'test.' + domainSite,
|
{ url: 'test.' + domainSite, expected: globalStore.site.host_test_ip, type: 'A' },
|
||||||
'testapi.' + domainSite
|
{ url: 'testapi.' + domainSite, expected: globalStore.site.host_testapi_ip, type: 'A' },
|
||||||
|
{ url: 'www.' + domainSite, expected: domainSite, type: 'CNAME' }
|
||||||
];
|
];
|
||||||
|
|
||||||
const ips = [
|
|
||||||
globalStore.site.host_ip,
|
|
||||||
globalStore.site.host_api_ip,
|
|
||||||
globalStore.site.host_test_ip,
|
|
||||||
globalStore.site.host_testapi_ip
|
|
||||||
];
|
|
||||||
|
|
||||||
|
// Controllo DNS
|
||||||
if (dnsPageActive.value) {
|
if (dnsPageActive.value) {
|
||||||
let checkDomainA1 = '';
|
let checkDomainA1 = '';
|
||||||
errorDNS.value = false
|
for (let i = 0; i < domainsData.length; i++) {
|
||||||
for (let i = 0; i < domains.length; i++) {
|
let ris = tools.getHostPuntamento(arrDNS.value, domainsData[i].url, domainsData[i].expected!, domainsData[i].type);
|
||||||
let ris = tools.getHostPuntamento(arrDNS.value, domains[i], ips[i]!)
|
checkDomainA1 += ris.text;
|
||||||
checkDomainA1 += ris.text
|
|
||||||
if (!ris.ok) {
|
if (!ris.ok) {
|
||||||
errorDNS.value = true
|
errorDNS.value = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rischeckDNS.value = checkDomainA1
|
|
||||||
|
let checkServerMailEnabled = '<br>';
|
||||||
|
|
||||||
|
if (globalStore.site.enable_servermail) {
|
||||||
|
// Controlla type MX
|
||||||
|
const mxRecord = arrDNS.value.find((record: any) => record.type === 'MX' && record.name === domainSite);
|
||||||
|
checkServerMailEnabled += getResultCheckDnsParam('Server mail enabled', mxRecord, 'content', globalStore.site.servermail!)
|
||||||
|
|
||||||
|
// *** Controlla type TXT spf1 ***
|
||||||
|
let contentTXTspf1Expected = `v=spf1 a mx:${globalStore.site.servermail} ip4:${globalStore.site.servermailip} ~all`;
|
||||||
|
const mxRecordTXTspf1 = arrDNS.value.find((record: any) => record.type === 'TXT' && record.name === domainSite && (record.content.indexOf('v=spf1') > -1))
|
||||||
|
|
||||||
|
checkServerMailEnabled += getResultCheckDnsParam('TXT spf1 RECORD', mxRecordTXTspf1, 'content', contentTXTspf1Expected)
|
||||||
|
|
||||||
|
let nameDkimtoFind = `mail._domainkey.${domainSite}`;
|
||||||
|
|
||||||
|
// Controllo DKIM:
|
||||||
|
const mxRecordTXTDKIM = arrDNS.value.find((record: any) => record.type === 'TXT' && record.name === nameDkimtoFind)
|
||||||
|
let contentTXTDKIMExpected = `v=DKIM1; h=sha256; k=rsa; s=email; p=${globalStore.site.dkim}`
|
||||||
|
|
||||||
|
checkServerMailEnabled += getResultCheckDnsParam('DKIM1', mxRecordTXTDKIM, 'content', contentTXTDKIMExpected)
|
||||||
|
|
||||||
|
// Controllo DMARC:
|
||||||
|
const mxRecordTXTDMARC = arrDNS.value.find((record: any) => record.type === 'TXT' && record.name === `_dmarc.${domainSite}`)
|
||||||
|
let contentTXTMARCExpected = `v=DMARC1; p=quarantine; ruf=mailto:dmarc@${domainSite};`;
|
||||||
|
|
||||||
|
checkServerMailEnabled += getResultCheckDnsParam('DMARC RECORD', mxRecordTXTDMARC, 'content', contentTXTMARCExpected)
|
||||||
|
|
||||||
|
// Controlla autoconfig
|
||||||
|
const recAutoConfig = arrDNS.value.find((record: any) => record.type === 'CNAME' && record.name === `autoconfig.${domainSite}`);
|
||||||
|
checkServerMailEnabled += getResultCheckDnsParam('AutoConfig CNAME', recAutoConfig, 'content', globalStore.site.servermail!)
|
||||||
|
|
||||||
|
// Controlla autodiscover
|
||||||
|
const recAutoDiscover = arrDNS.value.find((record: any) => record.type === 'CNAME' && record.name === `autodiscover.${domainSite}`);
|
||||||
|
checkServerMailEnabled += getResultCheckDnsParam('AutoDiscover CNAME', recAutoDiscover, 'content', globalStore.site.servermail!)
|
||||||
|
|
||||||
|
await getEmails()
|
||||||
}
|
}
|
||||||
|
rischeckDNS.value = checkDomainA1 + checkServerMailEnabled
|
||||||
|
|
||||||
incaricamento.value = false
|
incaricamento.value = false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function addEmail() {
|
||||||
|
// Implementa qui la logica per aggiungere la nuova email
|
||||||
|
console.log('Aggiunta nuova email:', newEmail.value)
|
||||||
|
await addEmailServer(newEmail.value, newPassword.value)
|
||||||
|
|
||||||
|
// Resetta i campi e chiudi il dialog
|
||||||
|
newEmail.value = ''
|
||||||
|
newPassword.value = ''
|
||||||
|
showNewEmail.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
async function setMailUserPwd() {
|
||||||
|
// Implementa qui la logica per aggiungere la nuova email
|
||||||
|
await setMailUserPassword(emailSel.value, changePassword.value)
|
||||||
|
|
||||||
|
// Resetta i campi e chiudi il dialog
|
||||||
|
emailSel.value = ''
|
||||||
|
changePassword.value = ''
|
||||||
|
showchangePwd.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(mounted)
|
onMounted(mounted)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -566,6 +773,21 @@ export default defineComponent({
|
|||||||
globalStore,
|
globalStore,
|
||||||
setCorrectIpsOnDNS,
|
setCorrectIpsOnDNS,
|
||||||
errorDNS,
|
errorDNS,
|
||||||
|
delRecordDNS,
|
||||||
|
arrEmails,
|
||||||
|
removeEmails,
|
||||||
|
addEmail,
|
||||||
|
newEmail,
|
||||||
|
newPassword,
|
||||||
|
changeEmail,
|
||||||
|
changePassword,
|
||||||
|
showNewEmail,
|
||||||
|
showchangePwd,
|
||||||
|
isFormValid,
|
||||||
|
isPwd,
|
||||||
|
setMailUserPwd,
|
||||||
|
emailSel,
|
||||||
|
isFormValidChange,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -71,6 +71,76 @@
|
|||||||
@click="checkDNSSite"
|
@click="checkDNSSite"
|
||||||
>
|
>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
|
<div v-if="dnsPageActive && arrEmails" class="q-ma-md">
|
||||||
|
<q-list bordered class="rounded-borders" style="max-width: 600px">
|
||||||
|
<q-item-label header>Caselle di Posta:</q-item-label>
|
||||||
|
|
||||||
|
<q-btn
|
||||||
|
label="Aggiungi Nuova Casella"
|
||||||
|
color="primary"
|
||||||
|
@click="showNewEmail = true"
|
||||||
|
class="q-my-sm"
|
||||||
|
></q-btn>
|
||||||
|
|
||||||
|
<div v-if="arrEmails.length === 0">
|
||||||
|
<span style="color: red; font-weight: bold"
|
||||||
|
>Nessuna casella di posta creata</span
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<q-item v-for="(email, index) in arrEmails" :key="index">
|
||||||
|
<q-item-section avatar top>
|
||||||
|
<q-icon name="email" color="black" size="34px" />
|
||||||
|
</q-item-section>
|
||||||
|
|
||||||
|
<q-item-section top class="col-2 gt-sm">
|
||||||
|
<q-item-label class="q-mt-sm">{{
|
||||||
|
email.slice(0, email.indexOf('@'))
|
||||||
|
}}</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
|
||||||
|
<q-item-section top>
|
||||||
|
<q-item-label lines="1">
|
||||||
|
<span class="text-weight-medium">{{ email }}</span>
|
||||||
|
<span class="text-grey-8"></span>
|
||||||
|
</q-item-label>
|
||||||
|
<q-item-label
|
||||||
|
lines="1"
|
||||||
|
class="q-mt-xs text-body2 text-weight-bold text-primary text-uppercase"
|
||||||
|
>
|
||||||
|
<span class="cursor-pointer">Leggi Email</span>
|
||||||
|
</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
|
||||||
|
<q-item-section top side>
|
||||||
|
<div class="text-grey-8 q-gutter-xs">
|
||||||
|
<q-btn
|
||||||
|
class="gt-xs"
|
||||||
|
size="12px"
|
||||||
|
flat
|
||||||
|
dense
|
||||||
|
round
|
||||||
|
icon="delete"
|
||||||
|
@click="removeEmails(email)"
|
||||||
|
/>
|
||||||
|
<q-btn
|
||||||
|
class="gt-xs"
|
||||||
|
size="12px"
|
||||||
|
flat
|
||||||
|
dense
|
||||||
|
round
|
||||||
|
icon="edit"
|
||||||
|
@click="
|
||||||
|
emailSel = email;
|
||||||
|
showchangePwd = true;
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
<!--<q-btn size="12px" flat dense round icon="more_vert" />-->
|
||||||
|
</div>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-list>
|
||||||
|
</div>
|
||||||
<div v-if="rischeckDNS" v-html="rischeckDNS"></div>
|
<div v-if="rischeckDNS" v-html="rischeckDNS"></div>
|
||||||
<q-btn
|
<q-btn
|
||||||
v-if="errorDNS"
|
v-if="errorDNS"
|
||||||
@@ -132,7 +202,12 @@
|
|||||||
@click.stop="toggleSelect(props.row)"
|
@click.stop="toggleSelect(props.row)"
|
||||||
></q-checkbox>
|
></q-checkbox>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td v-for="col in viscolumnsDNS" :key="col.name" :props="props">
|
<q-td
|
||||||
|
v-for="col in viscolumnsDNS"
|
||||||
|
:key="col.name"
|
||||||
|
:props="props"
|
||||||
|
style="max-width: 240px; white-space: pre-wrap; overflow: auto"
|
||||||
|
>
|
||||||
<q-popup-edit
|
<q-popup-edit
|
||||||
v-if="col.name === 'content'"
|
v-if="col.name === 'content'"
|
||||||
v-model="props.row.content"
|
v-model="props.row.content"
|
||||||
@@ -166,6 +241,15 @@
|
|||||||
autogrow
|
autogrow
|
||||||
/>
|
/>
|
||||||
</q-popup-edit>
|
</q-popup-edit>
|
||||||
|
<q-btn
|
||||||
|
v-if="col.name === 'delete'"
|
||||||
|
icon="delete"
|
||||||
|
color="negative"
|
||||||
|
dense
|
||||||
|
size="sm"
|
||||||
|
@click="delRecordDNS(props.row)"
|
||||||
|
>
|
||||||
|
</q-btn>
|
||||||
<q-popup-edit
|
<q-popup-edit
|
||||||
v-if="col.name === 'priority'"
|
v-if="col.name === 'priority'"
|
||||||
v-model="props.row.priority"
|
v-model="props.row.priority"
|
||||||
@@ -277,6 +361,96 @@
|
|||||||
</template>
|
</template>
|
||||||
</q-field>
|
</q-field>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Dialog per inserire nuova email -->
|
||||||
|
<q-dialog v-model="showNewEmail">
|
||||||
|
<q-card style="min-width: 350px">
|
||||||
|
<q-card-section>
|
||||||
|
<div class="text-h6">Aggiungi Nuova Casella Email</div>
|
||||||
|
</q-card-section>
|
||||||
|
|
||||||
|
<q-card-section class="q-pt-none">
|
||||||
|
<q-input
|
||||||
|
v-model="newEmail"
|
||||||
|
label="Indirizzo Email"
|
||||||
|
type="email"
|
||||||
|
:rules="[(val) => !!val || 'Email è obbligatoria']"
|
||||||
|
/>
|
||||||
|
<q-input
|
||||||
|
v-model="newPassword"
|
||||||
|
label="Password"
|
||||||
|
:type="isPwd ? 'password' : 'text'"
|
||||||
|
:rules="[
|
||||||
|
(val) =>
|
||||||
|
val.length >= 8 ||
|
||||||
|
'La password deve essere di almeno 8 caratteri',
|
||||||
|
]"
|
||||||
|
>
|
||||||
|
<template v-slot:append>
|
||||||
|
<q-icon
|
||||||
|
:name="isPwd ? 'visibility_off' : 'visibility'"
|
||||||
|
class="cursor-pointer"
|
||||||
|
@click="isPwd = !isPwd"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-card-section>
|
||||||
|
|
||||||
|
<q-card-actions align="right" class="text-primary">
|
||||||
|
<q-btn flat label="Annulla" v-close-popup />
|
||||||
|
<q-btn
|
||||||
|
flat
|
||||||
|
label="Aggiungi Casella"
|
||||||
|
@click="addEmail"
|
||||||
|
:disable="!isFormValid"
|
||||||
|
/>
|
||||||
|
</q-card-actions>
|
||||||
|
</q-card>
|
||||||
|
</q-dialog>
|
||||||
|
<q-dialog v-model="showchangePwd">
|
||||||
|
<q-card style="min-width: 350px">
|
||||||
|
<q-card-section>
|
||||||
|
<div class="text-h6">Aggiorna Password Email</div>
|
||||||
|
</q-card-section>
|
||||||
|
|
||||||
|
<q-card-section class="q-pt-none">
|
||||||
|
<q-input
|
||||||
|
v-model="emailSel"
|
||||||
|
label="Indirizzo Email"
|
||||||
|
type="email"
|
||||||
|
:disable="true"
|
||||||
|
/>
|
||||||
|
<q-input
|
||||||
|
v-model="changePassword"
|
||||||
|
autofocus
|
||||||
|
label="Password"
|
||||||
|
:type="isPwd ? 'password' : 'text'"
|
||||||
|
:rules="[
|
||||||
|
(val) =>
|
||||||
|
val.length >= 8 ||
|
||||||
|
'La password deve essere di almeno 8 caratteri',
|
||||||
|
]"
|
||||||
|
>
|
||||||
|
<template v-slot:append>
|
||||||
|
<q-icon
|
||||||
|
:name="isPwd ? 'visibility_off' : 'visibility'"
|
||||||
|
class="cursor-pointer"
|
||||||
|
@click="isPwd = !isPwd"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</q-input>
|
||||||
|
</q-card-section>
|
||||||
|
|
||||||
|
<q-card-actions align="right" class="text-primary">
|
||||||
|
<q-btn flat label="Annulla" v-close-popup />
|
||||||
|
<q-btn
|
||||||
|
flat
|
||||||
|
label="Aggiorna Password"
|
||||||
|
@click="setMailUserPwd"
|
||||||
|
:disable="!isFormValidChange"
|
||||||
|
/>
|
||||||
|
</q-card-actions>
|
||||||
|
</q-card>
|
||||||
|
</q-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user