2017 © Pedro Peláez
 

library dns

Retrieve DNS records

image

spatie/dns

Retrieve DNS records

  • Thursday, May 3, 2018
  • by Spatie
  • Repository
  • 8 Watchers
  • 115 Stars
  • 3,036 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 16 Forks
  • 1 Open issues
  • 7 Versions
  • 93 % Grown

The README.md

Retrieve DNS records

Latest Version on Packagist Tests Code style Total Downloads, (*1)

This package contains a class that can fetch DNS records., (*2)

use Spatie\Dns\Dns;

$dns = new Dns();

$dns->getRecords('spatie.be'); // returns all available dns records

$dns->getRecords('spatie.be', 'A'); // returns only A records

You can use various methods to retrieve info of a record., (*3)

$records = $dns->getRecords('spatie.be')

$hostNameOfFirstRecord = $records[0]->host();

Support us

, (*4)

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products., (*5)

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall., (*6)

Installation

If you do not have dig installed you will need it., (*7)

You can install the package via composer:, (*8)

composer require spatie/dns

Usage

The class can get these record types: A, AAAA, CNAME, NS, PTR, SOA, MX, SRV, TXT, DNSKEY, CAA, NAPTR., (*9)

use Spatie\Dns\Dns;

$dns = new Dns();

$dns->getRecords('spatie.be'); // returns all available dns records

$dns->getRecords('spatie.be', 'A'); // returns only A records
$dns->getRecords('spatie.be', ['A', 'CNAME']); // returns both A and CNAME records
$dns->getRecords('spatie.be', DNS_MX); // returns only MX records
$dns->getRecords('spatie.be', DNS_A | DNS_AAAA); // returns both A and AAAA records

getRecords will return an array with objects that implement the Spatie\Dns\Records\Record interface., (*10)

Working with DNS records

Here's how you can fetch the first A-record of a domain., (*11)

$ARecord = $dns->getRecords('spatie.be', 'A')[0];

These methods can be called on all records:, (*12)

  • host(): returns the host (spatie.be)
  • ttl(): return the time to live (900)
  • class(): returns the class (IN)
  • type(): returns the type (A)

When converting a record to a string you'll get a string with all info separated with tabs., (*13)

(string)$ARecord // returns `spatie.be.              900     IN      A       138.197.187.74`

Some records have additional methods available. For example, records of type A have an additional ip() method. To know which extra methods there are, check the docblocks above all record classes in the source code., (*14)

Using a specific nameserver

You can get records from a specific nameserver., (*15)

use Spatie\Dns\Dns;

(new Dns)
    ->useNameserver('ns1.openminds.be') // use ns1.openminds.be
    ->getRecords('spatie.be');

Specify retries and timeouts for Dig

Dig can be configured to retry a DNS query after a certain timeout. Use setRetries() or setTimeout() to configure those settings. The timeout is specified in seconds., (*16)

use Spatie\Dns\Dns;

(new Dns)
    ->setRetries(4) // try 4 times
    ->setTimeout(5) // wait 5 seconds for a reply from the nameserver
    ->getRecords('spatie.be');

Guessing a record

When you have a string that contains a dns record, you can convert it to a Record, (*17)

use \Spatie\Dns\Support\Factory();

// returns instance of \Spatie\Dns\Records\CNAME
(new Factory())->guess('www.spatie.be.       300     IN      CNAME   spatie.be.');

Using custom handlers

A Handler is responsible for fetching DNS records of a certain type., (*18)

By default, these handlers that ship with the package are used:, (*19)

  • Spatie\Dns\Handler\Dig
  • Spatie\Dns\Handler\DnsGetRecord

You can create custom handlers. A valid handler is any class that extends from Spatie\Dns\Handler\Handler., (*20)

A custom handler class can be used by passing it to useHandlers on Spatie\Dns\Dns., (*21)

$results = $this->dns
    ->useHandlers([new YourCustomHandler()])
    ->getRecords('spatie.be');

Under the hood

We will use dig to fetch DNS info. If it is not installed on your system, we'll call the native dns_get_record() function., (*22)

Testing

bash composer test, (*23)

Changelog

Please see CHANGELOG for more information what has changed recently., (*24)

Contributing

Please see CONTRIBUTING for details., (*25)

Security

If you've found a bug regarding security please mail security@spatie.be., (*26)

Postcardware

You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using., (*27)

Our address is: Spatie, Kruikstraat 22, 2018 Antwerp, Belgium., (*28)

We publish all received postcards on our company website., (*29)

Credits

License

The MIT License (MIT). Please see License File for more information., (*30)

The Versions

03/05 2018

dev-master

9999999-dev https://github.com/spatie/dns

Retrieve DNS records

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns

20/02 2018

1.3.1

1.3.1.0 https://github.com/spatie/dns

Retrieve DNS records

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns

19/01 2018

1.3.0

1.3.0.0 https://github.com/spatie/dns

Retrieve DNS records

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns

29/11 2017

1.2.0

1.2.0.0 https://github.com/spatie/dns

Retrieve DNS records

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns

03/11 2017

1.1.0

1.1.0.0 https://github.com/spatie/dns

Retrieve DNS records

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns

03/11 2017

1.0.0

1.0.0.0 https://github.com/spatie/dns

Retrieve DNS records

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns

03/11 2017

0.0.1

0.0.1.0 https://github.com/spatie/dns

A easy to handle class that can get all sort of dns related info for a given domain name

  Sources   Download

MIT

The Requires

 

The Development Requires

spatie dns