diff --git a/src/routes.php b/src/routes.php index 3ca485d..25b5b87 100644 --- a/src/routes.php +++ b/src/routes.php @@ -13,3 +13,38 @@ $app->get('/', function (Request $request, Response $response, $args) { '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); +}); diff --git a/views/create.twig b/views/create.twig new file mode 100644 index 0000000..b581dd5 --- /dev/null +++ b/views/create.twig @@ -0,0 +1,40 @@ +{% extends 'layout.twig' %} + +{% block content %} + + +
+
+

Create new server

+
+
+ + +
+
+
+
+
+ + +
+ +
+ + +
+
+ + +
+
+
+ + +
+
+

Back

+
+
+ +{% endblock %}