PHP-BindManager

September 20, 2026 ยท View on GitHub

Release PHP Version BIND 9 License: MIT Quality Gates Zero CDN Database Donate PayPal

Enterprise-grade, security-hardened Web GUI and automation engine for BIND9 Authoritative DNS servers. Engineered with modern PHP 8.4+, strict PSR standards, zero external CDN dependencies, dual dark/light theming inspired by Visual Subnet Calculator, SQLite3 WAL persistence, and full REST API automation.

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

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



๐ŸŒŸ Overview

PHP-BindManager is a high-performance, web-based authoritative DNS management suite tailored for system administrators, network engineers, hosting providers, and DevOps teams.

Managing BIND 9 zone files manually through terminal text editors is error-prone, risks syntax errors, and creates bottlenecks during incident response. PHP-BindManager bridges this gap by providing an intuitive, accessible Web GUI and automation API while ensuring full compliance with RFC standards and zero downtime.

Whether deployed on Debian, Ubuntu, Rocky Linux, or CentOS, PHP-BindManager delivers sub-millisecond local configuration rendering, atomic database operations via SQLite WAL mode, and complete decoupling from internet-dependent CDNs.


๐Ÿš€ Why This Modernized Edition?

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

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

  • 100% Local Distribution: Ships with production bundles of Bootstrap 3.5.8, jQuery 3.7.1, and Font Awesome 6.7.2 located in Public/assets/vendor/.
  • Air-Gapped & Offline Ready: Runs reliably in isolated server networks, air-gapped enclaves, and private intranets without third-party CDN latency, outages, or telemetry tracking.
  • Strict Content Security Policy (CSP): HTTP 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 configured for authoritative forward and reverse zones.
  • Elimination of Recursive Bloat: Recursive resolution and Response Policy Zones (RPZ) are deliberately omitted from authoritative nodes. This eliminates DNS cache poisoning, recursive query amplification, and memory bloat.

๐ŸŽจ 3. Visual Subnet Calculator Theming & Mobile Notch Optimization

  • Ergonomic Palette: Inspired by the dark/light design system of Visual Subnet Calculator.
  • Dual Synchronization: Instant reactivity syncing both data-theme and data-bs-theme attributes across dark, light, and auto system preferences.
  • Notch & Cutout Safe: Implements viewport-fit=cover, CSS env(safe-area-inset-*), and modern 100dvh viewport units to prevent cutoffs on smartphones (including Xiaomi, Redmi, Poco, iPhone, and Android tablets).

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

  • Brute-Force Rate Limiting: IP-based rate limiting on authentication and API endpoints with automatic cooldowns.
  • Secure Session Management: Strict HttpOnly, SameSite=Strict, and Secure cookie attributes verified by static security analyzers (SonarLint S3330 compliant).
  • Cryptographic CSRF Tokens: Double-submitted CSRF validation on all state-changing mutating requests (POST, PUT, DELETE).
  • Input Sanitization & Output Escaping: Automated contextual escaping helper e() protects all view templates against Cross-Site Scripting (XSS).

๐Ÿ—„๏ธ 5. Resilient Local Database (SQLite WAL Mode)

  • Atomic Transactions: Leverages SQLite 3 in Write-Ahead Logging (WAL) mode for concurrent readers and sequential zero-lock writers.
  • Single-File Portability: Eliminates MySQL/PostgreSQL network roundtrips and service dependencies. Database backup requires simply copying Storage/Database/bindmanager.sqlite.

๐ŸŽฏ Key Features

