-
Côme Chilliet authored
issue #6088
Unverifiedd4a9ca30
<?php
/*
This code is part of FusionDirectory (http://www.fusiondirectory.org/)
Copyright (C) 2003-2010 Cajus Pollmeier
Copyright (C) 2011-2016 FusionDirectory
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/* Load required includes */
require_once("../include/php_setup.inc");
require_once("functions.inc");
require_once("variables.inc");
require_once("class_logging.inc");
/* Set headers */
header('Content-type: text/html; charset=UTF-8');
header('X-XSS-Protection: 1; mode=block');
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: deny');
/**
* @var Smarty $smarty Defined in php_setup.inc
* @var string $BASE_DIR Defined in php_setup.inc
* @var string $ssl Defined in php_setup.inc
*/
/*****************************************************************************
* M A I N *
*****************************************************************************/
/* Set error handler to own one, initialize time calculation
and start session. */
session::start();
if (isset($_REQUEST['signout']) && $_REQUEST['signout']) {
$reason = '';
if (session::is_set('connected')) {
$config = session::get('config');
if (
($config->get_cfg_value('casActivated') == 'TRUE') ||
($config->get_cfg_value('LoginMethod') === 'LoginCAS')
) {
LoginCAS::initCAS();
phpCAS::logout();
}
$reason = 'Sign out';
if (isset($_REQUEST['message'])) {
switch ($_REQUEST['message']) {
case 'expired':
$reason = 'Session expired';
break;
case 'invalidparameter':
$reason = sprintf('Invalid plugin parameter "%s"!', $_REQUEST['plug']);
break;
case 'nosession':
$reason = 'No session found';
break;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
default:
}
}
}
session::destroy($reason);
session::start();
}
/* Reset errors */
reset_errors();
/* Check if we need to run setup */
if (!file_exists(CONFIG_DIR.'/'.CONFIG_FILE)) {
header('location:setup.php');
exit();
}
/* Check if fusiondirectory.conf (.CONFIG_FILE) is accessible */
if (!is_readable(CONFIG_DIR.'/'.CONFIG_FILE)) {
throw new FatalError(
htmlescape(sprintf(
_('FusionDirectory configuration %s/%s is not readable. Please run fusiondirectory-setup --check-config to fix this.'),
CONFIG_DIR,
CONFIG_FILE
))
);
}
/* Parse configuration file */
$config = new config(CONFIG_DIR.'/'.CONFIG_FILE, $BASE_DIR);
session::set('config', $config);
session::set('DEBUGLEVEL', $config->get_cfg_value('DEBUGLEVEL'));
logging::debug(DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, 'config');
/* Configuration was reloaded, so plist needs to be as well */
session::un_set('plist');
unset($plist);
/* Set template compile directory */
$smarty->setCompileDir($config->get_cfg_value('templateCompileDirectory', SPOOL_DIR));
/* Check for compile directory */
if (!(is_dir($smarty->getCompileDir()) && is_writable($smarty->getCompileDir()))) {
throw new FatalError(
htmlescape(sprintf(
_('Directory "%s" specified as compile directory is not accessible!'),
$smarty->getCompileDir()
))
);
}
/* Check for old files in compile directory */
clean_smarty_compile_dir($smarty->getCompileDir());
Language::init();
if (isset($_POST['server'])) {
$server = $_POST['server'];
} else {
$server = $config->data['MAIN']['DEFAULT'];
}
$config->set_current($server);
if (
($config->get_cfg_value('casActivated') == 'TRUE') ||
($config->get_cfg_value('httpAuthActivated') == 'TRUE') ||
($config->get_cfg_value('httpHeaderAuthActivated') == 'TRUE') ||
in_array($config->get_cfg_value('LoginMethod'), ['LoginCas', 'LoginHTTPAuth', 'LoginHTTPHeader'])) {
session::set('DEBUGLEVEL', 0);
}
141142143144145146147148149150151152153154155156157158159160161162163164
/* If SSL is forced, just forward to the SSL enabled site */
if (($config->get_cfg_value('forcessl') == 'TRUE') && ($ssl != '')) {
header("Location: $ssl");
exit;
}
if (isset($_REQUEST['message'])) {
switch ($_REQUEST['message']) {
case 'expired':
$message = _('Your FusionDirectory session has expired!');
break;
case 'invalidparameter':
$message = sprintf(_('Invalid plugin parameter "%s"!'), $_REQUEST['plug']);
break;
case 'nosession':
$message = _('No session found!');
break;
default:
$message = $_REQUEST['message'];
}
}
LoginMethod::loginProcess();