X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Fhtml%2Fmain.php;h=7b17a5d3e8003bff320431e908a8b4a06fa53752;hb=90747e5966f031a8ab2ac19256c26cc037c838c2;hp=3c799e8c0227aa881d30eb23bde74cd87bcf78ee;hpb=660b82d171877469593f566730e5ad1ec4b0166b;p=gosa.git diff --git a/gosa-core/html/main.php b/gosa-core/html/main.php index 3c799e8c0..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,8 +334,12 @@ if (isset($_GET['reset'])){ } /* show web frontend */ +$smarty->assign ("title","GOsa"); +$smarty->assign ("logo", image(get_template_path("images/logo.png"))); +$smarty->assign ("logoutimage", get_template_path("images/btn-logout.png")); $smarty->assign ("date", date("l, dS F Y H:i:s O")); -$smarty->assign ("must", "*"); +$smarty->assign ("lang", preg_replace('/_.*$/', '', $lang)); +$smarty->assign ("must", "*"); if (isset($plug)){ $plug= "?plug=$plug"; } else { @@ -280,11 +353,14 @@ if (session::global_get('js')==FALSE){ $smarty->assign("help_method"," onclick=\"return popup('helpviewer.php$plug','GOsa help');\""); } + +$loggedin = sprintf(_("You're logged in as %s"), + "".$ui->cn." [".$ui->username."] / ".$config->current['NAME']."  "); if($ui->ignore_acl_for_current_user()){ - $smarty->assign ("username", ""._("User ACL checks disabled")." ".$ui->username); -}else{ - $smarty->assign ("username", $ui->username); + $loggedin = ""._("ACLs are disabled")." ".$loggedin; } + +$smarty->assign ("loggedin", $loggedin); $smarty->assign ("go_logo", get_template_path('images/go_logo.png')); $smarty->assign ("go_base", get_template_path('images/dtree.png')); $smarty->assign ("go_home", get_template_path('images/gohome.png')); @@ -298,35 +374,30 @@ $smarty->assign ("go_help", get_template_path('images/help.png')); if($reload_navigation){ $plist->menu=""; } -$plist->gen_headlines(); -$plist->gen_menu(); -$smarty->assign ("menu", $plist->menu); +$smarty->assign ("menu", $plist->gen_menu()); $smarty->assign ("plug", "$plug"); -$smarty->assign("iePngWorkaround", $config->get_cfg_value("iePngWorkaround","false" ) == "true"); -$header= "".$smarty->fetch(get_template_path('headers.tpl')); /* React on clicks */ if ($_SERVER["REQUEST_METHOD"] == "POST"){ if (isset($_POST['delete_lock']) || isset($_POST['open_readonly'])){ /* Set old Post data */ - if(session::global_is_set('LOCK_VARS_USED')){ - foreach(session::global_get('LOCK_VARS_USED') as $name => $value){ + if(session::global_is_set('LOCK_VARS_USED_GET')){ + foreach(session::global_get('LOCK_VARS_USED_GET') as $name => $value){ $_GET[$name] = $value; + } + } + if(session::global_is_set('LOCK_VARS_USED_POST')){ + foreach(session::global_get('LOCK_VARS_USED_POST') as $name => $value){ $_POST[$name] = $value; } } - } -} - -/* check if we are using account expiration */ -if ($config->get_cfg_value("handleExpiredAccounts") == "true"){ - $expired= ldap_expired_account($config, $ui->dn, $ui->username); - - if ($expired == 2){ - 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); + if(session::global_is_set('LOCK_VARS_USED_REQUEST')){ + foreach(session::global_get('LOCK_VARS_USED_REQUEST') as $name => $value){ + $_REQUEST[$name] = $value; + } + } } } @@ -336,8 +407,8 @@ if (is_file("$plugin_dir/main.inc")){ require ("$plugin_dir/main.inc"); } else { msg_dialog::display( - _("Plugin"), - sprintf(_("FATAL: Cannot find any plugin definitions for plugin '%s'!"), $plug), + _("Plug-in"), + sprintf(_("FATAL: Cannot find any plugin definitions for plugin %s!"), bold($plug)), FATAL_ERROR_DIALOG); exit(); } @@ -345,7 +416,9 @@ if (is_file("$plugin_dir/main.inc")){ /* Print_out last ErrorMessage repeated string. */ $smarty->assign("msg_dialogs", msg_dialog::get_dialogs()); +$smarty->assign ("pathMenu", $plist->genPathMenu()); $smarty->assign("contents", $display); +$smarty->assign("sessionLifetime", $config->get_cfg_value('core','sessionLifetime')); /* If there's some post, take a look if everything is there... */ if (isset($_POST) && count($_POST)){ @@ -398,7 +471,8 @@ if (isset($_POST['_channel_'])){ $smarty->assign("channel", ""); } -$display= $header.$smarty->fetch(get_template_path('framework.tpl')); +$display= "".$smarty->fetch(get_template_path('headers.tpl')). + $smarty->fetch(get_template_path('framework.tpl')); /* Save dialog filters and selected base in a cookie. So we may be able to restore the filter an base settings on reload. @@ -412,7 +486,7 @@ if(isset($_COOKIE['GOsa_Filter_Settings'])){ } /* Save filters? */ -if($config->get_cfg_value("storeFilterSettings") == "true"){ +if($config->get_cfg_value("core","storeFilterSettings") == "true"){ $cookie_vars = array("MultiDialogFilters","CurrentMainBase"); foreach($cookie_vars as $var){ if(session::global_is_set($var)){