hoa/dns

此包已被弃用且不再维护。未建议替换包。

Hoa\Dns 库。

3.17.01.10 2017-01-10 10:50 UTC

README

Hoa

Build status Code coverage Packagist License

Hoa 是一套 模块化可扩展结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。

Hoa\Dns

Help on IRC Help on Gitter Documentation Board

此库允许创建一个域名解析器。

了解更多.

安装

使用 Composer,要将此库包含到依赖中,您需要要求 hoa/dns

$ composer require hoa/dns '~3.0'

有关更多安装说明,请参阅 源代码页面

测试

在运行测试套件之前,必须安装开发依赖项

$ composer install

然后,运行所有测试套件

$ vendor/bin/hoa test:run

有关更多信息,请参阅 贡献者指南

快速使用

作为一个快速概述,我们建议为顶级域名 .hoa 创建我们自己的解析服务器。我们首先修改本地解析器以添加一个新的解析主机:我们的。

指定解析服务器

在 Mac OS X 上,最简单的方法是在 /etc/resolver/hoa 中写入以下声明

nameserver 127.0.0.1
port 57005

在 Linux 上,我们将使用 DNSMasq(通常已经安装)。然后,通过添加以下内容编辑 /etc/dnsmasq.conf 文件

server=/hoa/127.0.0.1#57005

并且不要忘记重新启动

$ sudo /etc/init.d/dnsmasq restart
 * Restarting DNS forwarder and DHCP server dnsmasq    [OK]

对于 Windows,更复杂。您应该阅读文档。

创建解析服务器

好吧,现在,我们将创建我们的解析服务器,该服务器将监听 127.0.0.1:5700557005 = 0xDEAD)上的 UDP。因此,在 Resolution.php 文件中

$dns = new Hoa\Dns\Resolver(
    new Hoa\Socket\Server('udp://127.0.0.1:57005')
);
$dns->on('query', function (Hoa\Event\Bucket $bucket) {
    $data = $bucket->getData();

    echo
        'Resolving domain ', $data['domain'],
        ' of type ', $data['type'], "\n";

    return '127.0.0.1';
});
$dns->run();

所有顶级域名 .hoa 的查询都将解析到 127.0.0.1(注意:我们不查看类型,对于 IPv4 应该是 A,对于 IPv6 应该是 AAAA)。

最后,假设我们有一个运行在 127.0.0.1:8888 的 HTTP 服务器,索引响应 yeah \o/,然后我们启动我们的解析器

$ php Resolver.php

然后我们对 foo.hoa 发起 HTTP 请求(这将解析到 127.0.0.1

$ curl foo.hoa --verbose
* About to connect() to foo.hoa port 80 (#0)
*   Trying 127.0.0.1... connected
* Connected to foo.hoa (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/a.b.c (…) libcurl/d.e.f
> OpenSSL/g.h.i zlib/j.k.l
> Host: foo.hoa:80
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: …
< Server: …
< Content-Type: text/html
< Content-Length: 8
<
yeah \o/
* Connection #0 to host foo.hoa left intact
* Closing connection #0

我们看到 foo.hoa 解析到 127.0.0.1

文档

Hoa\Dns 的黑客手册包含有关如何使用此库及其工作方式的详细信息。

要本地生成文档,请执行以下命令

$ composer require --dev hoa/devtools
$ vendor/bin/hoa devtools:documentation --open

更多文档可以在项目的网站上找到: hoa-project.net

获取帮助

获取帮助主要有两种方式

贡献

你想贡献吗?感谢!一个详细的 贡献指南 说明了你需要知道的一切。

许可

Hoa 采用新 BSD 许可证 (BSD-3-Clause)。请参阅 LICENSE 以获取详细信息。

相关项目

以下项目正在使用这个库

  • ec2dns,ec2dns 是一组命令行工具,可以轻松显示 EC2 实例的公共主机名并通过标签名 ssh 连接到它们。