PHP-PDNSManager

September 21, 2026 ยท View on GitHub

Release PHP Version PowerDNS License: MIT Quality Gates Zero CDN Multi-Server Database Donate PayPal

Enterprise-grade, security-hardened Web GUI, REST API Gateway, and GraphQL engine for PowerDNS Authoritative Server. Engineered with modern PHP 8.2+, strict PSR standards (PSR-7, PSR-11, PSR-14, PSR-15, PSR-17, PSR-18), zero external CDN dependencies, dual dark/light theming inspired by Visual Subnet Calculator, multi-server PowerDNS cluster routing with latency monitoring, RFC 1035 BIND zone import/export, DNS zone templates, and HMAC-SHA256 signed webhooks.

Designed, engineered, and maintained by HARRY DERTIN SUTISNA ALSYUNDAWY (@alsyundawy) โ€” Built for mission-critical authoritative DNS operations.

๐Ÿ“ฆ GitHub Releases ย |ย  ๐Ÿ“– Installation Guide ย |ย  ๐Ÿ› ๏ธ Production Deployment Tutorial ย |ย  ๐Ÿ›๏ธ Architecture & Notes ย |ย  ๐Ÿ“œ Full Changelog ย |ย  ๐Ÿ’– Support via PayPal ย |ย  ๐Ÿ‡ฎ๐Ÿ‡ฉ QRIS Donation



๐ŸŒŸ Overview

PHP-PDNSManager is a high-performance, web-based authoritative DNS control plane and automation gateway tailored for system administrators, network engineers, hosting providers, enterprise teams, and DevOps practitioners.

Managing PowerDNS Authoritative Server manually through command-line utilities (pdnsutil), raw SQL backend edits, or unstructured shell scripts is error-prone, risks syntax inconsistencies, and creates dangerous bottlenecks during production incident response. PHP-PDNSManager bridges this gap by providing an intuitive, accessible Web GUI, a comprehensive REST API V1, and a zero-dependency GraphQL endpoint, all while ensuring 100% compliance with RFC DNS standards and zero service interruption.

Whether running on Ubuntu LTS, Debian, Rocky Linux, or AlmaLinux, PHP-PDNSManager delivers sub-millisecond local configuration rendering, multi-server cluster failover, real-time node health telemetry, and complete decoupling from internet-dependent third-party CDNs.


๐Ÿš€ Why This Modernized Edition?

This edition (v1.0.1) represents a clean-slate architectural, security, accessibility, and visual overhaul of modern PowerDNS administration:

๐Ÿ›ก๏ธ 1. Zero-CDN Offline Architecture & Content Security

  • 100% Local Distribution: Ships with production bundles of Bootstrap 5.3.3, jQuery 3.7.1, Font Awesome 6.5.2 (with 8 binary webfonts), and Chart.js 4.4.4 UMD located in public/assets/vendor/.
  • Air-Gapped & Sovereign Network Ready: Runs reliably in isolated data center enclaves, air-gapped server racks, and restricted private intranets without external CDN latency, outages, or tracking.
  • Strict Content Security Policy (CSP): HTTP security headers enforce default-src 'self' and style-src 'self' 'unsafe-inline' with zero external origins permitted.

โšก 2. Strict Authoritative DNS Invariant (No Cache-Poisoning Vectors)

  • Dedicated Primary & Secondary Authority: Explicitly engineered for Authoritative Forward and Reverse DNS zones.
  • Elimination of Recursive Bloat: Recursive caching and Response Policy Zones (RPZ) are deliberately excluded. Keeping the Authoritative nameserver completely separated from recursive resolvers eliminates DNS cache-poisoning vectors, recursive query amplification hazards, and memory leaks.

๐Ÿ–ฅ๏ธ 3. Multi-PowerDNS Cluster Management & Health Telemetry

  • Multi-Node Cluster Engine (pdns_servers): Manage multiple PowerDNS authoritative nodes from a single pane of glass, complete with dynamic server switching, active status toggling, and default cluster failover.
  • Real-Time Health & Latency Telemetry (/health): Comprehensive telemetry inspecting PowerDNS daemon API latency, database connectivity, storage directory permissions, and PHP runtime health status with dedicated JSON endpoints.

