Hoa central

Hoa is a modular, extensible and structured set of PHP libraries. Moreover, Hoa aims at being a bridge between industrial and research worlds.


This library allows to create a domain name resolver.


With Composer, to include this library into your dependencies, you need to require `hoa/dns`:

```json { "require": { "hoa/dns": "~2.0" } } ```

Please, read the website to get more informations about how to install.

Quick usage

As a quick overview, we propose to create our own resolution server for the top level domain .hoa. We start by modifying the local resolver in order to add a new resolution host: ours.

Specify a resolution server

On Mac OS X, the simplest way is to write in /etc/resolver/hoa the following declarations:

``` nameserver port 57005 ```

On Linux, we will use DNSMasq (often already installed). Then, we edit the file /etc/dnsmasq.conf by adding:

``` server=/hoa/ ```

And do not forget to restart:

```sh $ sudo /etc/init.d/dnsmasq restart

For Windows, it is more complicated. You should read the documentation.

Create a resolution server

Well, now, we will create our resolution server that will listen (57005 = 0xDEAD) in UDP. Thus, in the Resolution.php file:

```php $dns = new Hoa( new Hoa('udp://') ); $dns->on('query', function (Hoa $bucket) { $data = $bucket->getData();

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

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

All query for the top level domain .hoa will be resolved to (note: we do not look at the type, which should be A or AAAA respectively for IPv4 and IPv6).

Finally, let say we have a HTTP server that runs on and the index responds yeah \o/, then we start our resolver:

```sh $ php Resolver.php ```

And we make an HTTP request on foo.hoa (that will be resolve to

```sh $ curl foo.hoa –verbose

We see that foo.hoa is resolved to!


Different documentations can be found on the website: http://hoa-project.net/.


Hoa is under the New BSD License (BSD-3-Clause). Please, see `LICENSE`.