X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_config.inc;h=6dd0527b8a45e7755245a8970ae7d97ea7a8e744;hb=f26f21eeaa557b93458cb63c77bf61d3837b8ac9;hp=e07cb6e53482fe8e59f7ff56692719f73cca4eb0;hpb=4d5e9da0628f2bd5e124fffb4a7c9c492d5ae905;p=gosa.git diff --git a/gosa-core/include/class_config.inc b/gosa-core/include/class_config.inc index e07cb6e53..6dd0527b8 100644 --- a/gosa-core/include/class_config.inc +++ b/gosa-core/include/class_config.inc @@ -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]); } @@ -777,7 +784,7 @@ class config { /* Creates display friendly output from make_idepartments */ - function generateDepartmentArray($arr,$depth = -1,$max_size) + function generateDepartmentArray($arr,$depth = -1,$max_size = 256) { $ret = array(); $depth ++; @@ -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: