diff options
author | Tomasz Kramkowski <tk@the-tk.com> | 2017-04-12 11:44:39 +0200 |
---|---|---|
committer | Tomasz Kramkowski <tk@the-tk.com> | 2017-04-12 11:44:39 +0200 |
commit | c2b8235b0e3506d0d36ac626c5df84edd7c58740 (patch) | |
tree | e251e4f1ec50494c41c8cbd7c922a18b33528719 /templates | |
parent | 46494949fbd551e40a082421dc9e86be084a00d8 (diff) | |
download | dmarcpipe-c2b8235b0e3506d0d36ac626c5df84edd7c58740.tar.gz dmarcpipe-c2b8235b0e3506d0d36ac626c5df84edd7c58740.tar.xz dmarcpipe-c2b8235b0e3506d0d36ac626c5df84edd7c58740.zip |
dmarcstats
Diffstat (limited to 'templates')
-rw-r--r-- | templates/feedback/export.xml | 72 | ||||
-rw-r--r-- | templates/feedback/index.html | 49 | ||||
-rw-r--r-- | templates/feedback/report.html | 113 | ||||
-rw-r--r-- | templates/index.html | 11 | ||||
-rw-r--r-- | templates/layout.html | 15 | ||||
-rw-r--r-- | templates/record/index.html | 96 | ||||
-rw-r--r-- | templates/stats/index.html | 10 |
7 files changed, 366 insertions, 0 deletions
diff --git a/templates/feedback/export.xml b/templates/feedback/export.xml new file mode 100644 index 0000000..ad556d2 --- /dev/null +++ b/templates/feedback/export.xml @@ -0,0 +1,72 @@ +<?xml version="1.0"?> +<feedback> + <report_metadata> + <org_name>{{ feedback.rm_org_name }}</org_name> + <email>{{ feedback.rm_email }}</email> + {% if feedback.rm_extra_contact_info %} + <extra_contact_info>{{ feedback.rm_extra_contact_info }}</extra_contact_info> + {% endif %} + <report_id>{{ feedback.rm_report_id }}</report_id> + <date_range> + <begin>{{ feedback.rm_date_begin }}</begin> + <end>{{ feedback.rm_date_end }}</end> + </date_range> + </report_metadata> + <policy_published> + <domain>{{ feedback.pp_domain }}</domain> + <adkim>{{ feedback.pp_adkim }}</adkim> + <aspf>{{ feedback.pp_aspf }}</aspf> + <p>{{ feedback.pp_p }}</p> + <sp>{{ feedback.pp_sp }}</sp> + <pct>{{ feedback.pp_pct }}</pct> + </policy_published> + {% for r in records %} + <record> + <row> + <source_ip>{{ r.row_source_ip }}</source_ip> + <count>{{ r.row_count }}</count> + {% if r.row_pol_disposition and r.row_pol_dkim and r.row_pol_spf %} + <policy_evaluated> + <disposition>{{ r.row_pol_disposition }}</disposition> + <dkim>{{ r.row_pol_dkim }}</dkim> + <spf>{{ r.row_pol_spf }}</spf> + {% for rs in reasons if rs.recordid == r.recordid %} + <reason> + <type>{{ rs.type }}</type> + {% if rs.comment %} + <comment>{{ rs.comment }}</comment> + {% endif %} + </reason> + {% endfor %} + </policy_evaluated> + {% endif %} + </row> + <identifiers> + {% if r.ids_envelope_to %} + <envelope_to>{{ r.ids_envelope_to }}</envelope_to> + {% endif %} + <header_from>{{ r.ids_header_from }}</header_from> + </identifiers> + <auth_results> + {% for d in resdkim if d.recordid == r.recordid %} + <dkim> + <domain>{{ d.domain }}</domain> + {% if d.selector %} + <selector>{{ d.selector }}</selector> + {% endif %} + <result>{{ d.result }}</result> + {% if d.human_result %} + <human_result>{{ d.human_result }}</human_result> + {% endif %} + </dkim> + {% endfor %} + {% for s in resspf if s.recordid == r.recordid %} + <spf> + <domain>{{ s.domain }}</domain> + <result>{{ s.result }}</result> + </spf> + {% endfor %} + </auth_results> + </record> + {% endfor %} +</feedback> diff --git a/templates/feedback/index.html b/templates/feedback/index.html new file mode 100644 index 0000000..617c758 --- /dev/null +++ b/templates/feedback/index.html @@ -0,0 +1,49 @@ +{% extends "layout.html" %} +{% block title %}Feedback{% endblock %} +{% block content %} +<ol class="breadcrumb"> + <li><a href="{{ url_for('index') }}">Index</a></li> + <li class="active">Feedback</li> +</ol> +<h1>Feedback</h1> +<table class="table table-condensed"> + <tr> + <th>{{ orderhdr('Organisation Name', 'feedback', 'rm_org_name', order)|safe }}</th> + <th>{{ orderhdr('Date Begin', 'feedback', 'rm_date_begin', order)|safe }}</th> + <th>{{ orderhdr('Date End', 'feedback', 'rm_date_end', order)|safe }}</th> + <th>{{ orderhdr('Messages', 'feedback', 'nemails', order)|safe }}</th> + <th>None</th> + <th>Pass</th> + <th>DKIM</th> + <th>SPF</th> + <th></th> + </tr> + {% for item in feedback %} + <a href="{{ url_for('report', feedbackid=item.feedbackid) }}"> + <tr> + <td>{{ item.rm_org_name }}</td> + <td><time>{{ item.rm_date_begin|isotime }}</time></td> + <td><time>{{ item.rm_date_end|isotime }}</time></td> + <td>{{ item.nemails }}</td> + <td class="{{ item.pass_none|pctclass(item.nemails) }}"> + {{ (item.pass_none / item.nemails * 100)|round|int }}% + </td> + <td class="{{ item.pass_dmarc|pctclass(item.nemails) }}"> + {{ (item.pass_dmarc / item.nemails * 100)|round|int }}% + </td> + <td class="{{ item.pass_dkim|pctclass(item.nemails) }}"> + {{ (item.pass_dkim / item.nemails * 100)|round|int }}% + </td> + <td class="{{ item.pass_spf|pctclass(item.nemails) }}"> + {{ (item.pass_spf / item.nemails * 100)|round|int }}% + </td> + <td> + <a class="btn btn-xs" href="{{ url_for('report', feedbackid=item.feedbackid) }}"> + Report + </a> + </td> + </tr> + </a> + {% endfor %} +</table> +{% endblock %} diff --git a/templates/feedback/report.html b/templates/feedback/report.html new file mode 100644 index 0000000..141c823 --- /dev/null +++ b/templates/feedback/report.html @@ -0,0 +1,113 @@ +{% extends "layout.html" %} +{% block title %}Report{% endblock %} +{% block content %} +<ol class="breadcrumb"> + <li><a href="{{ url_for('index') }}">Index</a></li> + <li><a href="{{ url_for('feedback') }}">Feedback</a></li> + <li class="active">Report</li> +</ol> +<h1>Report</h1> +<div class="row"> + <div class="col-md-7"> + <h2>Report Metadata</h1> + <dl class="dl-horizontal"> + <dt>Organisation Name</dt><dd>{{ feedback.rm_org_name }}</dd> + <dt>Email</dt><dd>{{ feedback.rm_email }}</dd> + <dt>Extra Contact Info</dt><dd>{{ feedback.rm_extra_contact_info }}</dd> + <dt>Report ID</dt><dd>{{ feedback.rm_report_id }}</dd> + <dt>Date Range</dt><dd> + <time>{{ feedback.rm_date_begin|isotime }}</time> + to + <time>{{ feedback.rm_date_end|isotime }}</time> + </dd> + </dl> + </div> + <div class="col-md-5"> + <h2>Policy Published</h1> + <dl class="dl-horizontal"> + <dt>Domain</dt><dd>{{ feedback.pp_domain }}</dd> + <dt>DKIM Alignment</dt><dd>{{ feedback.pp_adkim|alignment }}</dd> + <dt>SPF Alignment</dt><dd>{{ feedback.pp_aspf|alignment }}</dd> + <dt>Policy</dt><dd>{{ feedback.pp_p|capitalize }}</dd> + <dt>Subdomain Policy</dt><dd>{{ feedback.pp_sp|capitalize }}</dd> + </dl> + </div> + <div class="col-md-6"> + <h2>Statistics</h2> + <table class="table"> + <tr> + <th></th> + <th>Total</th> + <th>%</th> + </tr> + <tr> + <td>Messages</td> + <td>{{ total.records }}</td> + <td></td> + </tr> + <tr class="{{ total.none|pctclass(total.records) }}"> + <td>Disposition None</td> + <td>{{ total.none }}</td> + <td>{{ (total.none / total.records * 100)|round|int }}%</td> + </tr> + <tr class="{{ total.dmarc|pctclass(total.records) }}"> + <td>DKIM or SPF Pass</td> + <td>{{ total.dmarc }}</td> + <td>{{ (total.dmarc / total.records * 100)|round|int }}%</td> + </tr> + <tr class="{{ total.dkim|pctclass(total.records) }}"> + <td>DKIM Pass</td> + <td>{{ total.dkim }}</td> + <td>{{ (total.dkim / total.records * 100)|round|int }}%</td> + </tr> + <tr class="{{ total.spf|pctclass(total.records) }}"> + <td>SPF Pass</td> + <td>{{ total.spf }}</td> + <td>{{ (total.spf / total.records * 100)|round|int }}%</td> + </tr> + </table> + </div> + <div class="col-md-6"> + <h2>Utilities</h2> + <ul> + <li>XML Export: + <a class="btn btn-default" href="{{ url_for('export', feedbackid=feedback.feedbackid) }}">View</a> + <a class="btn btn-default" href="{{ url_for('export', feedbackid=feedback.feedbackid) }}" download="{{ feedback.rm_report_id }}">Download</a> + </li> + </ul> + </div> +</div> +<div class="row"> + <div class="col-md-12"> + <h2>Records</h2> + <table class="table table-condensed"> + <tr> + <th>Source</th> + <th>Count</th> + <th>Disposition</th> + <th>DKIM</th> + <th>SPF</th> + <th>Envelope To</th> + <th>Header From</th> + <th></th> + </tr> + {% for item in records %} + <tr> + <td>{{ item['row_source_ip']|fqdn }}</td> + <td>{{ item['row_count'] }}</td> + <td>{{ item['row_pol_disposition'] }}</td> + <td class="{{ item['row_pol_dkim']|tblclass }}">{{ item['row_pol_dkim'] }}</td> + <td class="{{ item['row_pol_spf']|tblclass }}">{{ item['row_pol_spf'] }}</td> + <td>{{ item['ids_envelope_to'] }}</td> + <td>{{ item['ids_header_from'] }}</td> + <td> + <a class="btn btn-xs" href="{{ url_for('record', recordid=item['recordid']) }}"> + Record + </a> + </td> + </tr> + {% endfor %} + </table> + {% endblock %} + </div> +</div> diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..1e0364f --- /dev/null +++ b/templates/index.html @@ -0,0 +1,11 @@ +{% extends "layout.html" %} +{% block title %}Index{% endblock %} +{% block content %} +<ol class="breadcrumb"> + <li class="active">Index</li> +</ol> +<ul class="nav nav-pills nav-stacked"> + <li role="presentation"><a href="{{ url_for('feedback') }}">Feedback list</a></li> + <li role="presentation"><a href="{{ url_for('stats') }}">Statistics</a></li> +</ul> +{% endblock %} diff --git a/templates/layout.html b/templates/layout.html new file mode 100644 index 0000000..d7ca750 --- /dev/null +++ b/templates/layout.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + {% block head %} + <!--<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}" />--> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> + <title>{% block title %}{% endblock %} - DMARC Statistics</title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + {% endblock %} + </head> + <body> + <!--<main>% block content %}% endblock %}</main>--> + <div class="container">{% block content %}{% endblock %}</div> + </body> +</html> diff --git a/templates/record/index.html b/templates/record/index.html new file mode 100644 index 0000000..ace1995 --- /dev/null +++ b/templates/record/index.html @@ -0,0 +1,96 @@ +{% extends "layout.html" %} +{% block title %}Record{% endblock %} +{% block content %} +<ol class="breadcrumb"> + <li><a href="{{ url_for('index') }}">Index</a></li> + <li><a href="{{ url_for('feedback') }}">Feedback</a></li> + <li><a href="{{ url_for('report', feedbackid=record.feedbackid) }}">Report</a></li> + <li class="active">Record</li> +</ol> +<h1>Record</h2> +<div class="row"> + <div class="col-md-6"> + <h2>Record Details</h2> + <dl class="dl-horizontal"> + <dt>Source IP</dt><dd>{{ record.row_source_ip|fqdn }}</dd> + <dt>Count</dt><dd>{{ record.row_count }}</dd> + </dl> + <h3>Policy Evaluated</h3> + <dl class="dl-horizontal"> + <dt>Disposition</dt><dd>{{ record.row_pol_disposition }}</dd> + <dt>DKIM</dt><dd> + <span class="label label-{{ record.row_pol_dkim|tblclass }}"> + {{ record.row_pol_dkim }} + </span> + </dd> + <dt>SPF</dt><dd> + <span class="label label-{{ record.row_pol_spf|tblclass }}"> + {{ record.row_pol_spf }} + </span> + </dd> + </dl> + {% if reasons %} + <h4>Reasons</h4> + <table class="table"> + <tr> + <th>Type</th> + <th>Comment</th> + </tr> + {% for item in reasons %} + <tr> + <td>{{ item['type'] }}</td> + <td>{{ item['comment'] }}</td> + </tr> + {% endfor %} + </table> + {% endif %} + </div> + <div class="col-md-4"> + <h2>Identifiers</h2> + <dl class="dl-horizontal"> + <dt>Envelope To</dt><dd>{{ record.ids_envelope_to }}</dd> + <dt>Header From</dt><dd>{{ record.ids_header_from }}</dd> + </dl> + </div> +</div> + +<div class="row"> + {% if resdkim %} + <div class="col-md-8"> + <h2>DKIM Results</h2> + <table class="table"> + <tr> + <th>Domain</th> + <th>Selector</th> + <th>Result</th> + <th>Human Result</th> + </tr> + {% for item in resdkim %} + <tr> + <td>{{ item['domain'] }}</td> + <td>{{ item['selector'] }}</td> + <td class="{{ item['result']|tblclass }}">{{ item['result'] }}</td> + <td>{{ item['human_result'] }}</td> + </tr> + {% endfor %} + </table> + </div> + {% endif %} + + <div class="col-md-4"> + <h2>SPF Results</h2> + <table class="table"> + <tr> + <th>Domain</th> + <th>Result</th> + </tr> + {% for item in resspf %} + <tr> + <td>{{ item['domain'] }}</td> + <td class="{{ item['result']|tblclass }}">{{ item['result'] }}</td> + </tr> + {% endfor %} + </table> + {% endblock %} + </div> +</div> diff --git a/templates/stats/index.html b/templates/stats/index.html new file mode 100644 index 0000000..aab0f4e --- /dev/null +++ b/templates/stats/index.html @@ -0,0 +1,10 @@ +{% extends "layout.html" %} +{% block title %}Statistics{% endblock %} +{% block content %} +<ol class="breadcrumb"> + <li><a href="{{ url_for('index') }}">Index</a></li> + <li class="active">Statistics</li> +</ol> +<h1>Statistics</h1> +<p>Nothing here yet</p> +{% endblock %} |