120 lines
2.4 KiB
PHP
Executable File
120 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
openlog ('hedera-web', LOG_ODELAY, LOG_LOCAL0);
|
|
|
|
require_once ('vn/hedera/web.php');
|
|
require_once ('vn/rest/rest.php');
|
|
|
|
use Vn\Lib\Locale;
|
|
use Vn\Rest;
|
|
use Vn\Hedera\Web;
|
|
|
|
function myExitHandler ()
|
|
{
|
|
Web::deinit ();
|
|
Rest\Service::sendReply ();
|
|
closelog ();
|
|
}
|
|
|
|
function myGlobalErrorHandler ()
|
|
{
|
|
Rest\Service::setError ('PHP', 'internalError', 'An internal error has occurred');
|
|
myExitHandler ();
|
|
exit (0);
|
|
}
|
|
|
|
function myErrorHandler ($errno, $message, $file, $line, $context)
|
|
{
|
|
error_log ("Error: $file($line): $message");
|
|
|
|
switch ($errno)
|
|
{
|
|
case E_USER_ERROR:
|
|
myGlobalErrorHandler ();
|
|
default:
|
|
Rest\Service::addWarning ('PHP', 'internalMessage', 'Something has gone wrong');
|
|
}
|
|
|
|
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');
|
|
|
|
Rest\Service::init ();
|
|
|
|
try {
|
|
Web::init ();
|
|
Web::login ();
|
|
|
|
// Checking the client version
|
|
|
|
if (isset ($_COOKIE['hedera_version']))
|
|
{
|
|
$clientVersion = (float) $_COOKIE['hedera_version'];
|
|
|
|
if ($clientVersion < Web::getVersion ())
|
|
{
|
|
Web::sysInit ();
|
|
|
|
$row = Web::$sysConn->getRow (
|
|
'SELECT critical, changelog FROM version LIMIT 1');
|
|
|
|
if (!$row || $row['critical'])
|
|
throw new Rest\Exception ('Version', 'criticalVersion', $row['changelog']);
|
|
else
|
|
Rest\Service::addWarning ('Version', 'newVersion', $row['changelog']);
|
|
}
|
|
}
|
|
|
|
// Getting the action
|
|
|
|
$action = NULL;
|
|
|
|
if (isset ($_REQUEST['action']))
|
|
$action = $_REQUEST['action'];
|
|
|
|
if ($action && Vn\Hedera\checkToken ($action))
|
|
{
|
|
$actionFile = 'rest/'. $action .'.php';
|
|
|
|
if (file_exists ($actionFile))
|
|
{
|
|
Locale::addPath ('rest/'. $action);
|
|
require_once ($actionFile);
|
|
|
|
$module = new RestMod (Web::$conn);
|
|
Rest\Service::setData ($module->run ());
|
|
}
|
|
else
|
|
throw new Rest\Exception ('Rest', 'invalidAction', s('Invalid action'));
|
|
}
|
|
}
|
|
catch (Vn\Web\SessionExpiredException $e)
|
|
{
|
|
Rest\Service::setError ('Auth', 'sessionExpired', s('The session has expired'));
|
|
}
|
|
catch (Vn\Web\BadLoginException $e)
|
|
{
|
|
Rest\Service::setError ('Auth', 'badLogin', s('Invalid login'));
|
|
}
|
|
catch (Rest\Exception $e)
|
|
{
|
|
Rest\Service::setError ($e->getDomain (), $e->getCode (), $e->getMessage ());
|
|
}
|
|
|
|
myExitHandler ();
|
|
|
|
?>
|