13-reverse-dns.php 840 B

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. use React\Dns\Config\Config;
  3. use React\Dns\Resolver\Factory;
  4. use React\Dns\Model\Message;
  5. require __DIR__ . '/../vendor/autoload.php';
  6. $config = Config::loadSystemConfigBlocking();
  7. if (!$config->nameservers) {
  8. $config->nameservers[] = '8.8.8.8';
  9. }
  10. $factory = new Factory();
  11. $resolver = $factory->create($config);
  12. $ip = isset($argv[1]) ? $argv[1] : '8.8.8.8';
  13. if (@inet_pton($ip) === false) {
  14. exit('Error: Given argument is not a valid IP' . PHP_EOL);
  15. }
  16. if (strpos($ip, ':') === false) {
  17. $name = inet_ntop(strrev(inet_pton($ip))) . '.in-addr.arpa';
  18. } else {
  19. $name = wordwrap(strrev(bin2hex(inet_pton($ip))), 1, '.', true) . '.ip6.arpa';
  20. }
  21. $resolver->resolveAll($name, Message::TYPE_PTR)->then(function (array $names) {
  22. var_dump($names);
  23. }, function (Exception $e) {
  24. echo $e->getMessage() . PHP_EOL;
  25. });