Commit Graph

57 Commits

Author SHA1 Message Date
Christian Krakau-Louis 9d0b12efea feat: persist DMARC aggregate metadata 2026-05-23 14:17:09 +02:00
Christian Krakau-Louis cd6fa25f5d feat: add DMARC aggregate parser compatibility 2026-05-23 13:58:32 +02:00
Christian Krakau-Louis e781b32a01 feat: add forensic sample analysis 2026-05-23 13:46:32 +02:00
Christian Krakau-Louis 8bce8a8595 feat: add forensic redaction controls 2026-05-23 13:21:03 +02:00
Christian Krakau-Louis 817270b1fb fix: harden forensic report ingestion 2026-05-23 13:02:01 +02:00
Christian Krakau-Louis 1f954c9e08 feat: add forensic report parsing storage 2026-05-23 12:52:54 +02:00
Christian Krakau-Louis 65b154ae7f feat: add mailbox test diagnostics 2026-05-23 12:14:49 +02:00
Christian Krakau-Louis beae6e7469 feat: add operations health and domain setup polish 2026-05-23 11:37:10 +02:00
Christian Krakau-Louis 521dbc92d0 feat: add Cloudflare DNS integration
Closes #31
2026-05-23 01:17:59 +02:00
Christian Krakau-Louis 947428afb6 harden notification settings 2026-05-23 00:56:49 +02:00
Christian Krakau-Louis 302159aeb6 feat: import selected fork operational fixes 2026-05-22 23:48:00 +02:00
Christian Krakau-Louis 77fd0f9552 feat: add cached DNS checks 2026-05-22 23:30:12 +02:00
Christian Krakau-Louis af66c93829 feat: add alert history 2026-05-22 23:18:32 +02:00
Christian Krakau-Louis f4ff1f151d feat: add scheduled summary notifications 2026-05-22 23:06:21 +02:00
Christian Krakau-Louis 05b687b525 feat: add notification alert rules 2026-05-22 22:55:49 +02:00
Christian Krakau-Louis dd4b90c9de feat: add apprise notification delivery 2026-05-22 22:44:08 +02:00
Christian Krakau-Louis 51f9f303ca Merge pull request #113 from christianlouis/copilot/fix-imap-client-folder-issue
Honor configured IMAP source folder
2026-05-22 22:19:01 +02:00
copilot-swe-agent[bot] f626675609 fix: honor configured IMAP source folder 2026-05-22 20:06:11 +00:00
Christian Krakau-Louis eeff24fa5c fix: redact secret diagnostics 2026-05-22 22:00:28 +02:00
Christian Krakau-Louis 14f9f6defd feat: add source pass fail rollups 2026-05-22 20:41:34 +02:00
Christian Krakau-Louis c1b81d3e06 feat: add mail import detail events 2026-05-22 20:11:56 +02:00
Christian Krakau-Louis b9041012de feat: persist imported DMARC reports 2026-05-22 19:38:03 +02:00
Christian Krakau-Louis 4fc69602b3 feat: add mail source import history 2026-05-22 19:29:49 +02:00
Christian Krakau-Louis 07b2ea400e fix: harden DMARC mail import 2026-05-22 19:17:32 +02:00
copilot-swe-agent[bot] 596a9b882e Fix DKIM selector extraction: show all working selectors and report-discovered selectors
- check_dkim now returns ALL matching selectors instead of stopping at first match
- DomainDNSResult.dkim_selectors is now a List[str] instead of a single Optional[str]
- DNSRecordResponse.dkimSelectors is now List[str]
- /selectors endpoint now also returns report_selectors (auto-discovered from DMARC reports)
- Frontend shows all live-check selectors and auto-discovered selectors as read-only
- Updated tests to match new data structures; added tests for multi-selector and report_selectors

Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/87d8b8d9-23c3-4d3b-85a3-8e354e62c768

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 23:54:45 +00:00
copilot-swe-agent[bot] 30007d21d6 feat: add rDNS hostname, SPF fix hints and auth tooltips to domain sources view
- dns_resolver.py: add _ip_to_arpa_name() helper and lookup_ptr() to
  BaseDNSProvider (no-op default), SystemDNSProvider (dnspython PTR),
  and CloudflareDNSProvider (DoH PTR type=12)
- domains.py: extend SourceEntry with hostname + spf_fix_hint; update
  get_domain_sources to run async PTR lookups and generate ip4:/ip6:
  SPF mechanism hints for failing IPs
- domain_details.html: show rDNS hostname below IP in sources table;
  add DaisyUI tooltip explaining each auth result; add "Fix SPF" popover
  with copy-paste mechanism for IPs that fail SPF
