From 147e0cfaea735f4d8d1c5032d2ada301b6598c13 Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Sat, 4 Apr 2009 13:58:07 +0200 Subject: [PATCH] Optionally use Net_DNS for host name lookups (adrieder@sbox.tugraz.at, Request #7374). --- framework/Mime/lib/Horde/Mime/Headers.php | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/framework/Mime/lib/Horde/Mime/Headers.php b/framework/Mime/lib/Horde/Mime/Headers.php index 47f2a016f..3d21d1547 100644 --- a/framework/Mime/lib/Horde/Mime/Headers.php +++ b/framework/Mime/lib/Horde/Mime/Headers.php @@ -145,17 +145,36 @@ class Horde_Mime_Headers */ public function addReceivedHeader() { + $have_netdns = @include_once 'Net/DNS.php'; + if ($have_netdns) { + $resolver = new Net_DNS_Resolver(); + $resolver->retry = isset($GLOBALS['conf']['dns']['retry']) ? $GLOBALS['conf']['dns']['retry'] : 1; + $resolver->retrans = isset($GLOBALS['conf']['dns']['retrans']) ? $GLOBALS['conf']['dns']['retrans'] : 1; + } + $old_error = error_reporting(0); if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { /* This indicates the user is connecting through a proxy. */ $remote_path = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $remote_addr = $remote_path[0]; - $remote = gethostbyaddr($remote_addr); + if ($have_netdns) { + $response = $resolver->query($remote_addr, 'PTR'); + $remote = $response ? $response->answer[0]->ptrdname : $host; + } else { + $remote = gethostbyaddr($remote_addr); + } } else { $remote_addr = $_SERVER['REMOTE_ADDR']; - $remote = empty($_SERVER['REMOTE_HOST']) - ? gethostbyaddr($remote_addr) - : $_SERVER['REMOTE_HOST']; + if (empty($_SERVER['REMOTE_HOST'])) { + if ($have_netdns) { + $response = $resolver->query($remote_addr, 'PTR'); + $remote = $response ? $response->answer[0]->ptrdname : $host; + } else { + $remote = gethostbyaddr($remote_addr); + } + } else { + $remote = $_SERVER['REMOTE_HOST']; + } } error_reporting($old_error); -- 2.11.0