Capability AreaHighlights & Implementations
Zone ManagementForward zones, Reverse IPv4 (in-addr.arpa), Reverse IPv6 (ip6.arpa), zone imports, export to standard RFC master files, SOA serial auto-increment.
Record TypesNative validation and form schemas for A, AAAA, CNAME, MX, NS, TXT, SRV, PTR, CAA, SSHFP, TLSA, and SOA.
Access Control (RBAC)Role-Based Access Control distinguishing admin (full access), editor (zone/record management), and viewer (read-only audit).
REST API EngineVersioned REST API (/api/v1) secured via scoped Bearer tokens for Terraform, Ansible, and CI/CD automated zone provisioning.
System Health & BIND9Service status monitoring for named / bind9, memory consumption, load averages, zone validation using named-checkzone, and named-checkconf.
Audit Log & TrailTamper-evident activity logging recording user ID, IP address, exact action, target zone, and timestamp.
Responsive UISeamless layout transitions across monitors from 320px mobile displays up to 4K / 2K desktop workstations.

๐Ÿ—๏ธ Architecture & Request Pipeline

PHP-BindManager follows a clean, decoupled MVC and Service-Repository design pattern:

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

    subgraph WebServer["Web Server (Nginx / Apache)"]
        Nginx["TLS Termination / Reverse Proxy<br/>(HSTS, CSP, Security Headers)"]
        Static["Local Static Assets<br/>(Bootstrap, jQuery, FontAwesome, App CSS)"]
    end

    subgraph AppKernel["PHP-BindManager Runtime (PHP 8.4+)"]
        FrontController["Public/index.php"]
        Router["HTTP Router & Middleware Stack<br/>(Auth, CSRF, Security Headers, Rate Limiter)"]
        Controllers["Application Controllers<br/>(Dashboard, Zone, Record, System, API)"]
        Services["Domain Service Layer<br/>(ZoneService, BINDCommand, AuthService, TokenService)"]
        Repositories["Repository Layer<br/>(ZoneRepo, RecordRepo, UserRepo, LogRepo)"]
    end

    subgraph StorageEngine["Persistence & DNS Daemon"]
        SQLite[("SQLite 3 Database<br/>(WAL Mode, Foreign Keys, Indexes)")]
        Rndc["BIND 9 Daemon (named)<br/>(rndc reload, named-checkzone)"]
        ZoneFiles[("RFC Zone Files<br/>/var/named or /etc/bind/zones")]
    end

    User -->|"HTTPS"| Nginx
    APIClient -->|"HTTPS Bearer API"| Nginx
    Nginx -->|"Static Files"| Static
    Nginx -->|"FastCGI (PHP-FPM)"| FrontController
    FrontController --> Router
    Router --> Controllers
    Controllers --> Services
    Services --> Repositories
    Repositories --> SQLite
    Services -->|"IPC / Sudo CLI"| Rndc
    Rndc --> ZoneFiles

๐Ÿ“Š DNS Record Types & Authoritative Engine

PHP-BindManager validates and formats all standard DNS Resource Records:

Record TypeDescriptionRFC StandardSyntax Validation
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)
PTRPointer Record (Reverse DNS)RFC 1035Target host FQDN
SRVService Location RecordRFC 2782Priority, weight, port (1โ€“65535), target hostname
CAACertification Authority AuthorizationRFC 6844, RFC 8659Flag byte, tag (issue, issuewild, iodef), value
SSHFPSSH Public Key FingerprintRFC 4255, RFC 6594Algorithm, fingerprint type, hex string
TLSADANE Transport Layer Security AuthRFC 6698, RFC 7671Certificate usage, selector, matching type, cert hex
SOAStart of AuthorityRFC 1035, RFC 2181Primary NS, contact email, serial, refresh, retry, expire, TTL

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

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

  • Curated Dark/Light Palette: Deep obsidian dark background (#0b0f19 / #111827), subtle borders (#1f2937 / #334155), and vibrant primary accents (#3b82f6 with #60a5fa hover glow).
  • Glassmorphism Navigation Header: Semi-transparent sticky navigation header with backdrop-filter: blur(12px).
  • 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 to prevent content from being clipped beneath mobile browser address bars.
  • Touch-Friendly Overflow Scrolling: Horizontal table wrappers utilize -webkit-overflow-scrolling: touch with rounded boundary containers.

๐ŸŒ Cross-OS Production Deployment & Migration

PHP-BindManager is verified across enterprise Linux operating systems. When migrating between distributions, the primary variation lies in service naming and file locations:

Distribution Paths & Configuration Mapping

Component / SettingUbuntu 22.04 / 24.04 & Debian 11 / 12Rocky Linux 8 / 9 & CentOS 7 / Stream
Package Namebind9, bind9-utils, bind9-docbind, bind-utils
Systemd Servicebind9.service or named.servicenamed.service or named-chroot.service
Main Config File/etc/bind/named.conf/etc/named.conf
Local Options File/etc/bind/named.conf.optionsIncluded inside /etc/named.conf
Zone File Directory/etc/bind/zones/ or /var/lib/bind//var/named/ or /var/named/zones/
Service User / Groupbind:bindnamed:named
Firewall Systemufw (Uncomplicated Firewall)firewalld or nftables / iptables

Hardened Authoritative BIND Configuration (named.conf.options)

options {
    directory "/var/cache/bind";

    // Strictly Authoritative: disable recursion and caching
    recursion no;
    allow-query-cache { none; };
    allow-recursion { none; };

    // Listen on standard DNS ports
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };

    // Query access control
    allow-query { any; };

    // Hide version and identity from reconnaissance probes
    version "Not Disclosed";
    hostname none;
    server-id none;

    // Rate Limiting (DNS Amplification Defense)
    rate-limit {
        responses-per-second 15;
        window 5;
    };
};

