danog/libdns-native

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

0.1 2019-07-15 12:59 UTC

This package is auto-updated.

Last update: 2024-03-26 05:19:37 UTC


README

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);