fix(enrichers): dnsx stdin input + configurable Scamalytics API host - #200
Merged
dextmorgn merged 1 commit intoJul 28, 2026
Merged
Conversation
Two enrichers silently return empty results instead of failing loudly. 1. domain_to_dns dnsx >= 1.2 treats -d as "bruteforce this domain" and exits with "missing wordlist(w) flag required with domain(d) input" unless -w is also given, so `dnsx -d example.com -a -aaaa -json -silent` never produces output. The enricher catches nothing (the tool exits 0) and returns [], while Celery still reports the task as succeeded. Feed the single target on stdin instead, which is the supported single-target invocation. DockerTool.launch() gains an optional entrypoint override so a shell can be put in front of the image entrypoint; the domain is passed through shlex.quote(). 2. ip_to_fraudscore Scamalytics assigns each account a numbered API node (api11, api12, ...) and the host was hardcoded to api12, which returns 404 for every account provisioned on a different node. The host is now read from a SCAMLYTICS_API_HOST secret/env var, defaulting to the previous api12 so existing deployments are unaffected. Verified against dnsx v1.2.2 and a live Scamalytics v3 account.
dextmorgn
approved these changes
Jul 28, 2026
dextmorgn
left a comment
Collaborator
There was a problem hiding this comment.
This looks great @Topman3579, thanks !
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two enrichers return an empty result instead of failing loudly, so the task is reported as succeeded and nothing shows up in the graph.
1.
domain_to_dns— dnsx no longer accepts a bare-dDnsxTool.resolve_domain()builds:Since dnsx 1.2,
-dmeans "bruteforce this domain" and requires a wordlist:The exit code is 0, so nothing raises — the enricher just returns
[]and Celery logssucceeded. From the UI it looks like the domain simply has no DNS records.Fix: feed the single target on stdin, which is the supported single-target invocation:
DockerTool.launch()gains an optionalentrypointargument so a shell can be placed in front of the image entrypoint. The domain is passed throughshlex.quote().Verified against
projectdiscovery/dnsx:latest(v1.2.2):2.
ip_to_fraudscore— Scamalytics API host is per-accountThe host is hardcoded:
Scamalytics provisions each account on a numbered API node and hands out the full base URL at signup. An account on a different node gets a plain 404 from
api12, with the same silent-empty-result outcome. On a live v3 account provisioned onapi11:200+ full JSONapi12404 Not FoundFix: read the host from a
SCAMLYTICS_API_HOSTsecret / env var, defaulting toapi12so existing deployments are unchanged.Notes