From 88193c988926de8d1518d6509eb45cb8759374cc Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Fri, 5 Nov 2010 10:44:41 -0400 Subject: [PATCH] Initial switch from Net_DNS to Net_DNS2 --- .../lib/Horde/Core/Autoloader/Callback/Nls.php | 3 +-- framework/Core/lib/Horde/Core/Factory/Dns.php | 16 +++--------- framework/Core/lib/Horde/Registry.php | 2 +- framework/Mime/lib/Horde/Mime/Headers.php | 30 ++++++++++++---------- framework/Nls/lib/Horde/Nls.php | 25 ++++++++++-------- horde/admin/sessions.php | 13 +++++++--- horde/config/conf.xml | 14 ---------- horde/docs/CHANGES | 1 + horde/lib/LoginTasks/Task/LastLogin.php | 16 +++++++----- horde/lib/Test.php | 4 +-- imp/lib/Compose.php | 2 +- imp/lib/Mime/Viewer/Itip.php | 2 +- 12 files changed, 60 insertions(+), 68 deletions(-) diff --git a/framework/Core/lib/Horde/Core/Autoloader/Callback/Nls.php b/framework/Core/lib/Horde/Core/Autoloader/Callback/Nls.php index 2bc7e9d8d..50d77b992 100644 --- a/framework/Core/lib/Horde/Core/Autoloader/Callback/Nls.php +++ b/framework/Core/lib/Horde/Core/Autoloader/Callback/Nls.php @@ -10,7 +10,6 @@ class Horde_Core_Autoloader_Callback_Nls */ static public function callback() { - Horde_Nls::$dnsResolver = $GLOBALS['injector']->getInstance('Net_DNS_Resolver'); + Horde_Nls::$dnsResolver = $GLOBALS['injector']->getInstance('Net_DNS2_Resolver'); } - } diff --git a/framework/Core/lib/Horde/Core/Factory/Dns.php b/framework/Core/lib/Horde/Core/Factory/Dns.php index 9fcce91b5..5bea7227e 100644 --- a/framework/Core/lib/Horde/Core/Factory/Dns.php +++ b/framework/Core/lib/Horde/Core/Factory/Dns.php @@ -7,21 +7,11 @@ class Horde_Core_Factory_Dns { public function create(Horde_Injector $injector) { - /* Need check for Net_DNS since it defines global variables used - * in Net_DNS_Resolver::. */ - if (!class_exists('Net_DNS')) { - return null; - } + $resolver = new Net_DNS2_Resolver(); + $resolver->setServers('/etc/resolv.conf'); - $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; + spl_autoload_unregister('Net_DNS2::autoload'); return $resolver; } - } diff --git a/framework/Core/lib/Horde/Registry.php b/framework/Core/lib/Horde/Registry.php index b8df1a7e0..5d3811615 100644 --- a/framework/Core/lib/Horde/Registry.php +++ b/framework/Core/lib/Horde/Registry.php @@ -287,7 +287,7 @@ class Horde_Registry 'Horde_Token' => 'Horde_Core_Factory_Token', 'Horde_View' => 'Horde_Core_Factory_View', 'Horde_View_Base' => 'Horde_Core_Factory_View', - 'Net_DNS_Resolver' => 'Horde_Core_Factory_Dns', + 'Net_DNS2_Resolver' => 'Horde_Core_Factory_Dns', ); /* Define implementations. */ diff --git a/framework/Mime/lib/Horde/Mime/Headers.php b/framework/Mime/lib/Horde/Mime/Headers.php index ab361ef99..a15519f9f 100644 --- a/framework/Mime/lib/Horde/Mime/Headers.php +++ b/framework/Mime/lib/Horde/Mime/Headers.php @@ -163,7 +163,7 @@ class Horde_Mime_Headers implements Serializable * * @param array $options Additional options: *
-     * 'dns' - (Net_DNS_Resolver) Use the DNS resolver object to lookup
+     * 'dns' - (Net_DNS2_Resolver) Use the DNS resolver object to lookup
      *         hostnames.
      *         DEFAULT: Use gethostbyaddr() function.
      * 'server' - (string) Use this server name.
