aboutsummaryrefslogtreecommitdiff
path: root/generalresearch/models/network/rdns
diff options
context:
space:
mode:
authorstuppie2026-03-13 13:31:22 -0600
committerstuppie2026-03-13 13:31:22 -0600
commitefe1c368b8b49a2c6b3bf2193a5b89eb5426eba3 (patch)
treee00bc797640fc18f3484506d6a5b752cf1c8b7f4 /generalresearch/models/network/rdns
parentd9ab70d98624e22b87dfe40cc5e18c8ad5eb44c4 (diff)
downloadgeneralresearch-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.py10
-rw-r--r--generalresearch/models/network/rdns/execute.py13
-rw-r--r--generalresearch/models/network/rdns/parser.py3
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():