Code

Updated class_acl.inc
[gosa.git] / gosa-core / include / class_config.inc
index 1195e50343555f99c53a654f18d4071a53b1752f..6dd0527b8a45e7755245a8970ae7d97ea7a8e744 100644 (file)
@@ -75,16 +75,14 @@ class config  {
     /* Check if class_location.inc has changed, this is the case 
         if we have installed or removed plugins. 
      */
-    if(session::is_set("class_location.inc:timestamp")){
+    if(session::global_is_set("class_location.inc:timestamp")){
       $tmp = stat("../include/class_location.inc");
-      if($tmp['mtime'] != session::get("class_location.inc:timestamp")){
-        session::un_set("plist");
+      if($tmp['mtime'] != session::global_get("class_location.inc:timestamp")){
+        session::global_un_set("plist");
       }
     }
     $tmp = stat("../include/class_location.inc");
-    session::set("class_location.inc:timestamp",$tmp['mtime']);
-
-
+    session::global_set("class_location.inc:timestamp",$tmp['mtime']);
 
     if($this->filename != "" && filemtime($this->filename) != $this->last_modified){
 
@@ -99,26 +97,26 @@ class config  {
       xml_set_object($this->parser, $this);
       xml_set_element_handler($this->parser, "tag_open", "tag_close");
       $this->parse($this->filename);
-#     if(session::is_set('plist')){
-#       session::un_set('plist');
-#     }
-#     if(session::is_set('plug')){
-#       session::un_set('plug');
-#     }
-#     if(isset($_GET['plug'])){
-#       unset($_GET['plug']);
-#     }
+      $this->set_current($this->current['NAME']);
     }
   }  
 
 
   function parse($filename)
-  { 
+  {
+
+    $this->data = array(
+        "TABS"      => array(), 
+        "LOCATIONS" => array(), 
+        "MAIN"      => array(), 
+        "MENU"      => array(), 
+        "SERVICE"   => array());
+
     $this->last_modified = filemtime($filename);
     $this->filename = $filename;
     $fh= fopen($filename, "r"); 
     $xmldata= fread($fh, 100000);
-    fclose($fh); 
+    fclose($fh);
     if(!xml_parse($this->parser, chop($xmldata))){
       $msg = sprintf(_("XML error in gosa.conf: %s at line %d"),
             xml_error_string(xml_get_error_code($this->parser)),
@@ -240,7 +238,15 @@ class config  {
   function get_credentials($creds)
   {
     if (isset($_SERVER['HTTP_GOSA_KEY'])){
-      return (cred_decrypt($creds, $_SERVER['HTTP_GOSA_KEY']));
+      if (!session::global_is_set('HTTP_GOSA_KEY_CACHE')){
+        session::global_set('HTTP_GOSA_KEY_CACHE',array());
+      }
+      $cache = session::global_get('HTTP_GOSA_KEY_CACHE');
+      if(!isset($cache[$creds])){
+        $cache[$creds] = cred_decrypt($creds, $_SERVER['HTTP_GOSA_KEY']);
+        session::global_set('HTTP_GOSA_KEY_CACHE',$cache);
+      }
+      return ($cache[$creds]);
     }
     return ($creds);
   }
@@ -268,15 +274,15 @@ class config  {
         $this->ldap->referrals= $this->current['REFERRAL'];
       }
 
-      if (!session::is_set('size_limit')){
-        session::set('size_limit',$this->current['LDAPSIZELIMIT']);
-        session::set('size_ignore',$this->current['LDAPSIZEIGNORE']);
+      if (!session::global_is_set('size_limit')){
+        session::global_set('size_limit',$this->current['LDAPSIZELIMIT']);
+        session::global_set('size_ignore',$this->current['LDAPSIZEIGNORE']);
       }
     }
 
     $obj  = new ldapMultiplexer($this->ldap);
     if ($sizelimit){
-      $obj->set_size_limit(session::get('size_limit'));
+      $obj->set_size_limit(session::global_get('size_limit'));
     } else {
       $obj->set_size_limit(0);
     }
@@ -298,7 +304,7 @@ class config  {
     }
 
     if (isset($this->current['INITIAL_BASE'])){
-      session::set('CurrentMainBase',$this->current['INITIAL_BASE']);
+      session::global_set('CurrentMainBase',$this->current['INITIAL_BASE']);
     }
   
     /* Remove possibly added ',' from end of group and people ou */
@@ -308,9 +314,6 @@ class config  {
     if (!isset($this->current['SAMBAMACHINEACCOUNTRDN'])){
       $this->current['SAMBAMACHINEACCOUNTRDN']= "ou=winstations,ou=systems";
     }
-    if (!isset($this->current['HASH'])){
-      $this->current['HASH']= "crypt";
-    }
     if (!isset($this->current['ACCOUNTPRIMARYATTRIBUTE'])){
       $this->current['ACCOUNTPRIMARYATTRIBUTE']= "cn";
     }
@@ -379,6 +382,10 @@ class config  {
     /* Fill imap servers */
     $ldap= $this->get_ldap_link();
     $ldap->cd ($this->current['BASE']);
+
+    /* Search mailMethod konfiguration in main section too 
+     */
+    $this->current['MAILMETHOD'] = $this->get_cfg_value("mailMethod","");
     if (!isset($this->current['MAILMETHOD'])){
       $this->current['MAILMETHOD']= "";
     }
@@ -523,12 +530,12 @@ class config  {
     $ldap->search ("(objectClass=goLogDBServer)");
     if ($ldap->count()){
       $attrs= $ldap->fetch();
-      if(!isset($attrs['goLogDB'][0])){
-        $attrs['goLogDB'][0] = "gomon";
+      if(!isset($attrs['gosaLogDB'][0])){
+        $attrs['gosaLogDB'][0] = "gomon";
       }
       $this->data['SERVERS']['LOG']= array( 'SERVER' => $attrs['cn'][0],
           'LOGIN' => $attrs['goLogAdmin'][0],
-          'DB' => $attrs['goLogDB'][0],
+          'DB' => $attrs['gosaLogDB'][0],
           'PASSWORD' => $attrs['goLogPassword'][0]);
     }
 
@@ -965,11 +972,11 @@ class config  {
   {
     /* Skip check, if we've already mentioned the mismatch 
      */
-    if(session::is_set("LastChecked") && session::get("LastChecked") == $this->config_version) return;
+    if(session::global_is_set("LastChecked") && session::global_get("LastChecked") == $this->config_version) return;
   
     /* Remember last checked version 
      */
-    session::set("LastChecked",$this->config_version);
+    session::global_set("LastChecked",$this->config_version);
 
     $current = md5(file_get_contents(CONFIG_TEMPLATE_DIR."/gosa.conf"));
 
@@ -998,6 +1005,63 @@ class config  {
       return(TRUE);
     }
   }
+
+  /* Returns true if snapshots are enabled, and false if it is disalbed
+     There will also be some errors psoted, if the configuration failed */
+  function snapshotEnabled()
+  {
+    if($this->get_cfg_value("enableSnapshots") == "true"){
+
+      /* Check if the snapshot_base is defined */
+      if ($this->get_cfg_value("snapshotBase") == ""){
+
+        /* Send message if not done already */
+        if(!session::is_set("snapshotFailMessageSend")){
+          session::set("snapshotFailMessageSend",TRUE);
+          msg_dialog::display(_("Configuration error"),
+              sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),
+                      "snapshotBase"), ERROR_DIALOG);
+        }
+        return(FALSE);
+      }
+
+      /* Check if the snapshot_base is defined */
+      if (!is_callable("gzcompress")){
+
+        /* Send message if not done already */
+        if(!session::is_set("snapshotFailMessageSend")){
+          session::set("snapshotFailMessageSend",TRUE);
+          msg_dialog::display(_("Configuration error"),
+              sprintf(_("The snapshot functionality is enabled, but the required compression module is missing. Please install '%s'."),"php5-zip / php5-gzip"), ERROR_DIALOG);
+        }
+        return(FALSE);
+      }
+
+      /* check if there are special server configurations for snapshots */
+      if ($this->get_cfg_value("snapshotURI") != ""){
+
+        /* check if all required vars are available to create a new ldap connection */
+        $missing = "";
+        foreach(array("snapshotURI","snapshotAdminDn","snapshotAdminPassword","snapshotBase") as $var){
+          if($this->get_cfg_value($var) == ""){
+            $missing .= $var." ";
+
+            /* Send message if not done already */
+            if(!session::is_set("snapshotFailMessageSend")){
+              session::set("snapshotFailMessageSend",TRUE);
+              msg_dialog::display(_("Configuration error"),
+                  sprintf(_("The snapshot functionality is enabled, but the required variable '%s' is not set."),
+                    $missing), ERROR_DIALOG);
+            }
+            return(FALSE);
+          }
+                    }
+            }
+            return(TRUE);
+    }
+    return(FALSE);
+  }
+
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: