danog/libdns-native

基于 libdns 的 PHP 的 dns_get_record 原始格式的编码/解码器

0.1 2019-07-15 12:59 UTC

This package is auto-updated.

Last update: 2024-08-26 06:14:49 UTC


README

Build Status License

基于 PHP 的 dns_get_record 函数 的原始格式编码/解码器,基于 libdns:允许使用该函数来获取所有类型的 DNS 记录,而不仅仅是 DNS_ 常量支持的记录。

API 由一个 NativeEncoderFactory 组成,它创建 NativeEncoder 对象,可以将 libdns 的 Message 对象编码为传递给 dns_get_record 函数的参数列表。

NativeDecoderFactory 创建 NativeDecoder 对象,接受 dns_get_record 函数的结果并将它们解码回 Message 对象。

安装

composer require danog/libdns-native

用法

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