kipchak / driver-cloudns
A ClouDNS driver for the Kipchak API Development Kit (ADK)
1.35
2026-11-02 16:21 UTC
Requires
- kipchak/core: ^2 || ^3
- kipchak/driver-config: ^1
- kipchak/driver-http: ^1 || ^2
Requires (Dev)
- phpunit/phpunit: ^12
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
A fully typed ClouDNS DNS driver for the Kipchak API Development Kit. Manage DNS zones and records using the ClouDNS API directly — no SDK dependency required.
Requirements
- PHP 8.4+
- Kipchak ^2
kipchak/driver-config^1kipchak/driver-http^1
Installation
composer require kipchak/driver-cloudns
Initialise
Add to your drivers/drivers.php:
\Kipchak\Driver\ClouDns\ClouDns::initialise($container);
Configuration
Create config/kipchak.cloudns.php:
<?php use function Kipchak\Core\env; return [ 'connections' => [ 'default' => [ 'auth_id' => env('CLOUDNS_AUTH_ID', ''), 'auth_password' => env('CLOUDNS_AUTH_PASSWORD', ''), ], ], ];
Supply exactly one identity key per connection: auth_id, sub_auth_id, or sub_auth_user.
auth_password is always required.
Usage
use Kipchak\Driver\ClouDns\ClouDns; use Kipchak\Driver\ClouDns\Enum\DnsRecordType; use Kipchak\Driver\ClouDns\Request\AddDnsRecordRequest; use Kipchak\Driver\ClouDns\Request\ModifyDnsRecordRequest; $dns = ClouDns::get(); // 'default' connection // List zones $zones = $dns->listZones(); // List records $records = $dns->listRecords('example.com'); // Add an A record $dns->addRecord('example.com', new AddDnsRecordRequest( type: DnsRecordType::A, host: 'api', ttl: 3600, record: '192.0.2.1', )); // Modify a record $dns->modifyRecord('example.com', 123456, new ModifyDnsRecordRequest( host: 'api', ttl: 300, record: '192.0.2.2', )); // Delete a record $dns->deleteRecord('example.com', 123456);
GeoDNS
Add GeoDNS-targeted records using the geodnsLocation and geodnsCode parameters:
use Kipchak\Driver\ClouDns\Request\AddDnsRecordRequest; use Kipchak\Driver\ClouDns\Enum\DnsRecordType; // Add a GeoDNS A record targeting European visitors $dns->addRecord('example.com', new AddDnsRecordRequest( type: DnsRecordType::A, host: '@', ttl: 60, record: '198.51.100.10', geodnsLocation: 7, // ClouDNS location ID for Europe geodnsCode: 'EU', )); // Modify an existing GeoDNS record $dns->modifyRecord('example.com', 654321, new ModifyDnsRecordRequest( host: '@', ttl: 60, record: '198.51.100.20', geodnsLocation: 7, geodnsCode: 'EU', ));
GeoDNS requires a zone of type ZoneType::GeoDns. Location IDs and codes are available
from the ClouDNS control panel or the list-geodns-locations API endpoint.
Features
- Multiple named connections (main account, sub-accounts, sub-users)
- Zone management: list zones, get zone info, page count
- DNS record management: list, get, add, modify, delete
- Typed enums for record types (
DnsRecordType), zone types (ZoneType), and status (RecordStatus) - Typed request objects:
AddDnsRecordRequest,ModifyDnsRecordRequest,ListZonesRequest,ListDnsRecordsRequest - Typed result objects:
ZoneResult,DnsRecordResult - Full record-type support: A, AAAA, ALIAS, CAA, CERT, CNAME, DNSKEY, DS, HINFO, HTTPS, LOC, MX, NAPTR, NS, PTR, RP, SMIMEA, SPF, SRV, SSHFP, SVCB, TLSA, TXT, WR
- GeoDNS record support
Running Tests
composer install ./vendor/bin/phpunit
License
MIT — see LICENSE.