misuzu/public/index.php

108 lines
3.7 KiB
PHP
Raw Normal View History

<?php
2019-09-28 22:38:39 +00:00
namespace Misuzu;
2020-05-14 21:39:38 +00:00
use Misuzu\Http\HttpRequestMessage;
2019-12-13 20:37:17 +00:00
use Misuzu\Http\Routing\Router;
use Misuzu\Http\Routing\Route;
require_once __DIR__ . '/../misuzu.php';
2020-05-14 21:39:38 +00:00
$request = HttpRequestMessage::fromGlobals();
2018-07-06 01:28:06 +00:00
2020-05-14 21:39:38 +00:00
Router::setHandlerFormat('\Misuzu\Http\Handlers\%sHandler');
Router::setFilterFormat('\Misuzu\Http\Filters\%sFilter');
Router::addRoutes(
2019-12-13 20:37:17 +00:00
// Home
2020-05-14 21:39:38 +00:00
Route::get('/', 'index', 'Home'),
2019-12-04 00:08:42 +00:00
// Assets
Route::group('/assets', 'Assets')->addChildren(
Route::get('/([a-zA-Z0-9\-]+)\.(css|js)', 'serveComponent'),
Route::get('/avatar/([0-9]+)(?:\.png)?', 'serveAvatar'),
Route::get('/profile-background/([0-9]+)(?:\.png)?', 'serveProfileBackground'),
),
2019-12-13 20:37:17 +00:00
// Info
2020-05-14 21:39:38 +00:00
Route::get('/info', 'index', 'Info'),
Route::get('/info/([A-Za-z0-9_/]+)', 'page', 'Info'),
2020-05-20 18:09:38 +00:00
// Changelog
Route::get('/changelog', 'index', 'Changelog')->addChildren(
Route::get('.atom', 'feedAtom'),
Route::get('.rss', 'feedRss'),
Route::get('/change/([0-9]+)', 'change'),
),
// News
Route::get('/news', 'index', 'News')->addChildren(
Route::get('.atom', 'feedIndexAtom'),
Route::get('.rss', 'feedIndexRss'),
Route::get('/([0-9]+)', 'viewCategory'),
Route::get('/([0-9]+).atom', 'feedCategoryAtom'),
Route::get('/([0-9]+).rss', 'feedCategoryRss'),
Route::get('/post/([0-9]+)', 'viewPost')
),
2019-12-14 22:47:36 +00:00
// Forum
2020-05-14 21:39:38 +00:00
Route::group('/forum', 'Forum')->addChildren(
Route::get('/mark-as-read', 'markAsReadGET')->addFilters('EnforceLogIn'),
Route::post('/mark-as-read', 'markAsReadPOST')->addFilters('EnforceLogIn', 'ValidateCsrf'),
),
2019-12-14 22:47:36 +00:00
// Sock Chat
2020-05-14 21:39:38 +00:00
Route::create(['GET', 'POST'], '/_sockchat.php', 'phpFile', 'SockChat'),
Route::group('/_sockchat', 'SockChat')->addChildren(
Route::get('/emotes', 'emotes'),
Route::get('/login', 'login'),
Route::get('/resolve', 'resolve'),
2020-05-14 21:39:38 +00:00
Route::post('/bump', 'bump'),
Route::post('/verify', 'verify'),
Route::create(['GET', 'OPTIONS'], '/token', 'token'),
Route::get('/bans', 'bans')->addChildren(
Route::get('/check', 'checkBan'),
Route::post('/create', 'createBan'),
Route::delete('/remove', 'removeBan'),
),
2020-05-14 21:39:38 +00:00
),
2019-12-13 20:37:17 +00:00
// Redirects
2020-05-14 21:39:38 +00:00
Route::get('/index.php', url('index')),
Route::get('/info.php', url('info')),
Route::get('/settings.php', url('settings-index')),
2020-05-20 18:09:38 +00:00
Route::get('/changelog.php', 'legacy', 'Changelog'),
2020-05-14 21:39:38 +00:00
Route::get('/info.php/([A-Za-z0-9_/]+)', 'redir', 'Info'),
Route::get('/auth.php', 'legacy', 'Auth'),
Route::get('/news.php', 'legacy', 'News'),
Route::get('/news.php/rss', 'legacy', 'News'),
Route::get('/news.php/atom', 'legacy', 'News'),
Route::get('/news/index.php', 'legacy', 'News'),
Route::get('/news/category.php', 'legacy', 'News'),
Route::get('/news/post.php', 'legacy', 'News'),
Route::get('/news/feed.php', 'legacy', 'News'),
Route::get('/news/feed.php/rss', 'legacy', 'News'),
Route::get('/news/feed.php/atom', 'legacy', 'News'),
Route::get('/user-assets.php', 'serveLegacy', 'Assets'),
2019-12-13 20:37:17 +00:00
);
2020-05-14 21:39:38 +00:00
$response = Router::handle($request);
2019-12-13 20:37:17 +00:00
$response->setHeader('X-Powered-By', 'Misuzu');
2018-04-30 21:39:43 +00:00
2019-12-13 20:37:17 +00:00
$responseStatus = $response->getStatusCode();
2019-01-18 14:11:15 +00:00
2019-12-13 20:37:17 +00:00
header('HTTP/' . $response->getProtocolVersion() . ' ' . $responseStatus . ' ' . $response->getReasonPhrase());
2018-12-31 01:37:47 +00:00
2020-05-18 21:27:34 +00:00
foreach($response->getHeaders() as $name => $lines) {
$firstLine = true;
foreach($lines as $line) {
header("{$name}: {$line}", $firstLine);
$firstLine = false;
}
}
2019-12-13 20:37:17 +00:00
$responseBody = $response->getBody();
2019-03-02 18:42:50 +00:00
if($responseStatus >= 400 && $responseStatus <= 599 && $responseBody === null)
2019-12-13 20:37:17 +00:00
echo render_error($responseStatus);
else
2019-12-13 20:37:17 +00:00
echo (string)$responseBody;