@@ -179,14 +179,16 @@ class Horde_Mime_Headers implements Serializable
             $remote_addr = $remote_path[0];
             if (!empty($options['dns'])) {
                 $remote = $remote_addr;
-                if ($response = $options['dns']->query($remote_addr, 'PTR')) {
-                    foreach ($response->answer as $val) {
-                        if (isset($val->ptrdname)) {
-                            $remote = $val->ptrdname;
-                            break;
+                try {
+                    if ($response = $options['dns']->query($remote_addr, 'PTR')) {
+                        foreach ($response->answer as $val) {
+                            if (isset($val->ptrdname)) {
+                                $remote = $val->ptrdname;
+                                break;
+                            }
                         }
                     }
-                }
+                } catch (Net_DNS2_Exception $e) {}
             } else {
                 $remote = gethostbyaddr($remote_addr);
             }
@@ -195,14 +197,16 @@ class Horde_Mime_Headers implements Serializable
             if (empty($_SERVER['REMOTE_HOST'])) {
                 if (!empty($options['dns'])) {
                     $remote = $remote_addr;
-                    if ($response = $options['dns']->query($remote_addr, 'PTR')) {
-                        foreach ($response->answer as $val) {
-                            if (isset($val->ptrdname)) {
-                                $remote = $val->ptrdname;
-                                break;
+                    try {
+                        if ($response = $options['dns']->query($remote_addr, 'PTR')) {
+                            foreach ($response->answer as $val) {
+                                if (isset($val->ptrdname)) {
+                                    $remote = $val->ptrdname;
+                                    break;
+                                }
                             }
                         }
-                    }
+                    } catch (Net_DNS2_Exception $e) {}
                 } else {
                     $remote = gethostbyaddr($remote_addr);
                 }
diff --git a/framework/Nls/lib/Horde/Nls.php b/framework/Nls/lib/Horde/Nls.php
index b02520594..3af2b56f6 100644
--- a/framework/Nls/lib/Horde/Nls.php
+++ b/framework/Nls/lib/Horde/Nls.php
@@ -22,7 +22,7 @@ class Horde_Nls
     /**
      * DNS resolver.
      *
-     * @var Net_DNS_Resolver
+     * @var Net_DNS2_Resolver
      */
     static public $dnsResolver;
 
@@ -130,19 +130,24 @@ class Horde_Nls
             'museum', 'name', 'net', 'org', 'pro'
         );
 
-        $checkHost = $host;
+        $checkHost = null;
         if (preg_match('/^\d+\.\d+\.\d+\.\d+$/', $host)) {
-            if (isset(self::$dnsResolver) &&
-                ($response = self::$dnsResolver->query($host, 'PTR'))) {
-                foreach ($response->answer as $val) {
-                    if (isset($val->ptrdname)) {
-                        $checkHost = $val->ptrdname;
-                        break;
+            if (isset(self::$dnsResolver)) {
+                try {
+                    $response = self::$dnsResolver->query($host, 'PTR');
+                    foreach ($response->answer as $val) {
+                        if (isset($val->ptrdname)) {
+                            $checkHost = $val->ptrdname;
+                            break;
+                        }
                     }
-                }
-            } else {
+                } catch (Net_DNS2_Exception $e) {}
+            }
+            if (is_null($checkHost)) {
                 $checkHost = @gethostbyaddr($host);
             }
+        } else {
+            $checkHost = $host;
         }
 
         /* Get the TLD of the hostname. */
diff --git a/horde/admin/sessions.php b/horde/admin/sessions.php
index 0c1adefef..f7ca3b4bc 100644
--- a/horde/admin/sessions.php
+++ b/horde/admin/sessions.php
@@ -30,7 +30,7 @@ try {
     $plus = Horde::img('tree/plusonly.png', _("Expand"));
     $minus = Horde::img('tree/minusonly.png', _("Collapse"), 'style="display:none"');
 
-    $resolver = $injector->getInstance('Net_DNS_Resolver');
+    $resolver = $injector->getInstance('Net_DNS2_Resolver');
 
     foreach ($session_info as $id => $data) {
         $entry = array(
@@ -41,10 +41,15 @@ try {
         );
 
         if (!empty($data['remoteAddr'])) {
+            $host = null;
             if ($resolver) {
-                $response = $resolver->query($data['remoteAddr'], 'PTR');
-                $host = $response ? $response->answer[0]->ptrdname : $data['remoteAddr'];
-            } else {
+                try {
+                    if ($response = $resolver->query($data['remoteAddr'], 'PTR')) {
+                        $host = $response->answer[0]->ptrdname;
+                    }
+                } catch (Net_DNS2_Exception $e) {}
+            }
+            if (is_null($host)) {
                 $host = @gethostbyaddr($data['remoteAddr']);
             }
             $entry[_("Remote Host:")] = $host . ' [' . $data['remoteAddr'] . '] ' . Horde_Core_Ui_FlagImage::generateFlagImageByHost($host);
diff --git a/horde/config/conf.xml b/horde/config/conf.xml
index 50aaf9b1a..eacc07eb8 100644
--- a/horde/config/conf.xml
+++ b/horde/config/conf.xml
@@ -1431,20 +1431,6 @@
   
  
 
- 
-  
-   DNS Lookup Settings
-   
-   
-  
- 
-
  
   
    Problem Reporting Settings
diff --git a/horde/docs/CHANGES b/horde/docs/CHANGES
index ecab04847..798807e2e 100644
--- a/horde/docs/CHANGES
+++ b/horde/docs/CHANGES
@@ -2,6 +2,7 @@
 v4.0-cvs
 --------
 
+[cjh] Move from Net_DNS to Net_DNS2.
 [jan] Translations for the framework packages are now bundled with those
       packages.
 [bak] Remove LDAP driver from Horde_SessionHandler
diff --git a/horde/lib/LoginTasks/Task/LastLogin.php b/horde/lib/LoginTasks/Task/LastLogin.php
index 64e4d212f..f004e442c 100644
--- a/horde/lib/LoginTasks/Task/LastLogin.php
+++ b/horde/lib/LoginTasks/Task/LastLogin.php
@@ -54,16 +54,18 @@ class Horde_LoginTasks_Task_LastLogin extends Horde_LoginTasks_Task
             ? $_SERVER['REMOTE_ADDR']
             : $_SERVER['HTTP_X_FORWARDED_FOR'];
 
-        if ($dns = $GLOBALS['injector']->getInstance('Net_DNS_Resolver')) {
+        if ($dns = $GLOBALS['injector']->getInstance('Net_DNS2_Resolver')) {
             $ptrdname = $host;
-            if ($response = $dns->query($host, 'PTR')) {
-                foreach ($response->answer as $val) {
-                    if (isset($val->ptrdname)) {
-                        $ptrdname = $val->ptrdname;
-                        break;
+            try {
+                if ($response = $dns->query($host, 'PTR')) {
+                    foreach ($response->answer as $val) {
+                        if (isset($val->ptrdname)) {
+                            $ptrdname = $val->ptrdname;
+                            break;
+                        }
                     }
                 }
-            }
+            } catch (Net_DNS2_Exception $e) {}
         } else {
             $ptrdname = @gethostbyaddr($host);
         }
diff --git a/horde/lib/Test.php b/horde/lib/Test.php
index 2888d12a0..eec773bee 100644
--- a/horde/lib/Test.php
+++ b/horde/lib/Test.php
@@ -294,8 +294,8 @@ class Horde_Test
         'MDB2' => array(
             'error' => 'You will need MDB2 if you are using the SQL driver for Shares.',
         ),
-        'Net_DNS' => array(
-            'error' => 'Net_DNS can speed up hostname lookups against broken DNS servers.'
+        'Net_DNS2' => array(
+            'error' => 'Net_DNS2 can speed up hostname lookups against broken DNS servers.'
         ),
         'Net_SMTP' => array(
             'error' => 'Make sure you are using the Net_SMTP module if you want "smtp" to work as a mailer option.'
diff --git a/imp/lib/Compose.php b/imp/lib/Compose.php
index e033d4648..1c17852bf 100644
--- a/imp/lib/Compose.php
+++ b/imp/lib/Compose.php
@@ -526,7 +526,7 @@ class IMP_Compose implements ArrayAccess, Countable, Iterator
 
         /* Add a Received header for the hop from browser to server. */
         $headers->addReceivedHeader(array(
-            'dns' => $GLOBALS['injector']->getInstance('Net_DNS_Resolver'),
+            'dns' => $GLOBALS['injector']->getInstance('Net_DNS2_Resolver'),
             'server' => $GLOBALS['conf']['server']['name']
         ));
         $headers->addMessageIdHeader();
diff --git a/imp/lib/Mime/Viewer/Itip.php b/imp/lib/Mime/Viewer/Itip.php
index 1802a3af8..699e6935e 100644
--- a/imp/lib/Mime/Viewer/Itip.php
+++ b/imp/lib/Mime/Viewer/Itip.php
@@ -274,7 +274,7 @@ class IMP_Mime_Viewer_Itip extends Horde_Mime_Viewer_Base
                             new Horde_Itip_Response_Options_Horde(
                                 $charset,
                                 array(
-                                    'dns' => $GLOBALS['injector']->getInstance('Net_DNS_Resolver'),
+                                    'dns' => $GLOBALS['injector']->getInstance('Net_DNS2_Resolver'),
                                     'server' => $GLOBALS['conf']['server']['name']
                                 )
                             ),
-- 
2.11.0