42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from ...models import DesiredRecord
|
|
from ...normalizer import normalize_hostname
|
|
from ...npm_client import NpmClient
|
|
|
|
|
|
class Plugin:
|
|
name = "npm"
|
|
|
|
def __init__(self, config):
|
|
self.config = config
|
|
self.client = NpmClient(config)
|
|
|
|
def discover(self):
|
|
records: list[DesiredRecord] = []
|
|
|
|
for host in self.client.proxy_hosts():
|
|
enabled = bool(host.get("enabled", False))
|
|
|
|
if not enabled and not self.config.include_disabled:
|
|
continue
|
|
|
|
source_id = str(host.get("id", "")) or None
|
|
|
|
for raw_domain in host.get("domain_names", []):
|
|
hostname, wildcard = normalize_hostname(
|
|
str(raw_domain),
|
|
allow_wildcard=True,
|
|
)
|
|
|
|
records.append(
|
|
DesiredRecord(
|
|
hostname=hostname,
|
|
ip=self.config.target_ip,
|
|
record_type="A",
|
|
wildcard=wildcard,
|
|
source=self.name,
|
|
source_id=source_id,
|
|
)
|
|
)
|
|
|
|
return records
|