https://github.com/astrotomic/laravel-dns
A Laravel wrapper for spatie/dns. Allows to query and validate DNS records.
https://github.com/astrotomic/laravel-dns
dns laravel php
Last synced: about 1 year ago
JSON representation
A Laravel wrapper for spatie/dns. Allows to query and validate DNS records.
- Host: GitHub
- URL: https://github.com/astrotomic/laravel-dns
- Owner: Astrotomic
- License: mit
- Created: 2021-05-21T16:29:31.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2023-08-29T09:32:16.000Z (almost 3 years ago)
- Last Synced: 2025-04-02T02:22:02.152Z (about 1 year ago)
- Topics: dns, laravel, php
- Language: PHP
- Homepage: https://github.com/spatie/dns
- Size: 77.1 KB
- Stars: 32
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Laravel DNS
[](https://packagist.org/packages/astrotomic/laravel-dns)
[](https://github.com/Astrotomic/laravel-dns/blob/master/LICENSE)
[](https://plant.treeware.earth/Astrotomic/laravel-dns)
[](https://www.larabelles.com/)


[](https://github.com/Astrotomic/laravel-dns/actions?query=workflow%3Apest)
[](https://github.com/Astrotomic/laravel-dns/actions?query=workflow%3Aphp-cs-fixer)
[](https://packagist.org/packages/astrotomic/laravel-dns)
## Installation
```bash
composer require astrotomic/laravel-dns
```
## Usage
```php
use Astrotomic\Dns\Facades\Dns;
/** @var \Illuminate\Support\Collection $records */
$records = Dns::records('astrotomic.info', DNS_A);
```
```php
use Astrotomic\Dns\Rules\DnsRecordExists;
use Spatie\Dns\Records\A;
use Spatie\Dns\Records\TXT;
return [
'url' => [
'required',
'string',
'url',
// verify that domain of entered url
// has any A, AAAA or CNAME record
// and a TXT record with the users token
DnsRecordExists::make()
->expect(DNS_A|DNS_AAAA|DNS_CNAME)
->expect(DNS_TXT, fn(TXT $record): bool => $record->txt() === 'token='.$this->user()->public_token),
],
'email' => [
'required',
'string',
'email',
// verify that domain of entered email
// has any MX record
// and SPF setup
DnsRecordExists::make()
->expect(DNS_MX)
->expect(DNS_TXT, fn(TXT $record): bool => str_starts_with($record->txt(), 'v=spf1 ')),
],
'domain' => [
'required',
'string',
// verify that entered domain
// has an A record
// pointing to our IP-address
DnsRecordExists::make()
->expect(DNS_A, fn(A $record): bool => $record->ip() === '127.0.0.1'),
],
'something' => [
'required',
'string',
// verify that value is something with DNS
DnsRecordExists::make(),
],
];
```
```php
use Astrotomic\Dns\Domain;
protected $casts = [
'domain' => Domain::class,
];
```
```php
use Astrotomic\Dns\Domain;
/** @var \Astrotomic\Dns\Domain $domain */
$domain = Domain::make('dns@astrotomic.info');
/** @var string|null $domain */
$domain = Domain::parse('dns@astrotomic.info');
```