From 6ccbc892c77bed565a82ff990b800664357a389c Mon Sep 17 00:00:00 2001 From: David Marshall Date: Sun, 16 Feb 2025 09:03:46 -0500 Subject: [PATCH] CC-1889 --- src/core/lib/Extract.mjs | 6 ++++++ src/core/operations/ExtractDomains.mjs | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/core/lib/Extract.mjs b/src/core/lib/Extract.mjs index 18fec28cfa..3de2dd6d20 100644 --- a/src/core/lib/Extract.mjs +++ b/src/core/lib/Extract.mjs @@ -62,3 +62,9 @@ export const URL_REGEX = new RegExp(protocol + hostname + "(?:" + port + ")?(?:" * Domain name regular expression */ export const DOMAIN_REGEX = /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/ig; + + +/** + * DMARC Domain name regular expression + */ +export const DMARC_DOMAIN_REGEX = /\b((?=[a-z0-9_-]{1,63}\.)(xn--)?[a-z0-9_]+(-[a-z0-9_]+)*\.)+[a-z]{2,63}\b/ig; diff --git a/src/core/operations/ExtractDomains.mjs b/src/core/operations/ExtractDomains.mjs index c28efbb5b0..9e78bf3a2f 100644 --- a/src/core/operations/ExtractDomains.mjs +++ b/src/core/operations/ExtractDomains.mjs @@ -5,7 +5,7 @@ */ import Operation from "../Operation.mjs"; -import { search, DOMAIN_REGEX } from "../lib/Extract.mjs"; +import { search, DOMAIN_REGEX, DMARC_DOMAIN_REGEX } from "../lib/Extract.mjs"; import { caseInsensitiveSort } from "../lib/Sort.mjs"; /** @@ -39,6 +39,11 @@ class ExtractDomains extends Operation { name: "Unique", type: "boolean", value: false + }, + { + name: "Underscore (DMARC, DKIM, etc)", + type: "boolean", + value: false } ]; } @@ -49,11 +54,11 @@ class ExtractDomains extends Operation { * @returns {string} */ run(input, args) { - const [displayTotal, sort, unique] = args; + const [displayTotal, sort, unique, dmarc] = args; const results = search( input, - DOMAIN_REGEX, + dmarc ? DMARC_DOMAIN_REGEX : DOMAIN_REGEX, null, sort ? caseInsensitiveSort : null, unique