manie20 / dns
一组用于维护DNS区域文件PHP类表示的类和服务。
v1.0
2016-01-31 21:33 UTC
Requires
- php: >=5.3.3
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 18:42:09 UTC
README
此包包含用于映射DNS区域和DNS记录的模态和服务。它是 "manie20/rtr-dns-bundle" 的基础,后者提供了管理实时注册DNS区域的能力。
如何使用?
让我们通过编写对象来创建一个DNS区域,并输出一个可以用于DNS区域文件的字符串。
use Netcode\Dns\Modal\Zone; use Netcode\Dns\Modal\Domain; use Netcode\Dns\Modal\Email; use Netcode\Dns\Modal\Records\SOA; use Netcode\Dns\Modal\Records\A; use Netcode\Dns\Modal\Records\CNAME; use Netcode\Dns\Service\ZoneFileService;
首先,让我们创建一个新空区域。
$zone = new Zone();
SOA记录对于DNS区域是强制性的,并包含所有区域文件信息。
- 名称包含此区域的顶级域名。
- 电子邮件地址被转换为区域管理联系人。
- 域名服务器是该区域所在的服务器地址。使用 'ns' 表示本地域名服务器。
- 序列号是区域文件更改时的增量标识符。
$soaRecord = new SOA(); $soaRecord ->setName( new Domain('netcode.nl') ) ->setEmailAddress( new Email('a.krijgsman@netcode.nl') ) ->setNameServer( new Domain('ns') ) ->setSerialNumber( $soaRecord->getNewSerial() ); // Add the SOA Record to the newly created Zone. $zone->setSoaRecord($soaRecord);
现在让我们向区域添加一些DNS记录
$aRecord = new A(); $aRecord->setContent('127.0.0.1'); $zone->addRecord($aRecord); $aRecord = new A(); $aRecord ->setName('www') ->setContent('127.0.0.1') ->setTTL(300); $zone->addRecord($aRecord); $cnameRecord = new CNAME(); $cnameRecord ->setName('mail') ->setContent('www') ->setTTL(7200); $zone->addRecord($cnameRecord); // And add the MX record: $mxRecord = new MX(); $mxRecord ->setContent('mail') ->setPriority('10') ->setTTL(7200); $zone->addRecord($mxRecord);
要测试您的完整区域,您可以使用ZoneFileService输出区域定义。如果您觉得需要更改,请与我联系;我实际上并没有在运行中的域名服务器上使用它。
$zoneFileService = new ZoneFileService(); $zoneFileService->getZoneText($zone)
结果输出如下
netcode.nl. IN SOA ns a.krijgsman.netcode.nl. ( 2016013101 86000 7200 1209600 600 ) IN A 127.0.0.1 www 300 IN A 127.0.0.1 mail 7200 IN CNAME www 7200 IN MX 10 mail