An error occurred while loading the file. Please try again.
-
Côme Chilliet authored
issue #5854
36e81538
<?php
/*
This code is part of FusionDirectory (http://www.fusiondirectory.org/)
Copyright (C) 2003-2010 Cajus Pollmeier
Copyright (C) 2011-2018 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.
*/
/* base class for passwordRecovery and such classes handling requests on their own */
class standAlonePage {
protected $directory;
protected $activated;
protected $interactive;
/* Constructor */
function __construct($interactive = TRUE)
{
global $config, $ssl, $ui;
$this->interactive = $interactive;
/* Destroy old session if exists.
Else you will get your old session back, if you not logged out correctly. */
session::destroy();
session::start();
$config = $this->loadConfig();
/* Generate server list */
$servers = array();
foreach ($config->data['LOCATIONS'] as $key => $ignored) {
$servers[$key] = $key;
}
if (isset($_POST['server']) && isset($servers[$_POST['server']])) {
$this->directory = validate($_POST['server']);
} elseif (isset($_GET['directory']) && isset($servers[$_GET['directory']])) {
$this->directory = validate($_GET['directory']);
} else {
$this->directory = $config->data['MAIN']['DEFAULT'];
if (!isset($servers[$this->directory])) {
$this->directory = key($servers);
}
}
/* Set config to selected one */
$config->set_current($this->directory);
session::global_set('config', $config);
$this->activated = $this->readLdapConfig();
if (!$this->activated) {
/* This page has been disabled */
return;
}
$ui = new userinfoNoAuth(get_class($this));
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
session::global_set('ui', $ui);
static::init();
if ($this->interactive) {
$smarty = get_smarty();
if (count($servers) > 1) {
$smarty->assign('show_directory_chooser', TRUE);
$smarty->assign('server_options', $servers);
$smarty->assign('server_id', $this->directory);
} else {
$smarty->assign('show_directory_chooser', FALSE);
}
}
}
function init()
{
global $config, $ssl, $ui;
reset_errors();
static::securityHeaders();
CSRFProtection::check();
$ui = session::global_get('ui');
$config = session::global_get('config');
if ($this->interactive) {
timezone::setDefaultTimezoneFromConfig();
Language::init();
$this->setupSmarty();
}
$ssl = $this->checkForSSL();
/* Prepare plugin list */
pluglist::load();
}
function loadConfig()
{
global $BASE_DIR;
/* Check if CONFIG_FILE is accessible */
if (!is_readable(CONFIG_DIR.'/'.CONFIG_FILE)) {
msg_dialog::display(_('Fatal error'),
sprintf(_('FusionDirectory configuration %s/%s is not readable. Aborted.'),
CONFIG_DIR, CONFIG_FILE), FATAL_ERROR_DIALOG);
exit();
}
/* Parse configuration file */
$config = new config(CONFIG_DIR.'/'.CONFIG_FILE, $BASE_DIR);
session::global_set('DEBUGLEVEL', $config->get_cfg_value('debuglevel'));
@DEBUG(DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, 'config');
return $config;
}
function setupSmarty()
{
global $config;
$smarty = get_smarty();
/* Set template compile directory */
$smarty->compile_dir = $config->get_cfg_value('templateCompileDirectory', SPOOL_DIR);
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
/* Check for compile directory */
if (!(is_dir($smarty->compile_dir) && is_writable($smarty->compile_dir))) {
msg_dialog::display(_('Configuration error'),
sprintf(_("Directory '%s' specified as compile directory is not accessible!"),
$smarty->compile_dir),
FATAL_ERROR_DIALOG);
exit();
}
/* Check for old files in compile directory */
clean_smarty_compile_dir($smarty->compile_dir);
$smarty->assign('date', gmdate('D, d M Y H:i:s'));
$smarty->assign('params', '');
$smarty->assign('message', '');
$smarty->assign('changed', FALSE);
$smarty->assign('revision', FD_VERSION);
$smarty->assign('year', date('Y'));
$lang = session::global_get('lang');
$smarty->assign('lang', preg_replace('/_.*$/', '', $lang));
$smarty->assign('rtl', Language::isRTL($lang));
$smarty->assign('must', '<span class="must">*</span>');
$smarty->assign('usePrototype', 'FALSE');
$smarty->assign('CSRFtoken', CSRFProtection::getToken());
}
function assignSmartyVars()
{
global $error_collector, $error_collector_mailto;
$smarty = get_smarty();
$smarty->assign('PHPSESSID', session_id());
if ($error_collector != '') {
$smarty->assign('php_errors', preg_replace('/%BUGBODY%/', $error_collector_mailto, $error_collector).'</div>');
} else {
$smarty->assign('php_errors', '');
}
$smarty->assign('msg_dialogs', msg_dialog::get_dialogs());
}
function checkForSSL()
{
global $config;
$smarty = get_smarty();
/* Check for SSL connection */
$ssl = '';
$smarty->assign('ssl', '');
if (!sslOn()) {
$ssl = sslUrl();
/* If SSL is forced, just forward to the SSL enabled site */
if ($config->get_cfg_value('forcessl') == 'TRUE') {
header("Location: $ssl");
exit;
} elseif ($config->get_cfg_value('warnssl') == 'TRUE') {
/* Display SSL mode warning? */
$smarty->assign ('ssl', sprintf(_('Warning: <a href="%s">Session is not encrypted!</a>'), $ssl));
}
}
return $ssl;
}
function getPageURL()
{
$protocol = 'http';
if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on')) {