hedera-web/web/index.php

133 lines
2.6 KiB
PHP
Executable File

<?php
openlog ('hedera-web', LOG_ODELAY, LOG_LOCAL0);
require_once ('vn/hedera/web.php');
require_once ('vn/hedera/js.php');
require_once ('vn/hedera/util.php');
use Vn\Hedera\Web;
use Vn\Lib\Locale;
function myExitHandler ()
{
Web::deinit ();
closelog ();
}
function myGlobalErrorHandler ()
{
header ('Location: unavailable.html');
myExitHandler ();
exit (0);
}
function myErrorHandler ($errno, $message, $file, $line, $context)
{
error_log ("Error: $file($line): $message");
switch ($errno)
{
case E_USER_ERROR:
myGlobalErrorHandler ();
}
return TRUE;
}
function myExceptionHandler ($e)
{
error_log (sprintf ('Exception: %s(%d): %s. Trace: %s'
,$e->getFile ()
,$e->getLine ()
,$e->getMessage ()
,$e->getTraceAsString ()
));
myGlobalErrorHandler ();
}
set_error_handler ('myErrorHandler', E_ALL);
set_exception_handler ('myExceptionHandler');
Web::sysInit ();
if (!Web::isHttps () && Web::$sysConn->getValue ('SELECT https FROM config'))
{
header ("Location: https://${_SERVER['SERVER_NAME']}${_SERVER['REQUEST_URI']}");
exit (0);
}
Web::init ();
// Getting the requested page
if (isset ($_GET['page']) && Vn\Hedera\checkToken ($_GET['page']))
$page = $_GET['page'];
else
$page = 'main';
// Checking the browser version
if (!isset ($_SESSION['skipBrowser']) && $page != 'update-browser')
{
$updateBrowser = FALSE;
if (!isset ($_GET['skipBrowser'])
&& ($browser = get_browser ($_SERVER['HTTP_USER_AGENT'])))
{
$browserVersion = $browser->version;
set_type ($browserVersion, TYPE_DOUBLE);
$minVersion = Web::$sysConn->getValue (
'SELECT version FROM browser WHERE name = #', [$browser->browser]);
$updateBrowser = $browserVersion > 0
&& isset ($minVersion) && $browserVersion < $minVersion;
}
if ($updateBrowser)
{
header ('Location: ?page=update-browser');
exit (0);
}
else
$_SESSION['skipBrowser'] = TRUE;
}
// If enabled, requests the user to choose between two web versions
if (FALSE && !isset ($_SESSION['skipVersionMenu']) && $page != 'version-menu')
{
$_SESSION['skipVersionMenu'] = TRUE;
header ('Location: ?page=version-menu');
}
// Setting the version
setcookie ('hedera_version', Web::getVersion ());
// Loading the requested page
$basePath = 'pages/'. $page;
header ("Content-Security-Policy: default-src 'self'; img-src *");
header ('Content-Type: text/html; charset=utf-8');
if (file_exists ($basePath))
{
Locale::addPath ($basePath);
$phpFile = $basePath .'/'. $page .'.php';
if (file_exists ($phpFile))
require ($phpFile);
require ($basePath .'/html.php');
}
else
header ('Location: ./');
myExitHandler ();
?>