From 5c35389ae338698d967d0dd09dbb86d802a642d9 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Sat, 8 Oct 2022 00:02:29 -0400 Subject: [PATCH] Removed beanstalkd stuff for now as it's not necessary; updated the server creation function to actually download the specified server JAR version --- composer.json | 2 +- composer.lock | 107 ++++++++++++------------- conf/defaults.json | 7 +- src/Controllers/HomeController.php | 7 -- src/Controllers/ServerController.php | 11 ++- src/Runners/RefreshServerDownloads.php | 17 ---- src/runner.php | 45 ----------- 7 files changed, 62 insertions(+), 134 deletions(-) delete mode 100644 src/Runners/RefreshServerDownloads.php delete mode 100644 src/runner.php diff --git a/composer.json b/composer.json index efe1ad6..59007fb 100644 --- a/composer.json +++ b/composer.json @@ -20,6 +20,6 @@ "slim/twig-view": "^3.3", "hassankhan/config": "^3.0", "php-di/php-di": "^6.4", - "pda/pheanstalk": "~4.0" + "imangazaliev/didom": "^1.13" } } diff --git a/composer.lock b/composer.lock index 5ba1ce4..3add0f1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6ac1bc7f15734931ede8901fed3ed3eb", + "content-hash": "895fe7eeb340eea7f4d603b1042f1634", "packages": [ { "name": "fig/http-message-util", @@ -125,6 +125,56 @@ }, "time": "2022-03-26T19:37:50+00:00" }, + { + "name": "imangazaliev/didom", + "version": "1.13", + "source": { + "type": "git", + "url": "https://github.com/Imangazaliev/DiDOM.git", + "reference": "10c4033d56e599f09183959ed90bf17519b9e38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Imangazaliev/DiDOM/zipball/10c4033d56e599f09183959ed90bf17519b9e38b", + "reference": "10c4033d56e599f09183959ed90bf17519b9e38b", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "DiDom\\": "src/DiDom/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Imangazaliev Muhammad", + "email": "imangazalievm@gmail.com" + } + ], + "description": "Simple and fast HTML parser", + "homepage": "https://github.com/Imangazaliev/DiDOM", + "keywords": [ + "didom", + "html", + "parser", + "xml" + ], + "support": { + "issues": "https://github.com/Imangazaliev/DiDOM/issues", + "source": "https://github.com/Imangazaliev/DiDOM/tree/develop" + }, + "time": "2017-12-08T15:20:07+00:00" + }, { "name": "laravel/serializable-closure", "version": "v1.2.2", @@ -235,61 +285,6 @@ }, "time": "2018-02-13T20:26:39+00:00" }, - { - "name": "pda/pheanstalk", - "version": "v4.0.4", - "source": { - "type": "git", - "url": "https://github.com/pheanstalk/pheanstalk.git", - "reference": "1a43eb97a53144a2e692bce2ea2be721cc9913a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pheanstalk/pheanstalk/zipball/1a43eb97a53144a2e692bce2ea2be721cc9913a4", - "reference": "1a43eb97a53144a2e692bce2ea2be721cc9913a4", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=7.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^7" - }, - "type": "library", - "autoload": { - "psr-4": { - "Pheanstalk\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paul Annesley", - "email": "paul@annesley.cc", - "homepage": "http://paul.annesley.cc/", - "role": "Developer" - }, - { - "name": "Sam Mousa", - "email": "sam@mousa.nl", - "role": "Maintainer" - } - ], - "description": "PHP client for beanstalkd queue", - "homepage": "https://github.com/pheanstalk/pheanstalk", - "keywords": [ - "beanstalkd" - ], - "support": { - "issues": "https://github.com/pheanstalk/pheanstalk/issues", - "source": "https://github.com/pheanstalk/pheanstalk/tree/v4.0.4" - }, - "time": "2021-11-19T15:00:20+00:00" - }, { "name": "php-di/invoker", "version": "2.3.3", diff --git a/conf/defaults.json b/conf/defaults.json index ed7a3e1..af6e59f 100644 --- a/conf/defaults.json +++ b/conf/defaults.json @@ -1,8 +1,3 @@ { - "server_directory": "/opt/minecraft", - - "beanstalkd": { - "host": "localhost", - "port": 11300 - } + "server_directory": "/opt/minecraft" } diff --git a/src/Controllers/HomeController.php b/src/Controllers/HomeController.php index 511028a..67b22c5 100644 --- a/src/Controllers/HomeController.php +++ b/src/Controllers/HomeController.php @@ -2,7 +2,6 @@ namespace BitGoblin\MCST\Controllers; -use Pheanstalk\Pheanstalk; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Views\Twig; @@ -22,12 +21,6 @@ class HomeController extends Controller { array_push($minecraftServers, new Server($m)); } - // create pheanstalk object and create a job - $pheanstalk = Pheanstalk::create($config->get('beanstalkd.host'), $config->get('beanstalkd.port')); - $pheanstalk - ->useTube('mcst') - ->put("refresh-server-downloads", Pheanstalk::DEFAULT_PRIORITY); - $view = Twig::fromRequest($request); return $view->render($response, 'index.twig', [ 'servers' => $minecraftServers, diff --git a/src/Controllers/ServerController.php b/src/Controllers/ServerController.php index c3d4dd8..49ec284 100644 --- a/src/Controllers/ServerController.php +++ b/src/Controllers/ServerController.php @@ -2,6 +2,7 @@ namespace BitGoblin\MCST\Controllers; +use DiDom\Document; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Views\Twig; @@ -26,8 +27,14 @@ class ServerController extends Controller { $serverDir = join('/', array($config->get('server_directory'), $params['serverName'])); mkdir($serverDir); + // find the server JAR URL for the version + $versionPageLink = 'https://minecraft.fandom.com/wiki/Java_Edition_' . $params['serverVersion']; + $dom = new Document($versionPageLink, true); + $infobox = $dom->find('.notaninfobox')[0]; + $serverLinkElem = $infobox->find("a:contains('Server')"); + $serverJarUrl = $serverLinkElem[0]->attr('href'); + // 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)); @@ -35,7 +42,7 @@ class ServerController extends Controller { // 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"; + $scriptContent = "#!/bin/sh\n\ncd " . $serverDir . "\njava -Xmx2048M -Xms2048M -jar server_" . $params['serverVersion'] . ".jar nogui"; fwrite($scriptFile, $scriptContent); fclose($scriptFile); chmod($scriptFilePath, 0755); diff --git a/src/Runners/RefreshServerDownloads.php b/src/Runners/RefreshServerDownloads.php deleted file mode 100644 index e99fa8a..0000000 --- a/src/Runners/RefreshServerDownloads.php +++ /dev/null @@ -1,17 +0,0 @@ -config = $config; - } - - public function start() { - echo "Refreshing server download URLs...\n"; - } - -} diff --git a/src/runner.php b/src/runner.php deleted file mode 100644 index 67d3844..0000000 --- a/src/runner.php +++ /dev/null @@ -1,45 +0,0 @@ -get('beanstalkd.host'), $config->get('beanstalkd.port')); -// we want jobs from 'mcst' tube only. -$pheanstalk->watch('mcst'); - -while (true) { - echo "Waiting for a new job...\n"; - - // try to reserve a job - $job = $pheanstalk->reserve(); - - // check if we actually got a job before trying to do work - if (isset($job)) { - $jobPayload = $job->getData(); - - switch ($jobPayload) { - case 'refresh-server-downloads': - $rsd = new RefreshServerDownloads($config); - $rsd->start(); - break; - - default: - echo "Runner command " . $jobPayload . " isn't supported.\n"; - break; - } - - // remove job - $pheanstalk->delete($job); - } - - sleep(60); -}