Skip to content

Commit 12b8c31

Browse files
authored
Merge pull request #2277 from JohnDuprey/dev
Mail Test
2 parents fa88b32 + 6480ec0 commit 12b8c31

File tree

3 files changed

+113
-0
lines changed

3 files changed

+113
-0
lines changed

src/_nav.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,11 @@ const _nav = [
622622
name: 'Mailbox Restores',
623623
to: '/email/tools/mailbox-restores',
624624
},
625+
{
626+
component: CNavItem,
627+
name: 'Mail Test',
628+
to: '/email/tools/mail-test',
629+
},
625630
],
626631
},
627632
{

src/routes.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import MailTest from 'src/views/email-exchange/tools/MailTest'
23

34
const Home = React.lazy(() => import('src/views/home/Home'))
45
const Logs = React.lazy(() => import('src/views/cipp/Logs'))
@@ -247,6 +248,7 @@ const MailboxRestoreWizard = React.lazy(() =>
247248
import('src/views/email-exchange/tools/MailboxRestoreWizard'),
248249
)
249250
const MailboxRestores = React.lazy(() => import('src/views/email-exchange/tools/MailboxRestores'))
251+
const Mailtest = React.lazy(() => import('src/views/email-exchange/tools/MailTest'))
250252

251253
const routes = [
252254
// { path: '/', exact: true, name: 'Home' },
@@ -611,6 +613,11 @@ const routes = [
611613
name: 'Mailbox Restores',
612614
component: MailboxRestores,
613615
},
616+
{
617+
path: '/email/tools/mail-test',
618+
name: 'Mail Test',
619+
component: MailTest,
620+
},
614621
{
615622
path: '/email/spamfilter/add-template',
616623
name: 'Add Spamfilter Template',
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import React from 'react'
2+
import { CippCallout, CippPageList } from 'src/components/layout'
3+
import { cellBooleanFormatter, cellDateFormatter } from 'src/components/tables'
4+
import { cellGenericFormatter } from 'src/components/tables/CellGenericFormat'
5+
import { useGenericGetRequestQuery } from 'src/store/api/app'
6+
7+
const MailTest = () => {
8+
const { data: config, isSuccess } = useGenericGetRequestQuery({
9+
path: '/api/ExecMailTest',
10+
params: { Action: 'CheckConfig' },
11+
})
12+
13+
const columns = [
14+
{
15+
name: 'Received',
16+
selector: (row) => row['Received'],
17+
sortable: true,
18+
exportSelector: 'Received',
19+
cell: cellDateFormatter({ format: 'short' }),
20+
},
21+
{
22+
name: 'From',
23+
selector: (row) => row['From'],
24+
sortable: true,
25+
exportSelector: 'From',
26+
cell: cellGenericFormatter(),
27+
},
28+
{
29+
name: 'Subject',
30+
selector: (row) => row['Subject'],
31+
sortable: true,
32+
exportSelector: 'Subject',
33+
cell: cellGenericFormatter(),
34+
},
35+
{
36+
name: 'SPF',
37+
selector: (row) => row?.AuthResult.filter((x) => x?.Name === 'spf')[0].Status == 'pass',
38+
cell: cellBooleanFormatter(),
39+
},
40+
{
41+
name: 'DKIM',
42+
selector: (row) => row?.AuthResult.filter((x) => x?.Name === 'dkim')[0].Status == 'pass',
43+
cell: cellBooleanFormatter(),
44+
},
45+
{
46+
name: 'DMARC',
47+
selector: (row) => row?.AuthResult.filter((x) => x?.Name === 'dmarc')[0].Status == 'pass',
48+
cell: cellBooleanFormatter(),
49+
},
50+
{
51+
name: 'Comp Auth',
52+
selector: (row) => row?.AuthResult.filter((x) => x?.Name === 'compauth')[0].Status == 'pass',
53+
cell: cellBooleanFormatter(),
54+
},
55+
{
56+
name: 'Auth Details',
57+
selector: (row) => row['AuthResult'],
58+
exportSelector: 'AuthResult',
59+
cell: cellGenericFormatter(),
60+
},
61+
{
62+
name: 'Headers',
63+
selector: (row) => row['Headers'],
64+
exportSelector: 'Headers',
65+
cell: cellGenericFormatter(),
66+
},
67+
{
68+
name: 'Open Message',
69+
selector: (row) => row['Link'],
70+
exportSelector: 'Link',
71+
cell: cellGenericFormatter(),
72+
},
73+
]
74+
return (
75+
<div>
76+
{isSuccess && (
77+
<CippCallout color={config?.HasMailRead ? 'info' : 'warning'} dismissible={true}>
78+
{config?.HasMailRead &&
79+
'Mail Test Email: ' + config?.MailAddresses.filter((x) => x?.IsPrimary)[0]?.Address}
80+
{config?.HasMailRead == false && 'Permission Check: ' + config?.Message}
81+
</CippCallout>
82+
)}
83+
{isSuccess && config?.HasMailRead === true && (
84+
<CippPageList
85+
capabilities={{ allTenants: true, helpContext: 'https://google.com' }}
86+
title="Mail Test"
87+
tenantSelector={false}
88+
datatable={{
89+
tableProps: {},
90+
keyField: 'id',
91+
columns,
92+
reportName: `MailTest`,
93+
path: '/api/ExecMailTest',
94+
}}
95+
/>
96+
)}
97+
</div>
98+
)
99+
}
100+
101+
export default MailTest

0 commit comments

Comments
 (0)