2017 © Pedro Peláez
 

library dns-checker

DNS checker written in PHP for check and compare real DNS records for domain.

image

mesour/dns-checker

DNS checker written in PHP for check and compare real DNS records for domain.

  • Thursday, February 1, 2018
  • by mesour
  • Repository
  • 2 Watchers
  • 4 Stars
  • 12 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 7 Versions
  • 20 % Grown

The README.md

Mesour DNS checker

  • Author, (*1)

  • DNS checker written in PHP for check and compare real DNS records for domain., (*2)

  • In AaaaDnsRecord is IPv6 compressed to short format., (*3)

  • Problem with PHP warning: dns_get_record(): A temporary server error occurred. is resolved., (*4)

Install

  • With Composer, (*5)

    composer require mesour/dns-checker
  • Or download source from GitHub, (*6)

Usage

  1. Create instance \Mesour\DnsChecker\Providers\DnsRecordProvider:
$provider = new \Mesour\DnsChecker\Providers\DnsRecordProvider();
  1. Create instance \Mesour\DnsChecker\DnsChecker:
$checker = new \Mesour\DnsChecker\DnsChecker($provider);
  1. Get DNS record set (second parameter type have same values as parameter type for PHP function dns_get_record().):
$dnsRecordSet = $checker->getDnsRecordSet('example.com', DNS_A + DNS_AAAA);

$dnsRecordSet contains for example:, (*7)

Mesour\DnsChecker\DnsRecordSet
   dnsRecords private => array (3)
   |  0 => Mesour\DnsChecker\MxRecord #86b8
   |  |  priority private => 40
   |  |  target private => "alt3.aspmx.l.example.com" (24)
   |  |  type private => "MX" (2)
   |  |  name private => "example.com" (11)
   |  |  content private => "40 alt3.aspmx.l.example.com" (27)
   |  |  ttl private => 404
   |  1 => Mesour\DnsChecker\MxRecord #5a7b
   |  |  priority private => 50
   |  |  target private => "alt4.aspmx.l.example.com" (24)
   |  |  type private => "MX" (2)
   |  |  name private => "example.com" (11)
   |  |  content private => "50 alt4.aspmx.l.example.com" (27)
   |  |  ttl private => 404

DnsRecordSet

  • Implements \ArrayAccess, \Countable and \Iterator.

Check if exist domain record:, (*8)

$dnsRecord = new \Mesour\DnsChecker\Records\DnsRecord('NS', 'example.com', 'ns3.example.com');
Assert::true($dnsRecordSet->hasRecord($dnsRecord));

Get matching DNS record:, (*9)

$dnsRecord = new \Mesour\DnsChecker\Records\DnsRecord('AAAA', 'example.com', '2a00:4444:5555:6666::200e');
$nsDnsRecord = $dnsRecordSet->getMatchingRecord($dnsRecord);

More information in one DnsRecordSet

$request = new DnsRecordRequest();
$request->addFilter('example.com');
$request->addFilter('www.example.com', DNS_CNAME);
// ... more lines

/** @var \Mesour\DnsChecker\DnsChecker $checker */
/** @var \Mesour\DnsChecker\DnsRecordSet $records */
$records = $checker->getDnsRecordSetFromRequest($request);

Difference between two DnsRecordSets

$factory = new DnsRecordSetDiffFactory();

$expected = $this->createExpectedDnsRecordSet();

$checker = new DnsChecker(new DnsRecordProvider());
$recordSet = $checker->getDnsRecordSet('example.com');

/** @var Mesour\DnsChecker\Diffs\DnsRecordSetDiff $diff */
$diff = $factory->createDiff($expected, $recordSet);

Assert::true($diff->hasDifferentRecord());

$diffs = $diff->getDiffs();

Assert::count(5, $diffs);
Assert::type(Mesour\DnsChecker\Diffs\DnsRecordDiff::class, $diffs[0]);

/** @var DnsRecordDiff $recordDiff */
$recordDiff = $diffs[4];
Assert::true($recordDiff->isDifferent());

// Can use this for get array of similar records with same type
$recordDiff->getSimilarRecords();

Mock DNS record provider

For mock DNS provider your tests can use Mesour\DnsChecker\StaticDnsRecordProvider or Mesour\DnsChecker\ArrayDnsRecordProvider., (*10)

Values are as return values of PHP function dns_get_record()., (*11)

$provider = new \Mesour\DnsChecker\Providers\StaticDnsRecordProvider([
    [
        'host' => 'example.com',
        'class' => 'IN',
        'ttl' => 34,
        'type' => 'A',
        'ip' => '216.58.201.78',
    ],
]);

Development

Run command make qa, (*12)

PhpUnit

Run command make phpunit, (*13)

PHP Stan

Run command make phpstan, (*14)

Code style

Run command make cs, (*15)

Run command make csf for fix, (*16)

Parallel lint

Run command make lint, (*17)

The Versions

01/02 2018

dev-master

9999999-dev

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

 

The Development Requires

dns dns checker

01/02 2018

dev-patch-07-mesour

dev-patch-07-mesour

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

 

The Development Requires

dns dns checker

01/02 2018

v0.1.3

0.1.3.0

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

 

The Development Requires

dns dns checker

01/02 2018

dev-patch-06-mesour

dev-patch-06-mesour

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

 

The Development Requires

dns dns checker

21/01 2018

v0.1.2

0.1.2.0

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

  • php >=7.0

 

The Development Requires

dns dns checker

20/01 2018

v0.1.1

0.1.1.0

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

  • php >=7.0

 

The Development Requires

dns dns checker

20/01 2018

v0.1.0

0.1.0.0

DNS checker written in PHP for check and compare real DNS records for domain.

  Sources   Download

BSD-3-Clause GPL-3.0-or-later

The Requires

  • php >=7.0

 

The Development Requires

dns dns checker