An open API service indexing awesome lists of open source software.

https://github.com/danog/libdnsnative

Encoder/decoder for PHP's dns_get_record raw format based on libdns
https://github.com/danog/libdnsnative

Last synced: 2 months ago
JSON representation

Encoder/decoder for PHP's dns_get_record raw format based on libdns

Awesome Lists containing this project

README

          

# LibDNSNative

[![Build Status](https://img.shields.io/travis/danog/libdnsnative/master.svg?style=flat-square)](https://travis-ci.org/danog/libdnsnative)
![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)

Encoder/decoder for the raw format of [PHP's dns_get_record function](https://www.php.net/manual/en/function.dns-get-record.php) based on [libdns](https://github.com/DaveRandom/LibDNS/): allows usage of the function to fetch **all kinds of DNS records**, not just the ones supported by the `DNS_` constants.

The API consists of a `NativeEncoderFactory` that creates `NativeEncoder` objects, that can encode libdns `Message` objects to a list of parameters that that must be passed to the `dns_get_record` function.

The `NativeDecoderFactory` creates `NativeDecoder` objects, that accept the results of the `dns_get_record` function and decode them back to `Message` objects.

## Installation

```
composer require danog/libdns-native
```

## Usage

```php
create(ResourceQTypes::DNSKEY);
$question->setName('daniil.it');

$message = (new MessageFactory)->create(MessageTypes::QUERY);
$records = $message->getQuestionRecords();
$records->add($question);

$encoder = (new NativeEncoderFactory)->create();
$question = $encoder->encode($message);

$result = dns_get_record(...$question);

$decoder = (new NativeDecoderFactory)->create();
$result = $decoder->decode($result, ...$question);
```