Production Firewall Configuration

Ubuntu / Debian (UFW)

# Allow standard SSH and Web traffic
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Allow Authoritative DNS traffic
sudo ufw allow 53/tcp
sudo ufw allow 53/udp

# Enable firewall
sudo ufw enable

Rocky Linux / CentOS (Firewalld / Iptables)

# Using firewalld
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

# Or using raw iptables
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

๐Ÿ“ฆ Installation & Setup Guide

1. Prerequisites

Ensure your system meets the minimum requirements:

  • PHP: 8.4 or 8.5 with pdo_sqlite, sqlite3, mbstring, json, openssl, curl, intl.
  • Web Server: Nginx (recommended) or Apache with PHP-FPM.
  • DNS Server: BIND 9.18+.
  • Composer: 2.x+.

2. Clone & Install Dependencies

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

# 2. Copy production environment file
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 SQLite WAL tables)
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 immediately upon first login).

4. File Permissions

# Ensure web server user can read/write the Storage directory
sudo chown -R www-data:www-data /var/www/php-bindmanager/Storage
sudo chmod -R 775 /var/www/php-bindmanager/Storage

5. Nginx Production Configuration

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

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

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

    root /var/www/php-bindmanager/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'; 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.4-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 variables available in your .env configuration:

Setting KeyDefault ValueDescription
APP_NAME"PHP-BindManager"Application title displayed across headers and metadata.
APP_ENV"production"Environment profile (production, local, testing).
APP_DEBUGfalseEnable detailed stack traces (Must be false in production).
APP_URL"https://dns.example.com"Canonical URL of the control plane.
DB_CONNECTION"sqlite"Database engine (sqlite).
DB_DATABASE"Storage/Database/bindmanager.sqlite"Relative or absolute path to SQLite file.
SESSION_SECUREtrueEnforces HTTPS-only cookies (SonarLint S3330 compliant).
SESSION_LIFETIME7200Session idle 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.
BIND_CONFIG_PATH"/etc/bind/named.conf"Path to primary BIND configuration file.
BIND_ZONES_PATH"/etc/bind/zones"Directory where master zone files are written.
BIND_RNDC_PATH"/usr/sbin/rndc"Absolute path to rndc control utility.

๐ŸŒ REST API & Automation Layer

PHP-BindManager features a RESTful API for automated zone generation, record provisioning, and CI/CD integration:

Authentication

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

Authorization: Bearer pbm_your_generated_api_token_here

Core Endpoints

