| 
<?php
 use React\Dns\Model\Message;
 use React\Dns\Model\Record;
 use React\Dns\Query\Query;
 use React\Dns\Query\UdpTransportExecutor;
 use React\EventLoop\Factory;
 
 require __DIR__ . '/../vendor/autoload.php';
 
 $loop = Factory::create();
 $executor = new UdpTransportExecutor('8.8.8.8:53', $loop);
 
 $name = isset($argv[1]) ? $argv[1] : 'google.com';
 
 $any = new Query($name, Message::TYPE_ANY, Message::CLASS_IN);
 
 $executor->query($any)->then(function (Message $message) {
 foreach ($message->answers as $answer) {
 /* @var $answer Record */
 
 $data = $answer->data;
 
 switch ($answer->type) {
 case Message::TYPE_A:
 $type = 'A';
 break;
 case Message::TYPE_AAAA:
 $type = 'AAAA';
 break;
 case Message::TYPE_NS:
 $type = 'NS';
 break;
 case Message::TYPE_PTR:
 $type = 'PTR';
 break;
 case Message::TYPE_CNAME:
 $type = 'CNAME';
 break;
 case Message::TYPE_TXT:
 // TXT records can contain a list of (binary) strings for each record.
 // here, we assume this is printable ASCII and simply concatenate output
 $type = 'TXT';
 $data = implode('', $data);
 break;
 case Message::TYPE_MX:
 // MX records contain "priority" and "target", only dump its values here
 $type = 'MX';
 $data = implode(' ', $data);
 break;
 case Message::TYPE_SRV:
 // SRV records contain priority, weight, port and target, dump structure here
 $type = 'SRV';
 $data = json_encode($data);
 break;
 case Message::TYPE_SSHFP:
 // SSHFP records contain algorithm, fingerprint type and hex fingerprint value
 $type = 'SSHFP';
 $data = implode(' ', $data);
 break;
 case Message::TYPE_SOA:
 // SOA records contain structured data, dump structure here
 $type = 'SOA';
 $data = json_encode($data);
 break;
 case Message::TYPE_CAA:
 // CAA records contains flag, tag and value
 $type = 'CAA';
 $data = $data['flag'] . ' ' . $data['tag'] . ' "' . $data['value'] . '"';
 break;
 default:
 // unknown type uses HEX format
 $type = 'Type ' . $answer->type;
 $data = wordwrap(strtoupper(bin2hex($data)), 2, ' ', true);
 }
 
 echo $type . ': ' . $data . PHP_EOL;
 }
 }, 'printf');
 
 $loop->run();
 
 |