diff --git a/webadmin/admin.html b/webadmin/admin.html index 771cf0e..8409e1d 100644 --- a/webadmin/admin.html +++ b/webadmin/admin.html @@ -1498,6 +1498,7 @@ const tlsrptResults = async () => { dom.th('Recipient domain', attr({title: 'Domain of addressee. For delivery to a recipient, the recipient and policy domains will match for reporting on MTA-STS policies, but can also result in reports for hosts from the MX record of the recipient to report on DANE policies.'})), dom.th('Policy domain', attr({title: 'Domain for TLSRPT policy, specifying URIs to which reports should be sent.'})), dom.th('Host', attr({title: 'Whether policy domain is an (MX) host (for DANE), or a recipient domain (for MTA-STS).'})), + dom.th('Policies', attr({title: 'Policies found.'})), dom.th('Success', attr({title: 'Total number of successful connections.'})), dom.th('Failure', attr({title: 'Total number of failed connection attempts.'})), dom.th('Failure details', attr({title: 'Total number of details about failures.'})), @@ -1522,18 +1523,26 @@ const tlsrptResults = async () => { failed += result.summary['total-failure-session-count'] failureDetails += (result['failure-details'] || []).length }) + const policyTypes = [] + for (const result of r.Results) { + const pt = result.policy['policy-type'] + if (!policyTypes.includes(pt)) { + policyTypes.push(pt) + } + } return dom.tr( dom.td(r.DayUTC), dom.td(r.RecipientDomain), dom.td(dom.a(attr({href: '#tlsrpt/results/'+r.PolicyDomain}), r.PolicyDomain)), dom.td(r.IsHost ? '✓' : ''), + dom.td(policyTypes.join(', ')), dom.td(style({textAlign: 'right'}), ''+success), dom.td(style({textAlign: 'right'}), ''+failed), dom.td(style({textAlign: 'right'}), ''+failureDetails), dom.td(style({textAlign: 'right'}), r.SendReport ? '✓' : ''), ) }), - results.length === 0 ? dom.tr(dom.td(attr({colspan: '8'}), 'No results.')) : [], + results.length === 0 ? dom.tr(dom.td(attr({colspan: '9'}), 'No results.')) : [], ), ), )