MethodEndpointRequired ScopeDescription
GET/api/v1/zoneszones:readList all configured authoritative DNS zones.
POST/api/v1/zoneszones:writeCreate a new forward or reverse DNS zone.
GET/api/v1/zones/{id}/recordsrecords:readFetch all records associated with a zone.
POST/api/v1/zones/{id}/recordsrecords:writeAdd a new resource record to the zone.
GET/api/v1/system/healthsystem:readInspect server load, memory, and named status.

Example cURL Request

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

๐Ÿ“Š Quality Assurance & Verification Gates

Every commit of PHP-BindManager passes rigorous automated quality gates:

Quality GateVerification EngineTarget / StandardPass CriteriaStatus
Unit & Service TestsPHPUnit 11.5Core models, services, repositories100% assertions passโœ” 9/9 PASS
Static AnalysisPHPStanStrict Level 8 analysis0 errorsโœ” LEVEL 8 CLEAN
Type InferencePsalmLevel 4 strict type safety0 errors, 96.27% inferenceโœ” CLEAN
Coding StandardsPHP_CodeSnifferPSR-12 strict compliance0 errors, 0 warningsโœ” PSR-12 PASS
Code FormattingPHP-CS-FixerStrict rule set0 fixable files remainingโœ” 81/81 CLEAN
Multi-Linter EngineTrunk CheckMarkdownLint, Prettier, TruffleHog0 security or syntax issuesโœ” 0 ISSUES

๐Ÿ“‹ Engineering Standards & Invariants

To guarantee long-term maintainability, reliability, and security, the following invariants are enforced:

  • Strict Typing Mandatory: Every PHP source file and view template 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 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 Password Hashes: Passwords are saved with password_hash($password, PASSWORD_ARGON2ID) using secure memory and time cost factors.
  • Subresource Integrity (SRI): All local vendor assets are checksum-verified against vendor distributions.
  • Audit Trails: Security actions (login attempts, zone modifications, privilege elevations) are persisted in the activity_logs table with IP addresses and user agents.

๐Ÿ“‚ Project Directory Structure