- tests: 15 new tests covering _ip_to_arpa_name, SystemDNSProvider/
  CloudflareDNSProvider PTR lookup, and sources endpoint hostname +
  fix-hint fields

Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/9eaa7749-047c-46bd-8bc0-2851ea02ffe4

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 22:44:18 +00:00
Christian Krakau-Louis 1815747fba Merge pull request #69 from christianlouis/copilot/debug-not-found-error
Fix /reports/{report_id} returning 404 Not Found
2026-03-30 00:27:52 +02:00
Christian Krakau-Louis 8665e39ff4 Merge pull request #70 from christianlouis/copilot/fix-internal-server-error
Fix 500 on GET /api/v1/domains/{domain}/sources: wrong record keys in ReportStore
2026-03-30 00:26:51 +02:00
Christian Krakau-Louis 506346537c Merge pull request #67 from christianlouis/copilot/add-gmail-api-mail-source
feat: add Gmail API & main.py helper tests; fix flake8 lint errors
2026-03-30 00:26:28 +02:00
copilot-swe-agent[bot] af122881a5 Fix /reports/{report_id} returning 404 - add report detail page and API endpoint
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/4a412936-3bf7-4c02-b121-c0c342c34f1b

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 22:18:17 +00:00
copilot-swe-agent[bot] cd1f82aa79 Fix 500 error in GET /domains/{domain}/sources: use spf_result/dkim_result not spf/dkim
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/59552cb2-df2b-43dd-a22c-bd699a458afb

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 22:17:05 +00:00
copilot-swe-agent[bot] 11daa15335 Fix domain reports and sources API 500 errors
- Use begin_timestamp/end_timestamp (Unix ints) instead of begin_date/end_date
  (ISO strings) when building ReportEntry, fixing Pydantic int_parsing errors
- Extract policy string from dict (policy["p"]) when the stored value is a dict,
  fixing Pydantic string_type validation error
- Rename _days -> days in ReportStore.get_domain_sources() so the endpoint's
  `days=days` keyword call no longer raises TypeError

Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/15ac3521-e81f-42fa-81a2-f6804a423e1d

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 20:03:43 +00:00
copilot-swe-agent[bot] 0c05ded74f fix: resolve flake8 C901/F401 errors in main.py, gmail_client.py, test_mail_sources.py
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/38868887-87b6-4032-8713-e90e56ae3318

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 19:50:50 +00:00
copilot-swe-agent[bot] 551d604b8f fix: address code review - clarify plaintext note, fix misleading template ternary
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/0c63851e-a69a-4a76-8dd8-25618e825b8c

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 19:37:10 +00:00
copilot-swe-agent[bot] 25b3567414 feat: implement Gmail API mail source with OAuth2, ingestion tracking, and UI
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/0c63851e-a69a-4a76-8dd8-25618e825b8c

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 19:34:03 +00:00
Christian Krakau-Louis 298ca938ec Merge pull request #62 from christianlouis/copilot/check-dns-data-in-dashboard
fix: repair corrupted dns_resolver.py to pass black --check (py310 target)
2026-03-29 21:17:25 +02:00
copilot-swe-agent[bot] 087c2b375b fix: remove stray fragments and duplicate _sanitize_for_log definitions in dns_resolver.py
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/8ad92992-343e-4e81-a830-cd83efcb2437

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 19:06:36 +00:00
Christian Krakau-Louis a77a89f475 Potential fix for code scanning alert no. 120: Log Injection
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-29 21:00:04 +02:00
Christian Krakau-Louis 8d5b713bf1 Potential fix for code scanning alert no. 119: Log Injection
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-29 20:59:52 +02:00
Christian Krakau-Louis 23d5377a50 Potential fix for code scanning alert no. 118: Log Injection
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-03-29 20:59:39 +02:00
copilot-swe-agent[bot] 6294e4c935 Fix black formatting in report_store.py
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/f917b2ae-df6c-4852-b3e1-4c7ea8f68996

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 18:58:07 +00:00
copilot-swe-agent[bot] a04006f75b fix: address code review — narrow exception types, computed dkimLiveText getter
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/19d17518-732d-4644-889b-cc63256e19b1

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 18:56:08 +00:00
copilot-swe-agent[bot] 0d1a4fdac3 feat: real DNS lookups, manual DKIM selectors, Cloudflare-ready DNS provider architecture
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/19d17518-732d-4644-889b-cc63256e19b1

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 18:53:35 +00:00
copilot-swe-agent[bot] 53d543f49c Add report deduplication and single-report deletion
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/37d68c2c-7cc8-45e4-bac3-e2e6f1611c6a

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 18:28:52 +00:00
copilot-swe-agent[bot] 0844981bc0 fix: handle XML namespaces in DMARCParser for web.de/gmx.net compatibility
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/56611674-6132-435f-ab36-728464bb9157

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 17:59:13 +00:00
copilot-swe-agent[bot] 84117abd13 fix: resolve CodeQL alerts, improve test coverage, fix StaticPool for HTTP tests
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/07b58025-2aeb-4e81-a168-7a6fccdc3569

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 17:08:39 +00:00
copilot-swe-agent[bot] f2a015971d Plan: resolve linter contradictions
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/1e4a1f06-55b9-4040-853e-6aaf9ee574c8

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 11:29:14 +00:00
copilot-swe-agent[bot] 50aa5bd5da Fix pylint warnings: logging, globals, exceptions, imports, duplicates
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/576427d4-4f6a-46d2-b75f-6862ecbcf526

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 11:21:35 +00:00
copilot-swe-agent[bot] 821d9dc863 fix: apply black formatting to reports.py and dmarc_parser.py
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/b108ee4f-3479-43fa-a9e9-23a697718aa3

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 11:05:07 +00:00
copilot-swe-agent[bot] 271b29186a Fix flake8 C901 complexity violations and F824 unused global in 5 files
Agent-Logs-Url: https://github.com/christianlouis/dmarq/sessions/e58d59de-a79d-48e1-a4fc-ffb61b868593

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-29 10:58:33 +00:00