diff options
| author | stuppie | 2026-03-13 13:31:22 -0600 |
|---|---|---|
| committer | stuppie | 2026-03-13 13:31:22 -0600 |
| commit | efe1c368b8b49a2c6b3bf2193a5b89eb5426eba3 (patch) | |
| tree | e00bc797640fc18f3484506d6a5b752cf1c8b7f4 /generalresearch/models/network/rdns | |
| parent | d9ab70d98624e22b87dfe40cc5e18c8ad5eb44c4 (diff) | |
| download | generalresearch-efe1c368b8b49a2c6b3bf2193a5b89eb5426eba3.tar.gz generalresearch-efe1c368b8b49a2c6b3bf2193a5b89eb5426eba3.zip | |
ToolRunCommand + options models to handle cmd line args for all network tools
Diffstat (limited to 'generalresearch/models/network/rdns')
| -rw-r--r-- | generalresearch/models/network/rdns/command.py | 10 | ||||
| -rw-r--r-- | generalresearch/models/network/rdns/execute.py | 13 | ||||
| -rw-r--r-- | generalresearch/models/network/rdns/parser.py | 3 |
3 files changed, 16 insertions, 10 deletions
diff --git a/generalresearch/models/network/rdns/command.py b/generalresearch/models/network/rdns/command.py index e9d5bfd..aa48f2a 100644 --- a/generalresearch/models/network/rdns/command.py +++ b/generalresearch/models/network/rdns/command.py @@ -2,10 +2,12 @@ import subprocess from generalresearch.models.network.rdns.parser import parse_rdns_output from generalresearch.models.network.rdns.result import RDNSResult +from generalresearch.models.network.tool_run_command import RDNSRunCommand -def run_rdns(ip: str) -> RDNSResult: - args = build_rdns_command(ip).split(" ") +def run_rdns(config: RDNSRunCommand) -> RDNSResult: + cmd = config.to_command_str() + args = cmd.split(" ") proc = subprocess.run( args, capture_output=True, @@ -13,10 +15,10 @@ def run_rdns(ip: str) -> RDNSResult: check=False, ) raw = proc.stdout.strip() - return parse_rdns_output(ip, raw) + return parse_rdns_output(ip=config.options.ip, raw=raw) -def build_rdns_command(ip: str): +def build_rdns_command(ip: str) -> str: # e.g. dig +noall +answer -x 1.2.3.4 return " ".join(["dig", "+noall", "+answer", "-x", ip]) diff --git a/generalresearch/models/network/rdns/execute.py b/generalresearch/models/network/rdns/execute.py index 97b8bf8..03a5080 100644 --- a/generalresearch/models/network/rdns/execute.py +++ b/generalresearch/models/network/rdns/execute.py @@ -14,15 +14,18 @@ from generalresearch.models.network.tool_run import ( Status, RDNSRun, ) -from generalresearch.models.network.tool_run_command import ToolRunCommand +from generalresearch.models.network.tool_run_command import ( + RDNSRunCommand, + RDNSRunCommandOptions, +) def execute_rdns(ip: str, scan_group_id: Optional[UUIDStr] = None): started_at = datetime.now(tz=timezone.utc) tool_version = get_dig_version() - result = run_rdns(ip=ip) + config = RDNSRunCommand(options=RDNSRunCommandOptions(ip=ip)) + result = run_rdns(config) finished_at = datetime.now(tz=timezone.utc) - raw_command = build_rdns_command(ip) run = RDNSRun( tool_name=ToolName.DIG, @@ -32,9 +35,9 @@ def execute_rdns(ip: str, scan_group_id: Optional[UUIDStr] = None): ip=ip, started_at=started_at, finished_at=finished_at, - raw_command=raw_command, + raw_command=config.to_command_str(), scan_group_id=scan_group_id or uuid4().hex, - config=ToolRunCommand(command="dig", options={}), + config=config, parsed=result, ) diff --git a/generalresearch/models/network/rdns/parser.py b/generalresearch/models/network/rdns/parser.py index f12a6f4..231949e 100644 --- a/generalresearch/models/network/rdns/parser.py +++ b/generalresearch/models/network/rdns/parser.py @@ -2,12 +2,13 @@ import ipaddress import re from typing import List +from generalresearch.models.custom_types import IPvAnyAddressStr from generalresearch.models.network.rdns.result import RDNSResult PTR_RE = re.compile(r"\sPTR\s+([^\s]+)\.") -def parse_rdns_output(ip, raw): +def parse_rdns_output(ip: IPvAnyAddressStr, raw:str): hostnames: List[str] = [] for line in raw.splitlines(): |
