A PHP client to communicate with the PowerDNS API.
Via Composer
$ composer require exonet/powerdns-php
Basic example how to create a new DNS zone and insert a few DNS records.
use Exonet\Powerdns\Powerdns;
use Exonet\Powerdns\RecordType;
use Exonet\Powerdns\Resources\ResourceRecord;
use Exonet\Powerdns\Resources\Record;
// Initialize the Powerdns client.
$powerdns = new Powerdns('127.0.0.1', 'powerdns_secret_string');
// Create a new zone.
$zone = $powerdns->createZone(
'example.com',
['ns1.example.com.', 'ns2.example.com.']
);
// Add two DNS records to the zone.
$zone->create([
['type' => RecordType::A, 'content' => '127.0.0.1', 'ttl' => 60, 'name' => '@'],
['type' => RecordType::A, 'content' => '127.0.0.1', 'ttl' => 60, 'name' => 'www'],
]);
// OR use the Object-based way
$zone->create([
(new ResourceRecord())->setType(RecordType::A)->setRecord('127.0.0.1')->setName('@')->setTtl(60),
(new ResourceRecord())->setType(RecordType::A)->setRecord((new Record())->setContent('127.0.0.1'))->setName('@')->setTtl(60),
]);
See the examples directory for more.
Please see releases for more information on what has changed recently.
Testing against multiple PHP / PowerDNS versions can be done by using the provided docker-compose.yml
and the
run-tests.sh
shell script:
$ docker-compose up -d
$ ./run-tests.sh
After running docker-compose up -d
wait a few seconds so PowerDNS can be initialized. You can leave the containers
running and call the test script multiple times.
To test against a specific PHP / PowerDNS combination, you can provide the PHP version as first and the PowerDNS version as second parameter:
$ ./run-tests.sh 7.4 4.3
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you discover any security related issues, please email development@exonet.nl instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.