Skip to content

Instantly share code, notes, and snippets.

@samuelwilliams
Last active December 11, 2015 05:48
Show Gist options
  • Save samuelwilliams/4554368 to your computer and use it in GitHub Desktop.
Save samuelwilliams/4554368 to your computer and use it in GitHub Desktop.
Example for samuelwilliams/Badcow-DNS-Zone-Library
<?php
require_once __DIR__ . '/../DNS/vendor/autoload.php';
use Badcow\DNS\Zone,
Badcow\DNS\ZoneFile,
Badcow\DNS\ResourceRecord,
Badcow\DNS\Rdata\SoaRdata,
Badcow\DNS\Rdata\NsRdata,
Badcow\DNS\Rdata\ARdata,
Badcow\DNS\Rdata\AaaaRdata,
Badcow\DNS\Validator;
$soa_rdata = new SoaRdata;
$soa_rdata->setMname('example.com.');
$soa_rdata->setRname('postmaster.example.com.');
$soa_rdata->setSerial(date('Ymd01'));
$soa_rdata->setRefresh(3600);
$soa_rdata->setExpire(14400);
$soa_rdata->setRetry(604800);
$soa_rdata->setMinimum(3600);
$soa = new ResourceRecord;
$soa->setType('SOA');
$soa->setClass('IN');
$soa->setName('@');
//$soa->setTtl(14400);
$soa->setRdata($soa_rdata);
$ns1r = new NsRdata;
$ns1r->setNsdname('ns1.infinite.net.au.');
$ns2r = new NsRdata;
$ns2r->setNsdname('ns2.infinite.net.au.');
$ns1 = new ResourceRecord;
$ns1->setType('NS')
->setClass('IN')
->setName('@')
//->setTtl(14400)
->setRdata($ns1r);
$ns2 = new ResourceRecord;
$ns2->setType('NS')
->setClass('IN')
->setName('@')
//->setTtl(14400)
->setRdata($ns2r);
$a_rdata = new ARdata;
$a_rdata->setAddress('192.168.1.0');
$a_record = new ResourceRecord;
$a_record->setType('A')
->setName('subdomain.au')
->setRdata($a_rdata)
->setComment("This is a local ip.");
$aa_rdata = new AaaaRdata;
$aa_rdata->setAddress('::1');
$aa_record = new ResourceRecord;
$aa_record->setType('AAAA')
->setName('ipv6domain')
->setRdata($aa_rdata)
->setComment("This is an IPv6 domain.");
$zone = new Zone;
$zone->setDefaultTtl('adf')
->setZoneName('example.com.')
->addResourceRecord($soa)
->addResourceRecord($ns1)
->addResourceRecord($ns2)
->addResourceRecord($a_record)
->addResourceRecord($aa_record);
$zoneFile = new ZoneFile($zone);
$zoneFile->saveToFile(__DIR__);
exec('named-checkzone example.com example.com', $output, $exit_status);
header('Content-type: text/plain');
echo $zoneFile->render();
echo "\n\n\n";
echo (\Badcow\DNS\Validator::validateZone($zone->getZoneName(), __DIR__ . '/example.com')) ?
'This is a valid record' : 'This is an invalid record';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment