X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=dmarc_to_database.py;fp=dmarc_to_database.py;h=272998f8ccce56e494c949fcca7017fe4fb96251;hb=4c6bfcba885846a2abe23497cb097f91c469abe5;hp=46249649141088ccf310859496d7f36ac9a41326;hpb=63dc7509a66d6c0653bae12a7ff311b0e8adfe71;p=dmarc.git diff --git a/dmarc_to_database.py b/dmarc_to_database.py index 4624964..272998f 100644 --- a/dmarc_to_database.py +++ b/dmarc_to_database.py @@ -15,9 +15,9 @@ def fetch_msg(num): def xml_of_part(part): with zipfile.ZipFile(io.BytesIO(part.get_payload(decode=True))) as zf: - fn = zf.infolist()[0].filename - contents = zf.read(fn).decode('utf-8') - return xml.etree.ElementTree.fromstring(contents) + fn = zf.infolist()[0].filename + contents = zf.read(fn).decode('utf-8') + return xml.etree.ElementTree.fromstring(contents) def xml_of(message): @@ -40,66 +40,67 @@ def maybe_strip(text): else: return '' -field_maps = {'./policy_published/adkim': {'pg_field_name': 'policy_published_adkim', - 'pg_table': 'reports', - 'pg_type': 'varchar'}, - './policy_published/aspf': {'pg_field_name': 'policy_published_aspf', - 'pg_table': 'reports', - 'pg_type': 'varchar'}, - './policy_published/domain': {'pg_field_name': 'policy_published_domain', - 'pg_table': 'reports', - 'pg_type': 'varchar'}, - './policy_published/p': {'pg_field_name': 'policy_published_p', - 'pg_table': 'reports', - 'pg_type': 'varchar'}, - './policy_published/pct': {'pg_field_name': 'policy_published_pct', - 'pg_table': 'reports', - 'pg_type': 'int'}, - './record[{}]/auth_results/dkim/domain': {'pg_field_name': 'auth_results_dkim_domain', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/auth_results/dkim/result': {'pg_field_name': 'auth_results_dkim_result', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/auth_results/spf/domain': {'pg_field_name': 'auth_results_spf_domain', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/auth_results/spf/result': {'pg_field_name': 'auth_results_spf_result', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/identifiers/header_from': {'pg_field_name': 'identifiers_header_from', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/row/count': {'pg_field_name': 'count', - 'pg_table': 'report_items', - 'pg_type': 'int'}, - './record[{}]/row/policy_evaluated/disposition': {'pg_field_name': 'policy_evaluated_disposition', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/row/policy_evaluated/dkim': {'pg_field_name': 'policy_evaluated_dkim', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/row/policy_evaluated/spf': {'pg_field_name': 'policy_evaluated_spf', - 'pg_table': 'report_items', - 'pg_type': 'varchar'}, - './record[{}]/row/source_ip': {'pg_field_name': 'source_ip', - 'pg_table': 'report_items', - 'pg_type': 'inet'}, - './report_metadata/date_range/begin': {'pg_field_name': 'report_metadata_date_range_begin', - 'pg_table': 'reports', - 'pg_type': 'timestamp'}, - './report_metadata/date_range/end': {'pg_field_name': 'report_metadata_date_range_end', - 'pg_table': 'reports', - 'pg_type': 'timestamp'}, - './report_metadata/email': {'pg_field_name': 'report_metadata_email', - 'pg_table': 'reports', - 'pg_type': 'varchar'}, - './report_metadata/org_name': {'pg_field_name': 'report_metadata_org_name', - 'pg_table': 'reports', - 'pg_type': 'varchar'}, - './report_metadata/report_id': {'pg_field_name': 'report_metadata_report_id', - 'pg_table': 'reports', - 'pg_type': 'varchar'}} +field_maps = { + './policy_published/adkim': + {'pg_field_name': 'policy_published_adkim', + 'pg_table': 'reports', 'pg_type': 'varchar'}, + './policy_published/aspf': + {'pg_field_name': 'policy_published_aspf', + 'pg_table': 'reports', 'pg_type': 'varchar'}, + './policy_published/domain': + {'pg_field_name': 'policy_published_domain', + 'pg_table': 'reports', 'pg_type': 'varchar'}, + './policy_published/p': + {'pg_field_name': 'policy_published_p', + 'pg_table': 'reports', 'pg_type': 'varchar'}, + './policy_published/pct': + {'pg_field_name': 'policy_published_pct', + 'pg_table': 'reports', 'pg_type': 'int'}, + './record[{}]/auth_results/dkim/domain': + {'pg_field_name': 'auth_results_dkim_domain', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/auth_results/dkim/result': + {'pg_field_name': 'auth_results_dkim_result', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/auth_results/spf/domain': + {'pg_field_name': 'auth_results_spf_domain', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/auth_results/spf/result': + {'pg_field_name': 'auth_results_spf_result', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/identifiers/header_from': + {'pg_field_name': 'identifiers_header_from', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/row/count': + {'pg_field_name': 'count', + 'pg_table': 'report_items', 'pg_type': 'int'}, + './record[{}]/row/policy_evaluated/disposition': + {'pg_field_name': 'policy_evaluated_disposition', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/row/policy_evaluated/dkim': + {'pg_field_name': 'policy_evaluated_dkim', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/row/policy_evaluated/spf': + {'pg_field_name': 'policy_evaluated_spf', + 'pg_table': 'report_items', 'pg_type': 'varchar'}, + './record[{}]/row/source_ip': + {'pg_field_name': 'source_ip', + 'pg_table': 'report_items', 'pg_type': 'inet'}, + './report_metadata/date_range/begin': + {'pg_field_name': 'report_metadata_date_range_begin', + 'pg_table': 'reports', 'pg_type': 'timestamp'}, + './report_metadata/date_range/end': + {'pg_field_name': 'report_metadata_date_range_end', + 'pg_table': 'reports', 'pg_type': 'timestamp'}, + './report_metadata/email': + {'pg_field_name': 'report_metadata_email', + 'pg_table': 'reports', 'pg_type': 'varchar'}, + './report_metadata/org_name': + {'pg_field_name': 'report_metadata_org_name', + 'pg_table': 'reports', 'pg_type': 'varchar'}, + './report_metadata/report_id': + {'pg_field_name': 'report_metadata_report_id', + 'pg_table': 'reports', 'pg_type': 'varchar'}}