Code

Updated several service dialogs, fixed typos, string, html, post handling and more.
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 26 Jul 2010 15:46:23 +0000 (15:46 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 26 Jul 2010 15:46:23 +0000 (15:46 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@19115 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-plugins/apache2/admin/systems/services/apache2/class_apacheUtils.inc

index a827baaccd7f2c07d9e626142bba1a64f9dfae5f..22a0a5ddfe2438bbf4e6e5eb5f58bdfaacdc2d4c 100644 (file)
 class apacheUtils extends plugin
 {
 
-       /* This function returns the vhost entries specified for given host
-        */
-       public static function getVhostEntries($config,$HostDn,$silent = false)
-       {
-
-         $ldap = $config->get_ldap_link();
-         $ldap->cd($config->current['BASE']); 
-
-         /* Get host entry */
-         $ldap->cat($HostDn);
-         $host_attr = $ldap->fetch();
-
-         /* Create template for all fetched vhosts Data 
-          */
-         $VhostBase = array();
-         $VhostBase['exists']  = false;
-         //$VhostBase['RECORDS'] = array();
-         $VhostBase['apacheServerName'] = array();
-         $VhostBase['apacheConfig'] = array();
-           
-         $Vhosts    = array();
-
-         /* Get & Parse all vhosts entries 
-          */
-         $ldap->ls("(&(objectClass=apacheConfig)(apacheServerName=*))",$HostDn,array("*"));
-         $tmp_res = array();
-         while($attrs = $ldap->fetch()) {
-           $tmp_res[] = $attrs;
-         }
-
-         /* Parse fetched vhosts 
-          */
-         foreach($tmp_res as $attrs){
-
-           $apacheServerName                    = $attrs['apacheServerName'][0];
-           $apacheDocumentRoot                  = $attrs['apacheDocumentRoot'][0];
-           $apacheServerAdmin                   = $attrs['apacheServerAdmin'][0];
-           $Vhosts[$apacheServerName]           = $VhostBase;
-           $Vhosts[$apacheServerName]['exists'] = true;
-
-           /* Set basic attributes 
-            */
-           if(isset($attrs["apacheConfig"][0])){
-             $Vhosts[$apacheServerName]["apacheConfig"] = $attrs["apacheConfig"][0];
-           }
-
-           /* Set initial vhosts name, to be able to detect if this entry was renamed 
-            */
-           $Vhosts[$apacheServerName]['InitialApacheServerName'] = $apacheServerName;
-           $Vhosts[$apacheServerName]['apacheServerName'] = $apacheServerName;
-           $Vhosts[$apacheServerName]['apacheDocumentRoot'] = $apacheDocumentRoot;
-           $Vhosts[$apacheServerName]['apacheServerAdmin'] = $apacheServerAdmin;
-
-         
-           if (isset($attrs['apacheServerAlias'])){
-               for($i = 0 ; $i < $attrs['apacheServerAlias']['count']; $i ++){
-                       $Vhosts[$apacheServerName]['apacheServerAlias'][] =  $attrs['apacheServerAlias'][$i];
-               }
-           }
-           
-               if (isset($attrs['apacheScriptAlias'])){
-               for($i = 0 ; $i < $attrs['apacheScriptAlias']['count']; $i ++){
-                       $Vhosts[$apacheServerName]['apacheScriptAlias'][] =  $attrs['apacheScriptAlias'][$i];
-               }
-           }
-
-         }     
-         return($Vhosts);
-       }
-
-
-       /* This function compares two apache vhosts objects and returns an 
-        *  array with following indexes 
-        *   - delete, for vhost entries which must be deleted (only if vhost entries is removed)
-        *   - rename, if a dn must be renamed, for example, the apacheServerName has changed
-        *   - add,    if there is a new vhost entries created    
-        */
-       public static function getVhostEntriesDiff($config,$newVhosts,$HostDn)
-       {
-         $oldVhosts = apacheUtils::getVhostEntries($config,$HostDn,true);
-
-         $move   = array();
-         $add    = array();
-         $del    = array();
-
-         /* Generate a template for vhosts with default values
-          */
-         $zoneBase                       = array();
-         $zoneBase['objectClass']        = array("top","apacheConfig");
-         $zoneBase['apacheServerName']           = "";
-
-         /* Contains all renamed apacheServerNames 
-          * For vhosts entry udpdates
-          */
-         $PrePareVhostEntries = array();
-
-         /* Walk through all vhosts and detect renamed/added/deleted vhosts ... 
-          */
-         foreach($newVhosts as $name => $zone){
-           
-           /* This vhosts was renamed 
-            */
-           if((!empty($zone['InitialApacheServerName'])) && ($zone['InitialApacheServerName'] != $zone['apacheServerName'])){
-             
-             /* Move old vhosts to new position 
-              */ 
-             $oldDn = "apacheServerName=".$zone['InitialApacheServerName'].",".$HostDn;
-             $newDn = "apacheServerName=".$zone['apacheServerName'].",".$HostDn;
-             $PrePareVhostEntries[$zone['InitialApacheServerName']] = $zone['apacheServerName'];
-             $move [$oldDn] = $newDn;      
-           }
-
-           /* Get old vhosts if available
-            */
-           $oldVhost=array();
-           if(isset($oldVhosts[$zone['InitialApacheServerName']])){
-                   if(!empty($oldVhosts[$zone['InitialApacheServerName']])){
-                     $oldVhost = $oldVhosts[$zone['InitialApacheServerName']];
-                   }
-           }
-
-           /* Create vhosts entry and put it in our add queue
-            */
-           $newDn  = "apacheServerName=".$zone['apacheServerName'].",".$HostDn;
-           $obj    =  $zoneBase;
-           $obj['apacheServerName'] = $zone['apacheServerName'];
-                       $obj['apacheDocumentRoot'] = $zone['apacheDocumentRoot'];
-                       $obj['apacheServerAdmin'] = $zone['apacheServerAdmin'];
-        
-                       if(!empty($zone['apacheServerAlias'])) {
-                       
-                               foreach($zone['apacheServerAlias'] as $rec){
-               $obj['apacheServerAlias'][] = $rec;
-               }
-           }
-           
-                       if(!empty($zone['apacheScriptAlias'])) {
-                               foreach($zone['apacheScriptAlias'] as $rec){
-               $obj['apacheScriptAlias'][] = $rec;
-               }
-                       }
-                       
-           /* Append udpated Vhost Entry to our add queue
-            */    
-           $add[$newDn] = $obj;   
-        
-           /* Remove currently managed vhosts from oldVhosts.
-            *  this gives us the ability to detect removed vhosts
-            */
-           if(isset($oldVhosts[$zone['InitialApacheServerName']])){
-             unset($oldVhosts[$zone['InitialApacheServerName']]);
-           }
-         }
-        
-         /* The rest of our oldVhosts must be deleted
-          *  because they are no longer available in newVhosts anymore.
-          */
-         foreach($oldVhosts as $zone)  {
-           $oldDn = "apacheServerName=".$zone['InitialApacheServerName'].",".$HostDn;
-           $del[$oldDn] = "";
-         }
-
-         /* Check for entries which must be updated 
-          */
-         $zoneUpdates = array();
-         $udpate = array();
-         if(count($PrePareVhostEntries)){
-           $ldap = $config->get_ldap_link();
-           foreach($PrePareVhostEntries as $FromVhostName => $ToVhostName){
-             $ldap->cd($HostDn);
-             $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=".$FromVhostName."))",array("apacheServerName"));
-             while($attrs = $ldap->fetch()){
-               $zoneUpdates[$attrs['dn']] = array("apacheServerName"=>$ToVhostName);
-             }
-           }
-         }
-
-         $ret = array("del" => $del , "move" => $move , "add" => $add,"vhostUpdates"=>$zoneUpdates);
-       //      user_error(print_r($ret,true));
-         return($ret);
-       }
-
-       /* returns the dn for a specified zone
-        */
-       function getVhostDN($config,$apacheServerNameMix)
-       {
-         $ret = "";
-         if(!strstr($apacheServerNameMix, '/')) {
-           print_red(sprintf(_("Undefined vhost name '%s'. Vhost name must look like this 'www.example.com or example.com'."),$apacheServerNameMix));
-           return($ret);
-         }
-
-         $apacheServerNameIndex        = explode("/",$apacheServerNameMix); 
-         $apacheServerName           = $apacheServerNameIndex[1];
-         $nameServer                   = strtolower($apacheServerNameIndex[0]);
-         $ldap               = $config->get_ldap_link();
-
-         /* search for the nameserver */
-         $ldap-> cd($config->current['BASE']);
-         $ldap->search("(&(objectClass=goServer)(cn=".$nameServer."))",array("cn"));
-         if($ldap->count()){
-           $attr = $ldap->fetch();
-         } else {
-           return($ret);
-         }
-         
-         $ldap-> cd($attr['dn']);
-         $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=".$apacheServerName."))",array("apacheServerName"));
-         if($ldap->count()){
-           $attr = $ldap->fetch();
-           return($attr['dn']);
-         }
-         
-         return($ret);
-       }
-
-
-       /* returns all available vhosts
-        *  array[reverseName] = apacheServerName;
-        */
-       function getAvailableVhosts($config)
-       {
-         $ret = array();
-         $ldap = $config->get_ldap_link();
-         $ldap->cd ($config->current['BASE']);
-
-         /* Search for vhosts ...
-          */
-         $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=*))",array("apacheServerName"));
-
-         $ForwardVhosts = array();
-         $zones = array();
-
-         while($at = $ldap->fetch()){
-           $ForwardVhosts[$at['dn']] = $at;
-         }
-
-         foreach($ForwardVhosts as $dn => $obj){
-           
-             if(preg_match("/".$dn."/",$Rdn)){
-               $zones[$Robj['apacheServerName'][0]] =$obj['apacheServerName'][0];
-             }   
-         }
-         return($zones);
-       }
+    /* This function returns the vhost entries specified for given host
+     */
+    public static function getVhostEntries($config,$HostDn,$silent = false)
+    {
+
+        $ldap = $config->get_ldap_link();
+        $ldap->cd($config->current['BASE']); 
+
+        /* Get host entry */
+        $ldap->cat($HostDn);
+        $host_attr = $ldap->fetch();
+
+        /* Create template for all fetched vhosts Data 
+         */
+        $VhostBase = array();
+        $VhostBase['exists']  = false;
+        //$VhostBase['RECORDS'] = array();
+        $VhostBase['apacheServerName'] = array();
+        $VhostBase['apacheConfig'] = array();
+
+        $Vhosts    = array();
+
+        /* Get & Parse all vhosts entries 
+         */
+        $ldap->ls("(&(objectClass=apacheConfig)(apacheServerName=*))",$HostDn,array("*"));
+        $tmp_res = array();
+        while($attrs = $ldap->fetch()) {
+            $tmp_res[] = $attrs;
+        }
+
+        /* Parse fetched vhosts 
+         */
+        foreach($tmp_res as $attrs){
+
+            $apacheServerName                    = $attrs['apacheServerName'][0];
+            $apacheDocumentRoot                  = $attrs['apacheDocumentRoot'][0];
+            $apacheServerAdmin                   = $attrs['apacheServerAdmin'][0];
+            $Vhosts[$apacheServerName]           = $VhostBase;
+            $Vhosts[$apacheServerName]['exists'] = true;
+
+            /* Set basic attributes 
+             */
+            if(isset($attrs["apacheConfig"][0])){
+                $Vhosts[$apacheServerName]["apacheConfig"] = $attrs["apacheConfig"][0];
+            }
+
+            /* Set initial vhosts name, to be able to detect if this entry was renamed 
+             */
+            $Vhosts[$apacheServerName]['InitialApacheServerName'] = $apacheServerName;
+            $Vhosts[$apacheServerName]['apacheServerName'] = $apacheServerName;
+            $Vhosts[$apacheServerName]['apacheDocumentRoot'] = $apacheDocumentRoot;
+            $Vhosts[$apacheServerName]['apacheServerAdmin'] = $apacheServerAdmin;
+
+
+            if (isset($attrs['apacheServerAlias'])){
+                for($i = 0 ; $i < $attrs['apacheServerAlias']['count']; $i ++){
+                    $Vhosts[$apacheServerName]['apacheServerAlias'][] =  $attrs['apacheServerAlias'][$i];
+                }
+            }
+
+            if (isset($attrs['apacheScriptAlias'])){
+                for($i = 0 ; $i < $attrs['apacheScriptAlias']['count']; $i ++){
+                    $Vhosts[$apacheServerName]['apacheScriptAlias'][] =  $attrs['apacheScriptAlias'][$i];
+                }
+            }
+
+        }      
+        return($Vhosts);
+    }
+
+
+    /* This function compares two apache vhosts objects and returns an 
+     *  array with following indexes 
+     *   - delete, for vhost entries which must be deleted (only if vhost entries is removed)
+     *   - rename, if a dn must be renamed, for example, the apacheServerName has changed
+     *   - add,    if there is a new vhost entries created    
+     */
+    public static function getVhostEntriesDiff($config,$newVhosts,$HostDn)
+    {
+        $oldVhosts = apacheUtils::getVhostEntries($config,$HostDn,true);
+
+        $move   = array();
+        $add    = array();
+        $del    = array();
+
+        /* Generate a template for vhosts with default values
+         */
+        $zoneBase                       = array();
+        $zoneBase['objectClass']        = array("top","apacheConfig");
+        $zoneBase['apacheServerName']           = "";
+
+        /* Contains all renamed apacheServerNames 
+         * For vhosts entry udpdates
+         */
+        $PrePareVhostEntries = array();
+
+        /* Walk through all vhosts and detect renamed/added/deleted vhosts ... 
+         */
+        foreach($newVhosts as $name => $zone){
+
+            /* This vhosts was renamed 
+             */
+            if((!empty($zone['InitialApacheServerName'])) && ($zone['InitialApacheServerName'] != $zone['apacheServerName'])){
+
+                /* Move old vhosts to new position 
+                 */ 
+                $oldDn = "apacheServerName=".$zone['InitialApacheServerName'].",".$HostDn;
+                $newDn = "apacheServerName=".$zone['apacheServerName'].",".$HostDn;
+                $PrePareVhostEntries[$zone['InitialApacheServerName']] = $zone['apacheServerName'];
+                $move [$oldDn] = $newDn;      
+            }
+
+            /* Get old vhosts if available
+             */
+            $oldVhost=array();
+            if(isset($oldVhosts[$zone['InitialApacheServerName']])){
+                if(!empty($oldVhosts[$zone['InitialApacheServerName']])){
+                    $oldVhost = $oldVhosts[$zone['InitialApacheServerName']];
+                }
+            }
+
+            /* Create vhosts entry and put it in our add queue
+             */
+            $newDn  = "apacheServerName=".$zone['apacheServerName'].",".$HostDn;
+            $obj    =  $zoneBase;
+            $obj['apacheServerName'] = $zone['apacheServerName'];
+            $obj['apacheDocumentRoot'] = $zone['apacheDocumentRoot'];
+            $obj['apacheServerAdmin'] = $zone['apacheServerAdmin'];
+
+            if(!empty($zone['apacheServerAlias'])) {
+
+                foreach($zone['apacheServerAlias'] as $rec){
+                    $obj['apacheServerAlias'][] = $rec;
+                }
+            }
+
+            if(!empty($zone['apacheScriptAlias'])) {
+                foreach($zone['apacheScriptAlias'] as $rec){
+                    $obj['apacheScriptAlias'][] = $rec;
+                }
+            }
+
+            /* Append udpated Vhost Entry to our add queue
+             */    
+            $add[$newDn] = $obj;   
+
+            /* Remove currently managed vhosts from oldVhosts.
+             *  this gives us the ability to detect removed vhosts
+             */
+            if(isset($oldVhosts[$zone['InitialApacheServerName']])){
+                unset($oldVhosts[$zone['InitialApacheServerName']]);
+            }
+        }
+
+        /* The rest of our oldVhosts must be deleted
+         *  because they are no longer available in newVhosts anymore.
+         */
+        foreach($oldVhosts as $zone)  {
+            $oldDn = "apacheServerName=".$zone['InitialApacheServerName'].",".$HostDn;
+            $del[$oldDn] = "";
+        }
+
+        /* Check for entries which must be updated 
+         */
+        $zoneUpdates = array();
+        $udpate = array();
+        if(count($PrePareVhostEntries)){
+            $ldap = $config->get_ldap_link();
+            foreach($PrePareVhostEntries as $FromVhostName => $ToVhostName){
+                $ldap->cd($HostDn);
+                $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=".$FromVhostName."))",array("apacheServerName"));
+                while($attrs = $ldap->fetch()){
+                    $zoneUpdates[$attrs['dn']] = array("apacheServerName"=>$ToVhostName);
+                }
+            }
+        }
+
+        $ret = array("del" => $del , "move" => $move , "add" => $add,"vhostUpdates"=>$zoneUpdates);
+        //     user_error(print_r($ret,true));
+        return($ret);
+    }
+
+    /* returns the dn for a specified zone
+     */
+    function getVhostDN($config,$apacheServerNameMix)
+    {
+        $ret = "";
+        if(!strstr($apacheServerNameMix, '/')) {
+            print_red(sprintf(_("Undefined vhost name '%s'. Vhost name must look like this 'www.example.com or example.com'."),$apacheServerNameMix));
+            return($ret);
+        }
+
+        $apacheServerNameIndex         = explode("/",$apacheServerNameMix); 
+        $apacheServerName           = $apacheServerNameIndex[1];
+        $nameServer                    = strtolower($apacheServerNameIndex[0]);
+        $ldap               = $config->get_ldap_link();
+
+        /* search for the nameserver */
+        $ldap-> cd($config->current['BASE']);
+        $ldap->search("(&(objectClass=goServer)(cn=".$nameServer."))",array("cn"));
+        if($ldap->count()){
+            $attr = $ldap->fetch();
+        } else {
+            return($ret);
+        }
+
+        $ldap-> cd($attr['dn']);
+        $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=".$apacheServerName."))",array("apacheServerName"));
+        if($ldap->count()){
+            $attr = $ldap->fetch();
+            return($attr['dn']);
+        }
+
+        return($ret);
+    }
+
+
+    /* returns all available vhosts
+     *  array[reverseName] = apacheServerName;
+     */
+    function getAvailableVhosts($config)
+    {
+        $ret = array();
+        $ldap = $config->get_ldap_link();
+        $ldap->cd ($config->current['BASE']);
+
+        /* Search for vhosts ...
+         */
+        $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=*))",array("apacheServerName"));
+
+        $ForwardVhosts = array();
+        $zones = array();
+
+        while($at = $ldap->fetch()){
+            $ForwardVhosts[$at['dn']] = $at;
+        }
+
+        foreach($ForwardVhosts as $dn => $obj){
+
+            if(preg_match("/".$dn."/",$Rdn)){
+                $zones[$Robj['apacheServerName'][0]] =$obj['apacheServerName'][0];
+            }   
+        }
+        return($zones);
+    }
 }
 
 ?>