1
0
mirror of https://github.com/danog/LibDNSNative.git synced 2024-11-30 04:29:07 +01:00
LibDNSNative/README.md
2019-07-15 14:41:26 +02:00

1.7 KiB

LibDNSNative

Build Status License

Encoder/decoder for the raw format of PHP's dns_get_record function based on 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

require 'vendor/autoload.php';

use danog\LibDNSNative\NativeEncoderFactory;
use danog\LibDNSNative\NativeDecoderFactory;
use LibDNS\Records\QuestionFactory;
use LibDNS\Records\ResourceQTypes;
use LibDNS\Messages\MessageFactory;
use LibDNS\Messages\MessageTypes;

$question = (new QuestionFactory)->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);