nextdeveloper / dns
NextDeveloper DNS Package
v1.0.0
2026-07-11 00:05 UTC
Requires
- php: >=8.2.0
- basis-company/nats: *
- league/fractal: *
- monolog/monolog: *
Requires (Dev)
- guzzlehttp/guzzle: *
- illuminate/database: >=8.0
- illuminate/support: >=8.0
- illuminate/validation: >=8.0
This package is auto-updated.
Last update: 2026-07-16 11:13:29 UTC
README
DNS module for the PlusClouds cloud platform - unified zone/record management across two backends:
- PowerDNS (self-hosted) - managed through pdns-agent, a NATS-connected
Go agent forked from
vm.agent, talking to PowerDNS's own local REST API. - CloudFlare (enterprise) - customers connect their own CloudFlare API token; this module calls CloudFlare's REST API v4 directly, no agent involved.
Both sit behind one DnsProviderInterface contract, resolved per-zone by
DnsProviderManager based on DnsZones.provider - mirrors the interface +
driver + dispatcher pattern in NextDeveloper\IAAS\Services\HypervisorsV2.
Resources
DnsServers- individual PowerDNS instances (primary/secondary), identified by their pdns-agent'sagent_uuid.DnsProviderCredentials- a customer's own CloudFlare API token, encrypted at rest, never exposed back through the API.DnsZones- a DNS zone, backed by either aDnsServersrow or aDnsProviderCredentialsrow depending onprovider.DnsRecords- A/AAAA/CNAME/MX/TXT/SRV/NS/CAA records within a zone.
Command dispatch
PowerDNS operations go through the platform's existing generic agent-command
layer (NextDeveloper\Events\Services\AgentCommandsService::dispatch('dns', ...)
- the same mechanism vm.agent already uses, just with
agent_type = 'dns'), publishing toagent.dns.{server_uuid}.cmdover NATS. Results come back onagent.dns.{server_uuid}.evtand are picked up byphp artisan dns:pdns-agent-listen, which flipsDnsZones/DnsRecordsstatus fromprovisioningtoactive/failed.
CloudFlare operations are synchronous HTTP calls - no agent, no NATS.