get('/', function (Request $request, Response $response, $args) { $config = $this->get('config'); $view = Twig::fromRequest($request); return $view->render($response, 'index.twig', [ 'server_dir' => $config->get('server_directory'), ]); })->setName('index'); // create GET route - this page allows a user to create a new server instance $app->get('/create', function (Request $request, Response $response, $args) { $view = Twig::fromRequest($request); return $view->render($response, 'create.twig'); })->setName('create'); // create POST route - processes the new server creation $app->post('/create', function (Request $request, Response $response, $args) { // set up the POST parameters and grab our config $params = (array)$request->getParsedBody(); $config = $this->get('config'); // create our server directory $serverDir = join('/', array($config->get('server_directory'), $params['serverName'])); mkdir($serverDir); // grab the server JAR file $serverJarUrl = "https://piston-data.mojang.com/v1/objects/f69c284232d7c7580bd89a5a4931c3581eae1378/server.jar"; $serverJarName = "server_" . $params['serverVersion'] . ".jar"; $serverJarPath = join('/', array($serverDir, $serverJarName)); file_put_contents($serverJarPath, file_get_contents($serverJarUrl)); // create the start.sh shell script $scriptFilePath = join('/', array($serverDir, 'start.sh')); $scriptFile = fopen($scriptFilePath, 'w'); $scriptContent = "#!/bin/sh\n\ncd " . $serverDir . "\njava -Xmx2048M -Xms2048M -jar server_1.19.2.jar nogui"; fwrite($scriptFile, $scriptContent); fclose($scriptFile); chmod($scriptFilePath, 0755); return $response ->withHeader('Location', '/') ->withStatus(302); });