{$method}(...$args); }; } function msz_compat_redirect(string $target) { return function($response) use ($target) { $response->redirect($target, true); }; } $router = new HttpFx; $router->use('/', function($response) { $response->setPoweredBy('Misuzu'); }); $router->addErrorHandler(400, function($response) { $response->setContent(Template::renderRaw('errors.404')); }); $router->addErrorHandler(403, function($response) { $response->setContent(Template::renderRaw('errors.404')); }); $router->addErrorHandler(404, function($response) { $response->setContent(Template::renderRaw('errors.404')); }); $router->addErrorHandler(500, function($response) { $response->setContent(file_get_contents(MSZ_TEMPLATES . '/500.html')); }); $router->addErrorHandler(503, function($response) { $response->setContent(file_get_contents(MSZ_TEMPLATES . '/503.html')); }); $request = HttpRequest::fromRequest(); if(strpos($request->getPath(), '.php') !== false) { $router->get('/index.php', msz_compat_redirect(url('index'))); $router->get('/info.php', msz_compat_redirect(url('info'))); $router->get('/settings.php', msz_compat_redirect(url('settings-index'))); $router->get('/changelog.php', msz_compat_handler('Changelog', 'legacy')); $router->get('/info.php/:name', msz_compat_handler('Info', 'redir')); $router->get('/auth.php', msz_compat_handler('Auth', 'legacy')); $router->get('/news.php', msz_compat_handler('News', 'legacy')); $router->get('/news.php/rss', msz_compat_handler('News', 'legacy')); $router->get('/news.php/atom', msz_compat_handler('News', 'legacy')); $router->get('/news/index.php', msz_compat_handler('News', 'legacy')); $router->get('/news/category.php', msz_compat_handler('News', 'legacy')); $router->get('/news/post.php', msz_compat_handler('News', 'legacy')); $router->get('/news/feed.php', msz_compat_handler('News', 'legacy')); $router->get('/news/feed.php/rss', msz_compat_handler('News', 'legacy')); $router->get('/news/feed.php/atom', msz_compat_handler('News', 'legacy')); $router->get('/user-assets.php', msz_compat_handler('Assets', 'serveLegacy')); $router->get('/_sockchat.php', msz_compat_handler('SockChat', 'phpFile')); $router->post('/_sockchat.php', msz_compat_handler('SockChat', 'phpFile')); } else { $router->get('/', msz_compat_handler('Home', 'index')); $router->get('/assets/:filename', msz_compat_handler('Assets', 'serveComponent')); $router->get('/assets/avatar/:filename', msz_compat_handler('Assets', 'serveAvatar')); $router->get('/assets/profile-background/:filename', msz_compat_handler('Assets', 'serveProfileBackground')); $router->get('/info', msz_compat_handler('Info', 'index')); $router->get('/info/:name', msz_compat_handler('Info', 'page')); $router->get('/info/:project/:name', msz_compat_handler('Info', 'page')); $router->get('/changelog', msz_compat_handler('Changelog', 'index')); $router->get('/changelog.rss', msz_compat_handler('Changelog', 'feedRss')); $router->get('/changelog.atom', msz_compat_handler('Changelog', 'feedAtom')); $router->get('/changelog/change/:id', msz_compat_handler('Changelog', 'change')); $router->get('/news', msz_compat_handler('News', 'index')); $router->get('/news.rss', msz_compat_handler('News', 'feedIndexRss')); $router->get('/news.atom', msz_compat_handler('News', 'feedIndexAtom')); $router->get('/news/:category', msz_compat_handler('News', 'viewCategory')); $router->get('/news/post/:id', msz_compat_handler('News', 'viewPost')); $router->get('/forum/mark-as-read', msz_compat_handler('Forum', 'markAsReadGET')); $router->post('/forum/mark-as-read', msz_compat_handler('Forum', 'markAsReadPOST')); $router->get('/_sockchat/emotes', msz_compat_handler('SockChat', 'emotes')); $router->get('/_sockchat/login', msz_compat_handler('SockChat', 'login')); $router->get('/_sockchat/resolve', msz_compat_handler('SockChat', 'resolve')); $router->post('/_sockchat/bump', msz_compat_handler('SockChat', 'bump')); $router->post('/_sockchat/verify', msz_compat_handler('SockChat', 'verify')); $router->get('/_sockchat/token', msz_compat_handler('SockChat', 'token')); $router->options('/_sockchat/token', msz_compat_handler('SockChat', 'token')); $router->get('/_sockchat/profile-check', msz_compat_handler('SockChat', 'profileCheck')); $router->options('/_sockchat/profile-check', msz_compat_handler('SockChat', 'profileCheck')); $router->get('/_sockchat/bans', msz_compat_handler('SockChat', 'bans')); $router->get('/_sockchat/bans/check', msz_compat_handler('SockChat', 'checkBan')); $router->post('/_sockchat/bans/create', msz_compat_handler('SockChat', 'createBan')); $router->delete('/_sockchat/bans/remove', msz_compat_handler('SockChat', 'removeBan')); } $router->dispatch($request);