X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fhtml%2Fmain.php;h=7b17a5d3e8003bff320431e908a8b4a06fa53752;hb=90747e5966f031a8ab2ac19256c26cc037c838c2;hp=0e0a5eac0352b98a6b9914128ec99ea4821748ce;hpb=c10148339ab6989265ea4f27283f83e7b86909d8;p=gosa.git diff --git a/gosa-core/html/main.php b/gosa-core/html/main.php index 0e0a5eac0..7b17a5d3e 100644 --- a/gosa-core/html/main.php +++ b/gosa-core/html/main.php @@ -23,6 +23,9 @@ /* Save start time */ $start = microtime(); +// Will be used in the "stats" plugin later, to be able calculate the elapsed render time. +$overallRenderTimer = microtime(TRUE); + /* Basic setup, remove eventually registered sessions */ require_once ("../include/php_setup.inc"); require_once ("functions.inc"); @@ -35,12 +38,35 @@ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); + /* Remember everything we did after the last click */ session::start(); session::set('errorsAlreadyPosted',array()); session::global_set('runtime_cache',array()); session::set('limit_exceeded',FALSE); +// Count number of page reloads +if(!session::is_set('clicks')){ + session::set('clicks', 0); +} +$clicks = session::get('clicks'); +$clicks ++ ; +session::set('clicks', $clicks); + + +/* On some systems we can not operate on uploaded tmp files. We need to + * explicitely copy them first + */ +foreach($_FILES as $postName => $entry){ + $tempfile = tempnam(sys_get_temp_dir(), 'GOsa'); + if(move_uploaded_file($_FILES[$postName]['tmp_name'], $tempfile)){ + $_FILES[$postName]['tmp_name'] = $tempfile; + } +} + + +pathNavigator::clear(); + if ($_SERVER["REQUEST_METHOD"] == "POST"){ @DEBUG (DEBUG_POST, __LINE__, __FUNCTION__, __FILE__, $_POST, "_POST"); } @@ -62,9 +88,17 @@ if ($_SERVER['REMOTE_ADDR'] != $ui->ip){ } $config= session::global_get('config'); $config->check_and_reload(); +$config->configRegistry->reload(); + +// Validate LDAP schema if not done already +if( $config->boolValueIsTrue('core','schemaCheck') && + !$config->configRegistry->schemaCheckFinished() && + !$config->configRegistry->validateSchemata($force=FALSE,$disableIncompatiblePlugins=TRUE)){ + $config->configRegistry->displayRequirementErrors(); +} /* Enable compressed output */ -if ($config->get_cfg_value("sendCompressedOutput") == "true"){ +if ($config->get_cfg_value("core","sendCompressedOutput") == "true"){ ob_start("ob_gzhandler"); } @@ -74,7 +108,7 @@ if(session::global_get('_LAST_PAGE_REQUEST') == ""){ }else{ /* check GOsa.conf for defined session lifetime */ - $max_life= $config->get_cfg_value("sessionLifetime", 60*60*2); + $max_life= $config->get_cfg_value("core","sessionLifetime"); /* get time difference between last page reload */ $request_time = (time()- session::global_get('_LAST_PAGE_REQUEST')); @@ -95,7 +129,8 @@ if(session::global_get('_LAST_PAGE_REQUEST') == ""){ @DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config"); /* Set template compile directory */ -$smarty->compile_dir= $config->get_cfg_value("templateCompileDirectory", '/var/spool/gosa'); +$smarty->compile_dir= $config->get_cfg_value("core","templateCompileDirectory"); +$smarty->error_unassigned= true; /* Set default */ $reload_navigation = false; @@ -145,8 +180,8 @@ if (!session::global_is_set('plist')){ require_once("$BASE_DIR/$path"); } else { msg_dialog::display(_("Fatal error"), - sprintf(_("Cannot locate file '%s' - please run '%s' to fix this"), - "$BASE_DIR/$path", "update-gosa"), FATAL_ERROR_DIALOG); + sprintf(_("Cannot locate file %s - please run %s to fix this"), + bold("$BASE_DIR/$path"), bold("update-gosa")), FATAL_ERROR_DIALOG); exit; } } @@ -162,10 +197,10 @@ if (!session::global_is_set('plist')){ $plist= session::global_get('plist'); /* Check for register globals */ -if (isset($global_check) && $config->get_cfg_value("forceglobals") == "true"){ +if (isset($global_check) && $config->boolValueIsTrue("core","forceGlobals")){ msg_dialog::display( _("PHP configuration"), - _("FATAL: Register globals is on. GOsa will refuse to login unless this is fixed by an administrator."), + _("FATAL: Register globals is active. Please fix this in order to continue."), FATAL_ERROR_DIALOG); new log("security","login","",array(),"Register globals is on. For security reasons, this should be turned off.") ; @@ -179,6 +214,40 @@ if (session::global_is_set('plugin_dir')){ } else { $old_plugin_dir= ""; } + +// Generate menus +$plist->gen_headlines(); +$plist->gen_menu(); +$plist->genPathMenu(); + +/* check if we are using account expiration */ +$smarty->assign("hideMenus", FALSE); +if ($config->boolValueIsTrue("core","handleExpiredAccounts")){ + $expired= ldap_expired_account($config, $ui->dn, $ui->username); + + if ($expired == POSIX_WARN_ABOUT_EXPIRATION && !session::is_set('POSIX_WARN_ABOUT_EXPIRATION__DONE')){ + + // The users password is about to xpire soon, display a warning message. + new log("security","gosa","",array(),"password for user \"$ui->username\" is about to expire") ; + msg_dialog::display(_("Password change"), _("Your password is about to expire, please change your password!"), INFO_DIALOG); + session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE); + + } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE){ + + // The password is expired, we are now going to enforce a new one from the user. + + // Hide the GOsa menus to avoid leaving the enforced password change dialog. + $smarty->assign("hideMenus", TRUE); + $plug = (isset($_GET['plug'])) ? $_GET['plug'] : null; + + // Detect password plugin id: + $passId = array_search('password', $plist->pluginList); + if($passId !== FALSE){ + $_GET['plug'] = $passId; + } + } +} + if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])){ $plug= validate($_GET['plug']); $plugin_dir= $plist->get_path($plug); @@ -265,7 +334,9 @@ if (isset($_GET['reset'])){ } /* show web frontend */ -$smarty->assign ("logo", "