6 <meta name=
"viewport" content=
"width=device-width, initial-scale=1">
7 <meta name=
"robots" content=
"noindex">
8 <title>Dmarc reports
</title>
9 <link rel=
"stylesheet" href=
"default.css">
13 <div id=
"app" style=
"width: 100%">
14 <div class=
"optionblock" v-if=
"info">
16 <span class='optionlabel'
>Hide all-green lines:
</span>
17 <label><input type=
"radio" :
value=
"false" v-model=
"filterGreen"> no
</label>
18 <label><input type=
"radio" :
value=
"true" v-model=
"filterGreen"> yes
</label>
21 <span class='optionlabel'
>Sort order:
</span>
22 <label><input type=
"radio" :
value=
"false" v-model=
"reverse"> ascending
</label>
23 <label><input type=
"radio" :
value=
"true" v-model=
"reverse"> descending
</label>
26 <span class='optionlabel'
>Domain(s):
</span>
27 <select v-model=
"filterDomain">
28 <option selected=
"selected" :
value=
"null">[all]
</option>
29 <option v-for=
"domain in info.domains" :
value=
"domain">{{ domain }}
</option>
33 <span class='optionlabel'
>Organisation(s):
</span>
34 <select v-model=
"filterOrg">
35 <option selected=
"selected" :
value=
"null">[all]
</option>
36 <option v-for=
"org in info.orgs" :
value=
"org">{{ org }}
</option>
40 <span class='optionlabel'
>Time:
</span>
41 <select v-model=
"filterDate">
42 <option selected=
"selected" :
value=
"null">[all]
</option>
43 <option v-for=
"date in info.dates" :
value=
"date">{{ date }}
</option>
48 <h1 class='main'
>DMARC Reports
</h1>
49 <table class='reportlist'
v-if=
"summaries">
56 <th>Reporting Organization
</th>
62 <template v-for=
"summary in filtered()">
63 <tr v-on:
click=
"toggle(summary)" class=
"summaryrow"
64 v-bind:
class=
"[{ selected: selectedSummary && summary.serial === selectedSummary.serial }]">
65 <td class='right'
><span :
class=
"'circle_' + getColor(summary)"></span></td>
66 <td class='right'
>{{ printDate(summary.mindate) }}
</td>
67 <td class='right'
>{{ printDate(summary.maxdate) }}
</td>
68 <td class='center'
>{{ summary.domain }}
</td>
69 <td class='center'
>{{ summary.org }}
</td>
70 <td class='center'
>{{ summary.reportid }}
</td>
71 <td class='center'
>{{ summary.rcount }}
</td>
73 <tr v-if=
"selectedSummary && summary.serial === selectedSummary.serial">
74 <td colspan=
"6" class=
"reportcell">
75 <div class='center reportdesc'
>
76 <p>Policies: adkim={{ summary.policy_adkim }}, aspf={{ summary.policy_aspf }}, p={{ summary.policy_none }}, sp={{ summary.policy_sp }}, pct={{ summary.policy_pct }}
</p>
78 <table v-if=
"summary.details" class='reportdata'
>
83 <th>Message Count
</th>
87 <th>Raw DKIM Result
</th>
89 <th>Raw SPF Result
</th>
93 <tr v-for=
"record in summary.details.rptrecord" :class='getColor(record)'
>
94 <td>{{ record.ip }}
</td>
95 <td>{{ record.host }}
</td>
96 <td>{{ record.rcount }}
</td>
97 <td>{{ record.disposition }}
</td>
98 <td>{{ record.reason }}
</td>
99 <td>{{ record.dkimdomain }}
</td>
100 <td>{{ record.dkimresult }}
</td>
101 <td>{{ record.spfdomain }}
</td>
102 <td>{{ record.spfresult }}
</td>
114 <script src=
"https://cdn.jsdelivr.net/npm/vue@2.6.11"></script>
115 <script src=
"app.js"></script>