!extension_loaded($ext))) { throw new \Exception( 'Required PHP extensions missing: ' . implode(', ', $missing) . '. Please enable them in your PHP configuration.' ); } $uri = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')); // Do an early return with babblebox data if that's what's being requested if ($uri[0] === 'babblebox' && (isset($uri[1]) && $uri[1] === 'messages')) { echo babblebox_messages(); exit; } $r = new Router; $r->get(['/', '/index.php'], fn() => \DragonKnight\index()); $r->get('/register', fn() => \DragonKnight\Actions\Users::register()); $r->post('/move', fn() => \DragonKnight\Actions\Explore::move()); $r->get('/spell/:id', fn($id) => \DragonKnight\Actions\Heal::healspells($id)); $r->get('/character', fn() => \DragonKnight\show_character_info()); $r->get('/character/:id', fn($id) => \DragonKnight\show_character_info($id)); $r->get('/showmap', fn() => \DragonKnight\show_map()); $r->form('/babblebox', fn() => \DragonKnight\babblebox()); $r->get('/babblebox/messages', fn() => \DragonKnight\babblebox_messages()); Admin::register_routes($r); Fight::register_routes($r); Forum::register_routes($r); Help::register_routes($r); Install::register_routes($r); Towns::register_routes($r); Users::register_routes($r); /* NINJA! 🥷 */ $r->get('/ninja', function () { exit('NINJA! 🥷'); }); // [code, handler, params, middleware] $l = $r->lookup($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']); if (is_int($l)) { error_log($path = $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI']); exit("Error: $l at `$path`"); } if (! isset($l['handler'])) { error_log($path = $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI']); exit("Error: Missing handler: $path"); } echo render_response($uri, $l['handler'](...$l['params'] ?? []));