hoa / dns
Hoa\Dns 库。
Requires
- hoa/consistency: ~1.0
- hoa/event: ~1.0
- hoa/exception: ~1.0
Requires (Dev)
- hoa/test: ~2.0
Suggests
- hoa/socket: Provide sockets.
This package is auto-updated.
Last update: 2021-09-20 08:30:47 UTC
README
Hoa 是一套 模块化、可扩展 和 结构化 的 PHP 库。
此外,Hoa 致力于成为工业界和研究界之间的桥梁。
Hoa\Dns
此库允许创建一个域名解析器。
了解更多.
安装
使用 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:57005
(57005
= 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。
获取帮助
获取帮助主要有两种方式
- 在
#hoaproject
IRC 频道, - 在 users.hoa-project.net 论坛。
贡献
你想贡献吗?感谢!一个详细的 贡献指南 说明了你需要知道的一切。
许可
Hoa 采用新 BSD 许可证 (BSD-3-Clause)。请参阅 LICENSE
以获取详细信息。
相关项目
以下项目正在使用这个库
- ec2dns,ec2dns 是一组命令行工具,可以轻松显示 EC2 实例的公共主机名并通过标签名 ssh 连接到它们。