๐ŸŽจ 4. Visual Subnet Calculator Theming & Mobile Anti-Clipping Engine

  • Curated Slate Palette: Inspired by the modern dark/light design system of Visual Subnet Calculator, featuring deep slate tones (#0f172a to #1e293b), glassmorphism overlays (rgba(15, 23, 42, 0.75)), and electric cyan/blue accents.
  • Dual Theme Synchronization: Instant reactivity syncing both data-theme and data-bs-theme attributes across dark, light, and automatic OS preferences with persistent localStorage retention.
  • Mobile Viewport Hardening: Engineered for compact viewports and dynamic mobile browser chrome (Xiaomi HyperOS, MIUI, POCO, Redmi, iPhone dynamic island) using CSS 100svh/100dvh, safe-area-inset padding, and min-width: 0 flex/grid constraints to eliminate clipping and horizontal scrolling.

๐Ÿ”’ 5. Enterprise Security & Defense-in-Depth

  • Two-Factor Authentication (2FA): RFC 6238 TOTP engine with secure QR provisioning and backup recovery codes.
  • Cryptographic Webhook Dispatcher: Real-time HTTP webhook notifications on zone and record mutations signed with HMAC-SHA256 (X-PDNS-Signature) for automated external orchestration.
  • Granular RBAC & Multi-Tenant Partitioning: Role-Based Access Control (admin, operator, viewer) combined with multi-tenant organization boundaries to isolate zones between enterprise clients.
  • Brute-Force Rate Limiting: IP-based rate limiting on login and API endpoints with automatic cooldowns.
  • SonarLint & PSR-12 Compliant: Clean static analysis, camelCase model properties, zero unreachable code, and tamper-evident audit logging.

๐Ÿ”„ 6. RFC 1035 BIND Zone Import/Export & Templating

  • RFC 1035 BIND Zone Parser: Pure PHP BIND zone file parser and serializer supporting $ORIGIN, $TTL, comments, and multi-line records for zero-downtime migration from legacy BIND9 deployments.
  • Zone Templating Engine: Reusable DNS blueprints (e.g., Enterprise Web Hosting, Google Workspace, Custom Mail) enabling one-click zone creation with complete record sets.
  • Cross-Zone Bulk Record Operations: Powerful search across all authoritative zones with bulk IP replacement and mass deletion capabilities.

๐ŸŽฏ Key Features

Capability AreaHighlights & Implementations
Multi-Server ClusteringManage multiple PowerDNS nodes (pdns_servers), cluster failover, connection latency testing, and dedicated REST routes (/servers).
Zone ManagementNative, Master, and Slave zones; auto-increment SOA serial (YYYYMMDDNN); instant search, filtering, and RFC 1035 BIND import/export.
Authoritative RecordsFull CRUD for A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR, NAPTR, and SOA with real-time FQDN syntax validation.
DNSSEC AutomationCryptographic key management (KSK / ZSK generation), automatic zone signing, key rollover, and DS record generation for parent delegation.
Zone Templating EnginePreconfigured DNS profiles for instant 1-click zone provisioning and record deployment (/templates).
Bulk Record OperationsCross-zone search and replace for batch IP/target migrations and mass record deletion (/zones/bulk-records).
Identity & RBACRole-Based Access Control (admin, operator, viewer), Multi-Tenant Organizations, TOTP Two-Factor Authentication, and scoped API tokens.
REST API GatewayVersioned REST API (/api/v1) with JSON-Schema validation and Bearer token authentication for Terraform, Ansible, and CI/CD pipelines.
GraphQL EndpointZero-dependency GraphQL execution engine (/graphql) supporting flexible queries (zones, servers, health) and mutations.
Signed WebhooksHMAC-SHA256 payload signing with X-PDNS-Signature headers for event-driven integration upon zone and record modifications.
Audit Logging & TrailGranular audit logs tracking user ID, IP address, exact action, target zone, HTTP status, and timestamp with CSV/JSON export (/audit-logs).
System TelemetryHealth telemetry dashboard (/health) monitoring PowerDNS latency, database connectivity, storage permissions, and PHP runtime metrics.
Offline UI & ThemingVisual Subnet Calculator dark/light palette, 100% offline local vendor assets, glassmorphism navigation, and mobile anti-clipping viewport engine.

๐Ÿ—๏ธ Architecture & Request Pipeline

PHP-PDNSManager is built on a clean, decoupled MVC architecture with PSR-15 middleware and a Service-Repository pattern:

flowchart TB
    subgraph Client["Web Browser & Automation Clients"]
        User["Sysadmin / Web Browser"]
        APIClient["Terraform / Ansible / CI-CD / cURL"]
    end

    subgraph WebServer["Web Server (Nginx / Apache)"]
        Nginx["TLS Termination / Reverse Proxy<br/>(HSTS, CSP, Security Headers)"]
        Static["Local Static Assets (Zero CDN)<br/>(Bootstrap 5.3.3, jQuery 3.7.1, FontAwesome 6.5.2, Chart.js)"]
    end

    subgraph AppKernel["PHP-PDNSManager Runtime (PHP 8.2+)"]
        FrontController["public/index.php"]
        Middleware["PSR-15 Middleware Pipeline<br/>(Auth, CSRF, Rate Limiting, Security Headers)"]
        Router["Application Router<br/>(Web, API v1, GraphQL)"]
        Controllers["Controllers Layer<br/>(Zone, Record, Server, Template, Health, API)"]
        Services["Domain Service Layer<br/>(PowerDNSClient, BindZoneService, DNSSEC, WebhookService)"]
        Repositories["Repository Layer<br/>(ZoneRepo, ServerRepo, UserRepo, AuditRepo)"]
    end

    subgraph Persistence["Persistence & DNS Infrastructure"]
        Database[("Relational Database<br/>(MySQL 8.0+ / MariaDB 10.5+ / SQLite)")]
        PDNSDaemon["PowerDNS Authoritative Server<br/>(pdns_server daemon, gmysql backend)"]
        PDNSAPI["PowerDNS Internal REST API<br/>(http://127.0.0.1:8081)"]
    end

    User -->|"HTTPS"| Nginx
    APIClient -->|"HTTPS Bearer API / GraphQL"| Nginx
    Nginx -->|"Static Files"| Static
    Nginx -->|"FastCGI (PHP-FPM)"| FrontController
    FrontController --> Middleware
    Middleware --> Router
    Router --> Controllers
    Controllers --> Services
    Services --> Repositories
    Repositories --> Database
    Services -->|"Internal REST API (JSON)"| PDNSAPI
    PDNSAPI --> PDNSDaemon
    PDNSDaemon -->|"Direct DB Queries"| Database

๐Ÿ“Š DNS Record Types & Authoritative Engine

PHP-PDNSManager validates, formats, and provisions all standard DNS Resource Records:

Record TypeDescriptionRFC StandardSyntax Validation & RDATA Schema
AIPv4 Host AddressRFC 1035Dotted-decimal 0.0.0.0 โ€“ 255.255.255.255
AAAAIPv6 Host AddressRFC 3596Standard compressed or uncompressed RFC 4291 IPv6
CNAMECanonical Name (Alias)RFC 1035Fully Qualified Domain Name (FQDN)
MXMail Exchange ServerRFC 1035, RFC 7505Priority integer (0โ€“65535) + mail exchanger FQDN
NSAuthoritative Name ServerRFC 1035Authoritative nameserver FQDN
TXTText Annotations (SPF, DKIM, DMARC)RFC 1464, RFC 7208Character-string (supports multi-string chunks & quotation)
PTRPointer Record (Reverse DNS)RFC 1035Target host FQDN in in-addr.arpa or ip6.arpa
SRVService Location RecordRFC 2782Priority, weight, port (1โ€“65535), target hostname
CAACertification Authority AuthorizationRFC 6844, RFC 8659Flag byte, tag (issue, issuewild, iodef), CA domain
NAPTRNaming Authority PointerRFC 2915, RFC 3403Order, preference, flags, service, regexp, replacement
SOAStart of AuthorityRFC 1035, RFC 2181Primary NS, contact email, serial, refresh, retry, expire, TTL
DNSSECDS & DNSKEY RecordsRFC 4034, RFC 4035Key tag, algorithm, digest type, cryptographic digest

๐ŸŽจ Visual Subnet Calculator Design & Mobile Responsive System

The user interface has been designed following the aesthetic of Visual Subnet Calculator:

  • Curated Slate Dark/Light Palette: Deep obsidian slate background (#0f172a to #1e293b), crisp borders (#334155), and electric cyan/blue accents (#0284c7 to #38bdf8 with glow effects).
  • Glassmorphism Navigation Header: Semi-transparent sticky navigation bar with backdrop-filter: blur(12px) and subtle border illumination.
  • Notch, Cutout & Safe Area Insets: Integrated with viewport-fit=cover and CSS safe-area padding (padding-top: env(safe-area-inset-top, 0px); padding-bottom: env(safe-area-inset-bottom, 0px);).
  • Dynamic Viewport Height: Replaces rigid 100vh with adaptive 100dvh and 100svh to prevent UI controls from being clipped beneath mobile browser dynamic navigation bars.
  • Anti-Clipping & Touch Scrolling: Table containers implement -webkit-overflow-scrolling: touch with rounded boundary wrappers, ensuring wide TXT records, DKIM public keys, and DNSSEC signatures are easily inspectable.

๐ŸŒ Cross-OS Production Deployment & Clustering

PHP-PDNSManager is verified across enterprise Linux operating systems. When deploying PowerDNS Authoritative Server, the package names and service configurations vary slightly:

Distribution Paths & Configuration Mapping

Component / SettingUbuntu 20.04 / 22.04 / 24.04 & Debian 11 / 12Rocky Linux 8 / 9 & AlmaLinux 8 / 9
PowerDNS Packagespdns-server, pdns-backend-mysqlpdns, pdns-backend-mysql (via EPEL)
Systemd Servicepdns.servicepdns.service
Main Config File/etc/powerdns/pdns.conf/etc/pdns/pdns.conf
Schema Definition/usr/share/doc/pdns-backend-mysql/schema.sql/usr/share/doc/pdns-backend-mysql/schema.sql
PHP Runtimephp8.2-fpm, php8.3-fpm, php8.4-fpmphp-fpm (Remi repository)
Web Servernginxnginx
Firewall Systemufw (Uncomplicated Firewall)firewalld or nftables / iptables

Hardened PowerDNS Authoritative Configuration (pdns.conf)

# /etc/powerdns/pdns.conf (Strictly Authoritative Only)
launch=gmysql

# MySQL / MariaDB Backend Credentials
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-user=pdns_user
gmysql-password=StrongAuthoritativePasswordHere
gmysql-dbname=pdns_db
gmysql-dnssec=yes

# Network & Listening
local-address=0.0.0.0, ::
local-port=53

# Security & Reconnaissance Prevention
version-string=anonymous
security-poll-suffix=

# Internal REST API (Bound to loopback only)
api=yes
api-key=YourSecureGeneratedPdnsApiKeyHere
webserver=yes
webserver-address=127.0.0.1
webserver-port=8081
webserver-allow-from=127.0.0.1, ::1

# Master / Slave DNS Clustering
master=yes
slave=yes

Production Firewall Configuration

Ubuntu / Debian (UFW)

# Allow SSH & Web Management GUI traffic
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Allow Authoritative DNS traffic (Both UDP & TCP are mandatory)
sudo ufw allow 53/tcp
sudo ufw allow 53/udp

# Enable firewall
sudo ufw enable

Rocky Linux / AlmaLinux (Firewalld)

# Open Web and DNS services
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload

๐Ÿ“ฆ Installation & Setup Guide

1. Prerequisites

Ensure your system meets the requirements:

  • PHP: 8.2, 8.3, 8.4, or 8.5 with extensions: pdo, pdo_mysql (or pdo_sqlite), mbstring, json, openssl, curl, sodium.
  • Database: MySQL 8.0+, MariaDB 10.5+, or SQLite 3 (WAL mode).
  • PowerDNS Authoritative Server: >= 4.x with REST API enabled.
  • Web Server: Nginx (recommended) or Apache with PHP-FPM.
  • Composer: >= 2.2.

2. Clone & Install Dependencies

# 1. Clone repository
git clone https://github.com/alsyundawy/PHP-PDNSManager.git /var/www/php-pdnsmanager
cd /var/www/php-pdnsmanager

# 2. Copy production environment configuration
cp .env.example .env

# 3. Install composer dependencies (optimized autoloader)
composer install --no-dev --optimize-autoloader

3. Initialize Database & Seed Administrator

# Run database migrations (creates schema, servers, templates, organizations)
php bin/migrate.php

# Seed initial roles and default administrator account
php bin/seed.php

Default Admin Credentials:

  • Username: admin
  • Password: ChangeMe@2026!
  • (Important: You will be prompted to change this password immediately upon first login).

4. File Permissions

# Ensure web server user can write to runtime directories
sudo chown -R www-data:www-data /var/www/php-pdnsmanager/storage
sudo chmod -R 775 /var/www/php-pdnsmanager/storage

5. Nginx Production Configuration

server {
    listen 80;
    listen [::]:80;
    server_name pdns.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name pdns.example.com;

    ssl_certificate /etc/ssl/certs/pdns.example.com.crt;
    ssl_certificate_key /etc/ssl/private/pdns.example.com.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/php-pdnsmanager/public;
    index index.php;

    # Security Headers
    add_header X-Frame-Options "DENY" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
    add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' data:;" always;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_hide_header X-Powered-By;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

โš™๏ธ Configuration Reference

Key configuration settings available in your .env file:

Setting KeyDefault ValueDescription
APP_NAME"PHP-PDNSManager"Application title displayed across headers and metadata.
APP_ENV"production"Environment profile (production, local, testing).
APP_DEBUGfalseEnable detailed error traces (Must be false in production).
APP_URL"https://pdns.example.com"Canonical base URL of the control plane.
DB_CONNECTION"mysql"Database engine (mysql, sqlite).
DB_HOST"127.0.0.1"Database hostname or IP address.
DB_PORT3306Database port.
DB_DATABASE"pdns_manager"Database name for application state and metadata.
DB_USERNAME"pdns_user"Database username.
DB_PASSWORD"secret"Database password.
PDNS_API_URL"http://127.0.0.1:8081"PowerDNS daemon internal REST API URL.
PDNS_API_KEY""PowerDNS daemon api-key secret configured in pdns.conf.
PDNS_SERVER_ID"localhost"PowerDNS server identifier (localhost).
SESSION_SECUREtrueEnforces HTTPS-only session cookies.
SESSION_LIFETIME7200Idle session expiration in seconds (2 hours).
SESSION_SAMESITE"Strict"Cross-site cookie isolation policy (Strict, Lax).
SECURITY_RATE_LIMIT_LOGIN5Maximum failed login attempts before temporary IP lock.

๐ŸŒ REST & GraphQL API Automation Layer

PHP-PDNSManager provides both a versioned REST API V1 and a zero-dependency GraphQL endpoint for automation:

REST API Authentication

All REST API requests require a Bearer token in the HTTP Authorization header:

Authorization: Bearer pdns_sec_your_generated_api_token_here

Core REST Endpoints

MethodEndpointRequired ScopeDescription
GET/api/v1/zoneszones:readList all managed authoritative DNS zones.
POST/api/v1/zoneszones:writeCreate a new Native, Master, or Slave DNS zone.
GET/api/v1/zones/{id}/recordsrecords:readFetch all resource records for a given zone.
POST/api/v1/zones/{id}/recordsrecords:writeAdd or update a resource record.
DELETE/api/v1/zones/{id}/records/{rId}records:writeDelete a resource record.
GET/api/v1/serversservers:readList configured PowerDNS server nodes.
POST/api/v1/servers/{id}/testservers:readTest connection and measure node latency.
GET/api/v1/templatestemplates:readList reusable DNS zone blueprints.
GET/healthNone / PublicSystem and PowerDNS daemon health telemetry.

Example REST cURL Request

curl -X POST https://pdns.example.com/api/v1/zones/example.com/records \
  -H "Authorization: Bearer pdns_sec_8f92b41c0e" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "api.example.com.",
    "type": "A",
    "content": "192.0.2.53",
    "ttl": 3600
  }'

Zero-Dependency GraphQL Endpoint (/graphql)

query GetSystemOverview {
    health {
        status
        database
        pdnsLatencyMs
    }
    zones {
        id
        name
        kind
        serial
    }
    servers {
        id
        name
        apiUrl
        isActive
        isDefault
    }
}

๐Ÿ“Š Quality Assurance & Verification Gates

Every commit of PHP-PDNSManager is validated against comprehensive automated quality gates:

Quality GateVerification EngineTarget / StandardPass CriteriaStatus
Unit & Service TestsPHPUnit 10.5Core models, services, repositories100% assertions passโœ” 21/21 PASS
Static AnalysisPHPStanStrict Level 5 analysis0 errorsโœ” LEVEL 5 CLEAN
Type InferencePsalmLevel 4 strict type safety0 errorsโœ” CLEAN
Coding StandardsPHP_CodeSnifferPSR-12 strict compliance0 errors, 0 warningsโœ” PSR-12 PASS
Code FormattingPHP-CS-FixerStrict rule set0 fixable files remainingโœ” CLEAN
Security ScanningGitHub Code Scanning & SonarLintOWASP Top 10, CWE checks0 security vulnerabilitiesโœ” 0 ISSUES

๐Ÿ“‹ Engineering Standards & Invariants

To ensure long-term maintainability, high performance, and security, the following invariants are enforced:

  • Strict Typing Mandatory: Every PHP source file declares declare(strict_types=1); at line 3.
  • Strict Line Length Bound: All controllers, services, repositories, HTML/PHP view templates, and unit tests strictly adhere to โ‰ค120\le 120 characters per line.
  • Zero Third-Party CDN Dependency: No runtime asset requests may query external hosts. All vendor CSS, JS, and fonts must reside locally in public/assets/vendor/.
  • Prepared Statements Exclusive: Raw SQL query concatenations are strictly forbidden. All database operations must utilize PDO prepared statements with explicit parameter binding.
  • Fail-Safe Session Cookies: Session cookies must always have secure: true, httponly: true, and SameSite: Strict configured.

๐Ÿ”’ Security & Content Safety

  • OWASP Top 10 Hardened: Validated against SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), Insecure Direct Object References (IDOR), and Broken Access Control.
  • Argon2id & Sodium Password Hashes: Passwords are saved using secure Argon2id/Ed25519 hashing with hardened memory and time cost factors.
  • Signed Webhook Dispatch: All outbound webhook payloads are cryptographically signed with HMAC-SHA256.
  • Tamper-Evident Audit Trails: Every administrative mutation (zone edits, record creation, server changes, role updates) is persisted in the audit_logs table with IP addresses, user IDs, and timestamps.

๐Ÿ“‚ Project Directory Structure

PHP-PDNSManager/
โ”œโ”€โ”€ app/                        # Application Source Code
โ”‚   โ”œโ”€โ”€ Controllers/            # Web GUI & REST/GraphQL API Controllers
โ”‚   โ”‚   โ”œโ”€โ”€ Api/                # REST API V1 Controllers (Zones, Records, Servers)
โ”‚   โ”‚   โ”œโ”€โ”€ Auth/               # Authentication, 2FA & Session Controllers
โ”‚   โ”‚   โ”œโ”€โ”€ HealthController.php# Health Telemetry & Latency Monitoring
โ”‚   โ”‚   โ”œโ”€โ”€ ServerController.php# Multi-Server Cluster Management
โ”‚   โ”‚   โ”œโ”€โ”€ TemplateController.php# DNS Zone Templating Controller
โ”‚   โ”‚   โ””โ”€โ”€ ZoneController.php  # Zone CRUD, BIND Import/Export, Bulk Records
โ”‚   โ”œโ”€โ”€ Core/                   # Middleware Pipeline, Request/Response, Helpers
โ”‚   โ”œโ”€โ”€ Middleware/             # Security Middleware (Auth, CSRF, Rate Limit)
โ”‚   โ”œโ”€โ”€ Models/                 # Domain Entity Models (Zone, PdnsServer, User)
โ”‚   โ”œโ”€โ”€ Repositories/           # PDO Database Repositories
โ”‚   โ””โ”€โ”€ Services/               # Domain Business Logic Layer
โ”‚       โ”œโ”€โ”€ Auth/               # Authentication & TOTP 2FA Services
โ”‚       โ”œโ”€โ”€ DNS/                # BIND Zone Import/Export & Templating
โ”‚       โ””โ”€โ”€ PowerDNS/           # PowerDNS REST API Client & Cluster Services
โ”œโ”€โ”€ bin/                        # CLI Commands (migrate.php, seed.php)
โ”œโ”€โ”€ config/                     # Modular Application Configurations
โ”‚   โ”œโ”€โ”€ app.php                 # Core Application Settings
โ”‚   โ”œโ”€โ”€ database.php            # MySQL / MariaDB / SQLite Connection Settings
โ”‚   โ””โ”€โ”€ powerdns.php            # PowerDNS Daemon API Settings
โ”œโ”€โ”€ database/                   # Schema Migrations & Seeders
โ”œโ”€โ”€ docs/                       # Comprehensive Architecture Guides & OpenAPI Spec
โ”œโ”€โ”€ public/                     # Web Document Root
โ”‚   โ”œโ”€โ”€ index.php               # Front Controller
โ”‚   โ””โ”€โ”€ assets/                 # Local Assets (Strict Zero CDN)
โ”‚       โ”œโ”€โ”€ css/app.css         # Visual Subnet Calculator Slate Theme
โ”‚       โ”œโ”€โ”€ js/app.js           # UI & Theme Controller JavaScript
โ”‚       โ””โ”€โ”€ vendor/             # Local Vendor Distributions
โ”‚           โ”œโ”€โ”€ bootstrap/      # Bootstrap 5.3.3 (CSS & JS Bundle)
โ”‚           โ”œโ”€โ”€ chartjs/        # Chart.js 4.4.4 UMD Bundle
โ”‚           โ”œโ”€โ”€ fontawesome/    # Font Awesome 6.5.2 (Webfonts & CSS)
โ”‚           โ””โ”€โ”€ jquery/         # jQuery 3.7.1 Minified
โ”œโ”€โ”€ resources/                  # Server-Side View Templates
โ”‚   โ””โ”€โ”€ Views/                  # PHP HTML Views (Auth, Zones, Servers, Templates)
โ”œโ”€โ”€ routes/                     # Route Definitions (web.php, api.php)
โ”œโ”€โ”€ storage/                    # Runtime Storage (Logs, Cache)
โ”œโ”€โ”€ tests/                      # Automated PHPUnit Test Suite
โ”‚   โ”œโ”€โ”€ Feature/                # Feature & Integration Tests
โ”‚   โ””โ”€โ”€ Unit/                   # Unit Tests (Cluster, BIND, Webhooks)
โ”œโ”€โ”€ CHANGELOG.md                # Full Semantic Versioning Changelog
โ”œโ”€โ”€ DOCNOTE.md                  # Engineering Architecture Notes
โ”œโ”€โ”€ LICENSE                     # MIT Open Source License
โ”œโ”€โ”€ phpstan.neon                # PHPStan Static Analysis Configuration
โ”œโ”€โ”€ psalm.xml                   # Psalm Strict Configuration
โ”œโ”€โ”€ phpcs.xml                   # PHP_CodeSniffer PSR-12 Configuration
โ””โ”€โ”€ TUTORIAL.md                 # Complete PowerDNS Production Deployment Tutorial

๐Ÿค Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository and create your feature branch: git checkout -b feature/amazing-feature.
  2. Ensure all changes adhere strictly to PSR-12 and max 120-character line lengths.
  3. Verify that all quality gates pass: ./vendor/bin/phpunit --no-coverage, ./vendor/bin/phpstan analyse, and ./vendor/bin/phpcs.
  4. Commit your changes with conventional commit messages: git commit -m 'feat: add DNSSEC automated rollover'.
  5. Push to your branch and open a Pull Request.

๐Ÿ“ฌ Maintainer & Contact

For technical inquiries, enterprise deployments, security consultations, or collaboration:


๐Ÿ’– Support & Donation

If PHP-PDNSManager has saved you time, enhanced your DNS operations, or provided value in your enterprise infrastructure, consider supporting its continuous maintenance, security audits, and open-source development:

๐Ÿ’ณ International Support: PayPal

Donate with PayPal

๐Ÿ‡ฎ๐Ÿ‡ฉ Indonesian & Regional Support: QRIS (Quick Response Code Indonesian Standard)

Scan the QRIS barcode below using any Indonesian mobile banking app (BCA, Mandiri, BRI, BNI, BSI, CIMB Niaga, Permata) or e-wallet (GoPay, OVO, DANA, LinkAja, ShopeePay):

QRIS Donation Barcode - ALSYUNDAWY

Your support directly powers open-source DNS infrastructure tooling, security enhancements, and continuous community improvements.


๐Ÿ“„ License

PHP-PDNSManager is open-source software licensed under the MIT License ยฉ 2024โ€“2026 Harry DS Alsyundawy.

Feel free to use, modify, and distribute it for personal, commercial, and enterprise infrastructure deployments.