PHP code example of golding / dns-zone-configurator

1. Go to this page and download the library: Download golding/dns-zone-configurator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

golding / dns-zone-configurator example snippets



    use Golding\dns\configurator\Zone;
    
    file_get_contents(__DIR__."/dns/zones/zone.conf");
    
    // make zone object from plain content
    $zone = Zone::fromString("voksiv.ru.", $content);
    
    // iterate via nodes of zone, where Node is group of resource records with same name
    foreach ($zone->iterateNodes() as $node) {
        $node->getName();
        $node->getZone();
    }
    
    // or get concrete node
    if($zone->isNodeExist("node.name")) {
        $node = $zone->getNode("node.name");
        $node->getName();
        $node->getZone();
    }
    
    // also you can iterate via resource records in zone
    foreach ($zone->iterateRecords() as $record) {
        $record->getType();
        $record->getTtl();
        $record->getNode();
    }
    // or iterate in node
    if($zone->isNodeExist("node.name")) {
        $node = $zone->getNode("node.name");
        foreach ($node->iterateRecords() as $record) {
            $record->getType();
            $record->getTtl();
            $record->getNode();
        }
    }
    // or iterate only concrete records in zone or node
    foreach ($zone->iterateA() as $record) {
        $record->getAddress();
        $record->getType();
        $record->getTtl();
        $record->getNode();
    }
    
    // all records can be modified
    foreach ($zone->iterateNs() as $record) {
        $record->setNsdName("new.nsd.name.");
    }
    
    // or they can be deleted
    foreach ($zone->iterateMx() as $record) {
        $record->remove();
    }
    
    // zone can be validate
    if(! $zone->validate()) {
        // and if any errors, you can see them as array
        $zone->getErrorsStore()->toArray();
        // or can iterate via all, and remove invalid records for example
        foreach ($zone->getErrorsStore()->iterate() as $error) {
            if($error->isHasRecord()) {
                $error->getRecord()->remove();
            }
        }
    }
    
    // You can print zone as string, to put in in real zone file
    $content = (string) $zone;
    file_put_contents(__DIR__."/dns/zones/zone.conf", $content);
    
    // Or you can store it in array format
    $array_content = $zone->toArray();
    
    // and make zone again from array format
    Zone::fromArray("voksiv.ru.", $array_content);
    
    // also you can make zone programmatically
    $zone = new Zone("voksiv.ru.");
    $node = $zone->getNode("@");
    $node->getRecordAppender()->appendARecord("127.0.0.1");
    $node->getRecordAppender()->appendNsRecord("google.com.");
shell
$ php phpunit.phar --coverage-html coverage