noglitchyo / dealdoh-client
A DNS proxy client to make/forward DNS query via HTTP & CLI with different protocols.
Requires
- php: ^7.3
- ext-json: *
- noglitchyo/dealdoh: ^0.4.0
- nyholm/psr7: ^1.1
- php-di/php-di: ^6.0
- php-http/guzzle6-adapter: ^2.0
- psr/http-client: 1.0.1
- psr/log: ^1.1
- slim/http: ^0.7.0
- slim/slim: 4.0.0-beta
- symfony/console: ^4.3
Requires (Dev)
- mockery/mockery: ^1.2
- monolog/monolog: ^1.24
- phpstan/phpstan: ^0.11.8
- phpunit/phpunit: ^8.1
- squizlabs/php_codesniffer: 3.5
This package is auto-updated.
Last update: 2024-12-22 00:14:22 UTC
README
A toy to deal DNS over HTTPS and more!
dealdoh-client is a simple DNS client embedding a DNS-over-HTTPS (DoH) proxy server and CLI to make & forward DNS queries through a variety of upstreams.
Description
dealdoh-client can be use in different manners and for different purposes:
- as a DoH proxy server
- as a DNS client, using the provided command-line client to make DNS queries
- both can use a pool of DNS upstream which can be easily configured by running some commands
Dealdoh is built on top of the Dealdoh library.
Roadmap
Getting started
As mentionned above, there is multiple ways to use dealdoh-client. Let's see what can be done at the time with dealdoh-client.
As a DoH proxy server
As a DNS command-line client
Requirements
- PHP 7.3
- Composer
Installation
- You can use the client by cloning the project:
git clone https://github.com/noglitchyo/dealdoh-client
composer install
- or by using as a dependency in a project:
composer require noglitchyo/dealdoh-client
Usage
Add a DNS upstream
You can use the following command to add a DNS upstream to the DNS pool:
php bin/dealdoh upstream:add https://dns.google.com/resolve google-doh-api
Execute a DNS query
To execute DNS query directly from the command-line, you can use the provided binary:
php bin/dealdoh resolve tools.ietf.org AAAA --pretty
It will output the result as JSON string: (response is truncated)
{ "header": { "id": 0, "qr": true, "opcode": 0, "aa": false, "tc": false, "rd": true, "ra": true, "z": 0, "rcode": 0 }, "question": [ { "qname": "tools.ietf.org.", "qtype": 28, "qclass": 1 } ], "answer": [ { "name": "tools.ietf.org.", "type": 28, "class": 1, "ttl": 13, "data": "2001:1900:3001:11::3e" } ], "authority": [], "additional": [] }
Testing
If you wish to run the test, checkout the project and run the test with:
composer test
Contributing
Get started here CONTRIBUTING.md.
License
This project is licensed under the MIT License - see the LICENSE.md file for details