PHP-BindManager/
โ”œโ”€โ”€ App/                        # Application Source Code
โ”‚   โ”œโ”€โ”€ Application.php         # Application Bootstrap & Container Accessor
โ”‚   โ”œโ”€โ”€ Controllers/            # HTTP & API Endpoint Controllers
โ”‚   โ”‚   โ”œโ”€โ”€ Api/                # REST API Controllers (Zones, Health)
โ”‚   โ”‚   โ”œโ”€โ”€ Auth/               # Authentication & Session Controllers
โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard/          # Dashboard Overview Controller
โ”‚   โ”‚   โ”œโ”€โ”€ Dns/                # Zone & Record Controllers
โ”‚   โ”‚   โ””โ”€โ”€ System/             # System Operations & API Docs Controller
โ”‚   โ”œโ”€โ”€ Enums/                  # PHP 8.4 Enums (RecordType, UserRole)
โ”‚   โ”œโ”€โ”€ Exceptions/             # Domain & HTTP Exceptions
โ”‚   โ”œโ”€โ”€ Middlewares/            # HTTP Middleware Stack (Auth, CSRF, Headers)
โ”‚   โ”œโ”€โ”€ Models/                 # Domain Entity Models
โ”‚   โ”œโ”€โ”€ Repositories/           # PDO Database Repositories
โ”‚   โ”œโ”€โ”€ Services/               # Domain Business Logic Layer
โ”‚   โ””โ”€โ”€ Support/                # Config, Env, Request, Response Helpers
โ”œโ”€โ”€ Config/                     # Modular Application Configurations
โ”‚   โ”œโ”€โ”€ api.php                 # API & Rate Limit Config
โ”‚   โ”œโ”€โ”€ app.php                 # App Core Config
โ”‚   โ”œโ”€โ”€ bind9.php               # BIND9 Daemon & Path Settings
โ”‚   โ”œโ”€โ”€ database.php            # SQLite Database Connection Config
โ”‚   โ”œโ”€โ”€ logging.php             # System & Audit Logging Config
โ”‚   โ”œโ”€โ”€ rbac.php                # Role-Based Access Control Matrix
โ”‚   โ”œโ”€โ”€ security.php            # Security Headers, CSP & Rate Limits
โ”‚   โ””โ”€โ”€ session.php             # Session & Cookie Security Config
โ”œโ”€โ”€ Database/                   # Database Migrations & Seeds
โ”‚   โ”œโ”€โ”€ Migrations/             # Schema Migrations (WAL, Indexes)
โ”‚   โ””โ”€โ”€ Seeds/                  # Default Admin & Roles Seeder
โ”œโ”€โ”€ Docs/                       # Comprehensive Architecture Guides
โ”œโ”€โ”€ Public/                     # Web Root (Publicly Accessible)
โ”‚   โ”œโ”€โ”€ index.php               # Front Controller
โ”‚   โ””โ”€โ”€ assets/                 # Local Assets (Zero CDN)
โ”‚       โ”œโ”€โ”€ css/app.min.css     # Visual Subnet Calculator Theme CSS
โ”‚       โ”œโ”€โ”€ js/app.min.js       # Theme & UI Controller JS
โ”‚       โ””โ”€โ”€ vendor/             # Local Vendor Distributions
โ”‚           โ”œโ”€โ”€ bootstrap/      # Bootstrap 3.5.8 (CSS & JS Bundle)
โ”‚           โ”œโ”€โ”€ fontawesome/    # Font Awesome 6.7.2 (Webfonts & CSS)
โ”‚           โ””โ”€โ”€ jquery/         # jQuery 3.7.1 Minified
โ”œโ”€โ”€ Resources/                  # Server-Side View Templates
โ”‚   โ””โ”€โ”€ Views/                  # PHP HTML Views (Auth, Dashboard, Zones)
โ”‚       โ”œโ”€โ”€ auth/               # Login & Profile Views
โ”‚       โ”œโ”€โ”€ dashboard/          # Dashboard Overview
โ”‚       โ”œโ”€โ”€ errors/             # Error Pages (404, 500, CSRF)
โ”‚       โ”œโ”€โ”€ layouts/            # Base App Layout Template
โ”‚       โ”œโ”€โ”€ partials/           # Navbar, Sidebar, Modals
โ”‚       โ”œโ”€โ”€ records/            # DNS Records Index & Modal Forms
โ”‚       โ”œโ”€โ”€ system/             # System Status & API Docs
โ”‚       โ””โ”€โ”€ zones/              # Zones Index & Creation Forms
โ”œโ”€โ”€ Routes/                     # Route Definitions (web.php, dns.php, api.php)
โ”œโ”€โ”€ Storage/                    # Runtime Storage (Ignored by Git)
โ”‚   โ”œโ”€โ”€ Database/               # SQLite Database File Location
โ”‚   โ””โ”€โ”€ Logs/                   # Application & Audit Logs
โ”œโ”€โ”€ Tests/                      # Automated Unit & Integration Tests
โ”œโ”€โ”€ bin/                        # CLI Commands (migrate.php, seed.php)
โ”œโ”€โ”€ CHANGELOG.md                # Full Semantic Versioning Changelog
โ”œโ”€โ”€ DOCNOTE.md                  # Engineering Architecture Notes
โ”œโ”€โ”€ INSTALL.md                  # Comprehensive Multi-OS Installation Guide
โ”œโ”€โ”€ LICENSE                     # MIT Open Source License
โ”œโ”€โ”€ phpstan.neon                # PHPStan Level 8 Configuration
โ”œโ”€โ”€ psalm.xml                   # Psalm Strict Configuration
โ”œโ”€โ”€ phpcs.xml                   # PHP_CodeSniffer PSR-12 Configuration
โ””โ”€โ”€ TUTORIAL.md                 # Complete BIND9 Master/Slave 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, phpstan analyse, psalm, phpcs, php-cs-fixer, and trunk check --no-fix.
  4. Commit your changes with conventional commit messages: git commit -m 'feat: add DNSSEC rollover support'.
  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-BindManager 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-BindManager 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.