misuzu/misuzu.php

91 lines
3 KiB
PHP
Raw Normal View History

<?php
namespace Misuzu;
2018-05-27 23:24:16 +00:00
date_default_timezone_set('UTC');
2018-04-30 21:39:43 +00:00
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/src/colour.php';
require_once __DIR__ . '/src/zalgo.php';
2018-05-23 01:41:57 +00:00
require_once __DIR__ . '/src/Forum/forum.php';
require_once __DIR__ . '/src/Forum/post.php';
require_once __DIR__ . '/src/Forum/topic.php';
require_once __DIR__ . '/src/Forum/validate.php';
2018-05-16 02:58:21 +00:00
require_once __DIR__ . '/src/Users/login_attempt.php';
2018-05-27 00:20:35 +00:00
require_once __DIR__ . '/src/Users/profile.php';
require_once __DIR__ . '/src/Users/role.php';
require_once __DIR__ . '/src/Users/session.php';
require_once __DIR__ . '/src/Users/user.php';
2018-05-16 02:58:21 +00:00
require_once __DIR__ . '/src/Users/validation.php';
$app = new Application(
__DIR__ . '/config/config.ini',
IO\Directory::exists(__DIR__ . '/vendor/phpunit/phpunit')
);
$app->startDatabase();
if (PHP_SAPI !== 'cli') {
2018-03-24 04:31:42 +00:00
$storage_dir = $app->getStoragePath();
if (!$storage_dir->isReadable()
|| !$storage_dir->isWritable()) {
echo 'Cannot access storage directory.';
exit;
}
if (!$app->inDebugMode()) {
ob_start('ob_gzhandler');
}
if ($app->getConfig()->get('Auth', 'lockdown', 'bool', false)) {
2018-03-31 22:28:32 +00:00
http_response_code(503);
$app->startTemplating();
$app->getTemplating()->addPath('auth', __DIR__ . '/views/auth');
echo $app->getTemplating()->render('lockdown');
2018-03-31 22:28:32 +00:00
exit;
}
2018-05-16 02:58:21 +00:00
$app->startTemplating();
$app->getTemplating()->addPath('mio', __DIR__ . '/views/mio');
2018-03-31 22:28:32 +00:00
if (isset($_COOKIE['msz_uid'], $_COOKIE['msz_sid'])) {
$app->startSession((int)$_COOKIE['msz_uid'], $_COOKIE['msz_sid']);
2018-05-16 02:58:21 +00:00
if ($app->hasActiveSession()) {
$db = Database::connection();
$bumpUserLast = $db->prepare('
UPDATE `msz_users` SET
`last_seen` = NOW(),
`last_ip` = INET6_ATON(:last_ip)
WHERE `user_id` = :user_id
');
$bumpUserLast->bindValue('last_ip', Net\IPAddress::remote()->getString());
$bumpUserLast->bindValue('user_id', $app->getUserId());
$bumpUserLast->execute();
$getUserDisplayInfo = $db->prepare('
SELECT
u.`user_id`, u.`username`,
COALESCE(r.`role_colour`, CAST(0x40000000 AS UNSIGNED)) as `colour`
FROM `msz_users` as u
LEFT JOIN `msz_roles` as r
ON u.`display_role` = r.`role_id`
WHERE `user_id` = :user_id
');
$getUserDisplayInfo->bindValue('user_id', $app->getUserId());
$userDisplayInfo = $getUserDisplayInfo->execute() ? $getUserDisplayInfo->fetch() : [];
$app->getTemplating()->var('current_user', $userDisplayInfo);
}
2018-03-31 22:28:32 +00:00
}
2018-03-28 00:35:37 +00:00
$manage_mode = starts_with($_SERVER['REQUEST_URI'], '/manage');
if ($manage_mode) {
2018-05-16 02:58:21 +00:00
if ($app->getUserId() !== 1) {
echo render_error(403);
2018-03-28 00:35:37 +00:00
exit;
}
$app->getTemplating()->addPath('manage', __DIR__ . '/views/manage');
2018-03-28 00:35:37 +00:00
}
}