From cfa50168b34e12fdc8da8d996326f7d74d52f357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Sun, 4 May 2014 15:09:11 +0200 Subject: [PATCH 1/4] update manager fix --- application/core/Update/UpdateManager.php | 36 +++++++++-------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/application/core/Update/UpdateManager.php b/application/core/Update/UpdateManager.php index 785a6def..e4a89cf2 100644 --- a/application/core/Update/UpdateManager.php +++ b/application/core/Update/UpdateManager.php @@ -37,16 +37,16 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener /* * Public Properties */ + /** @var PluginUpdateManager $pluginUpdateManager */ public $pluginUpdateManager = null; + /** @var UpdateData $coreUpdateData */ + public $coreUpdateData = null; /* * Private Properties */ + /** @var ManiaControl $maniaControl */ private $maniaControl = null; - /** - * @var UpdateData $coreUpdateData - */ - private $coreUpdateData = null; private $currentBuildDate = null; /** @@ -85,7 +85,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener /** * Perform Hourly Update Check * - * @param $time + * @param float $time */ public function hourlyUpdateCheck($time) { $updateCheckEnabled = $this->maniaControl->settingManager->getSetting($this, self::SETTING_ENABLEUPDATECHECK); @@ -117,7 +117,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener * * @param callable $function */ - private function checkCoreUpdateAsync($function) { + public function checkCoreUpdateAsync($function) { $updateChannel = $this->getCurrentUpdateChannelSetting(); $url = ManiaControl::URL_WEBSERVICE . 'versions?current=1&channel=' . $updateChannel; @@ -137,7 +137,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener * * @return string */ - private function getCurrentUpdateChannelSetting() { + public function getCurrentUpdateChannelSetting() { $updateChannel = $this->maniaControl->settingManager->getSetting($this, self::SETTING_UPDATECHECK_CHANNEL); $updateChannel = strtolower($updateChannel); if (!in_array($updateChannel, array(self::CHANNEL_RELEASE, self::CHANNEL_BETA, self::CHANNEL_NIGHTLY))) { @@ -270,7 +270,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener * @param Player $player * @return bool */ - private function performCoreUpdate(Player $player = null) { + public function performCoreUpdate(Player $player = null) { if (!$this->coreUpdateData) { $message = 'Update failed: No update Data available!'; if ($player) { @@ -361,7 +361,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener * @param string $date * @return bool */ - private function setNightlyBuildDate($date) { + public function setNightlyBuildDate($date) { $nightlyBuildDateFile = ManiaControlDir . 'core' . DIRECTORY_SEPARATOR . 'nightly_build.txt'; $success = (bool)file_put_contents($nightlyBuildDateFile, $date); $this->currentBuildDate = $date; @@ -453,26 +453,18 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } $self = $this; - $this->checkCoreUpdateAsync(function (UpdateData $updateData = null) use (&$self, &$player) { + $maniaControl = $this->maniaControl; + $this->checkCoreUpdateAsync(function (UpdateData $updateData = null) use (&$self, &$maniaControl, &$player) { if (!$updateData) { - $self->maniaControl->chat->sendError('Update is currently not possible!', $player->login); + $maniaControl->chat->sendError('Update is currently not possible!', $player); return; } if (!$self->checkUpdateDataBuildVersion($updateData)) { - $self->maniaControl->chat->sendError("The Next ManiaControl Update requires a newer Dedicated Server Version!", $player->login); + $maniaControl->chat->sendError("The Next ManiaControl Update requires a newer Dedicated Server Version!", $player); return; } - $message = "Starting Update to Version v{$updateData->version}..."; - $self->maniaControl->chat->sendInformation($message, $player->login); - $self->maniaControl->log($message); - - $performBackup = $self->maniaControl->settingManager->getSetting($self, UpdateManager::SETTING_PERFORM_BACKUPS); - if ($performBackup && !BackupUtil::performFullBackup()) { - $message = 'Creating Backup failed!'; - $self->maniaControl->chat->sendError($message, $player->login); - $self->maniaControl->log($message); - } + $self->coreUpdateData = $updateData; $self->performCoreUpdate($player); }); From 8cb6fdcceb45dd302f1298cfeb1ed2b4a003175c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Sun, 4 May 2014 15:10:34 +0200 Subject: [PATCH 2/4] update manager fix --- application/core/Update/UpdateManager.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/core/Update/UpdateManager.php b/application/core/Update/UpdateManager.php index e4a89cf2..d5469121 100644 --- a/application/core/Update/UpdateManager.php +++ b/application/core/Update/UpdateManager.php @@ -303,8 +303,8 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener $self = $this; $this->maniaControl->fileReader->loadFile($this->coreUpdateData->url, function ($updateFileContent, $error) use (&$self, &$updateData, &$player) { - if (!$updateFileContent || !$error) { - $message = "Update failed: Couldn't load Update zip!"; + if (!$updateFileContent || $error) { + $message = "Update failed: Couldn't load Update zip! {$error}"; if ($player) { $self->maniaControl->chat->sendError($message, $player); } From 0ce3c8bae66fd27f413dc7bc43760d79675e12f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Sun, 4 May 2014 15:14:58 +0200 Subject: [PATCH 3/4] update manager fixes & improvements --- application/core/Update/UpdateManager.php | 41 +++++++++++++---------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/application/core/Update/UpdateManager.php b/application/core/Update/UpdateManager.php index d5469121..560d3091 100644 --- a/application/core/Update/UpdateManager.php +++ b/application/core/Update/UpdateManager.php @@ -302,13 +302,15 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } $self = $this; - $this->maniaControl->fileReader->loadFile($this->coreUpdateData->url, function ($updateFileContent, $error) use (&$self, &$updateData, &$player) { + $updateData = $this->coreUpdateData; + $maniaControl = $this->maniaControl; + $this->maniaControl->fileReader->loadFile($updateData->url, function ($updateFileContent, $error) use (&$self, &$maniaControl, &$updateData, &$player) { if (!$updateFileContent || $error) { $message = "Update failed: Couldn't load Update zip! {$error}"; if ($player) { - $self->maniaControl->chat->sendError($message, $player); + $maniaControl->chat->sendError($message, $player); } - logMessage($message); + $maniaControl->log($message); return; } @@ -319,19 +321,20 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener if (!$bytes || $bytes <= 0) { $message = "Update failed: Couldn't save Update zip!"; if ($player) { - $self->maniaControl->chat->sendError($message, $player); + $maniaControl->chat->sendError($message, $player); } - logMessage($message); + $maniaControl->log($message); return; } $zip = new \ZipArchive(); $result = $zip->open($updateFileName); if ($result !== true) { - trigger_error("Couldn't open Update Zip. ({$result})"); + $message = "Update failed: Couldn't open Update Zip. ({$result})"; if ($player) { - $self->maniaControl->chat->sendError("Update failed: Couldn't open Update zip!", $player); + $maniaControl->chat->sendError($message, $player); } + $maniaControl->log($message); return; } @@ -345,11 +348,11 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener $message = 'Update finished!'; if ($player) { - $self->maniaControl->chat->sendSuccess($message, $player); + $maniaControl->chat->sendSuccess($message, $player); } - $self->maniaControl->log($message); + $maniaControl->log($message); - $self->maniaControl->restart(); + $maniaControl->restart(); }); return true; @@ -411,14 +414,15 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } $self = $this; - $this->checkCoreUpdateAsync(function (UpdateData $updateData = null) use (&$self, &$player) { + $maniaControl = $this->maniaControl; + $this->checkCoreUpdateAsync(function (UpdateData $updateData = null) use (&$self, &$maniaControl, &$player) { if (!$self->checkUpdateData($updateData)) { - $self->maniaControl->chat->sendInformation('No Update available!', $player->login); + $maniaControl->chat->sendInformation('No Update available!', $player->login); return; } if (!$self->checkUpdateDataBuildVersion($updateData)) { - $self->maniaControl->chat->sendError("Please update Your Server to '{$updateData->minDedicatedBuild}' in order to receive further Updates!", $player->login); + $maniaControl->chat->sendError("Please update Your Server to '{$updateData->minDedicatedBuild}' in order to receive further Updates!", $player->login); return; } @@ -427,16 +431,19 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener $buildDate = $self->getNightlyBuildDate(); if ($buildDate) { if ($updateData->isNewerThan($buildDate)) { - $self->maniaControl->chat->sendInformation("No new Build available! (Current Build: '{$buildDate}')", $player->login); + $maniaControl->chat->sendInformation("No new Build available! (Current Build: '{$buildDate}')", $player->login); + return; } else { - $self->maniaControl->chat->sendSuccess("New Nightly Build ({$updateData->releaseDate}) available! (Current Build: '{$buildDate}')", $player->login); + $maniaControl->chat->sendSuccess("New Nightly Build ({$updateData->releaseDate}) available! (Current Build: '{$buildDate}')", $player->login); } } else { - $self->maniaControl->chat->sendSuccess("New Nightly Build ('{$updateData->releaseDate}') available!", $player->login); + $maniaControl->chat->sendSuccess("New Nightly Build ('{$updateData->releaseDate}') available!", $player->login); } } else { - $self->maniaControl->chat->sendSuccess('Update for Version ' . $updateData->version . ' available!', $player->login); + $maniaControl->chat->sendSuccess('Update for Version ' . $updateData->version . ' available!', $player->login); } + + $self->coreUpdateData = $updateData; }); } From ea2e0b069851be9994dfc50960cc9df6e438bbf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20Schro=CC=88der?= Date: Sun, 4 May 2014 15:29:01 +0200 Subject: [PATCH 4/4] added update channel to usage report --- application/core/Server/UsageReporter.php | 25 ++++++++++++----------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/application/core/Server/UsageReporter.php b/application/core/Server/UsageReporter.php index feed6914..ba1cc70b 100644 --- a/application/core/Server/UsageReporter.php +++ b/application/core/Server/UsageReporter.php @@ -19,8 +19,8 @@ class UsageReporter implements TimerListener { /* * Constants */ - const UPDATE_MINUTE_COUNT = 10; - const SETTING_DISABLE_USAGE_REPORTING = 'Disable Usage Reporting'; + const UPDATE_MINUTE_COUNT = 10; + const SETTING_REPORT_USAGE = 'Report Usage to $lManiaControl.com$l'; /* * Private Properties @@ -34,22 +34,22 @@ class UsageReporter implements TimerListener { */ public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; - $this->maniaControl->settingManager->initSetting($this, self::SETTING_DISABLE_USAGE_REPORTING, false); - $this->maniaControl->timerManager->registerTimerListening($this, 'reportUsage', 1000 * 60 * self::UPDATE_MINUTE_COUNT); + $this->maniaControl->settingManager->initSetting($this, self::SETTING_REPORT_USAGE, true); + + $this->maniaControl->timerManager->registerTimerListening($this, 'reportUsage', 1000 * 60 * self::UPDATE_MINUTE_COUNT); } /** - * Reports Usage every xx Minutes + * Report Usage every xx Minutes * * @param float $time */ public function reportUsage($time) { - if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_DISABLE_USAGE_REPORTING)) { + if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_REPORT_USAGE)) { return; } - $properties = array(); $properties['ManiaControlVersion'] = ManiaControl::VERSION; $properties['OperatingSystem'] = php_uname(); @@ -57,17 +57,18 @@ class UsageReporter implements TimerListener { $properties['ServerLogin'] = $this->maniaControl->server->login; $properties['TitleId'] = $this->maniaControl->server->titleId; $properties['ServerName'] = Formatter::stripDirtyCodes($this->maniaControl->client->getServerName()); + $properties['UpdateChannel'] = $this->maniaControl->updateManager->getCurrentUpdateChannelSetting(); $properties['PlayerCount'] = $this->maniaControl->playerManager->getPlayerCount(); $properties['MemoryUsage'] = memory_get_usage(); $properties['MemoryPeakUsage'] = memory_get_peak_usage(); $maxPlayers = $this->maniaControl->client->getMaxPlayers(); - $properties['MaxPlayers'] = $maxPlayers["CurrentValue"]; + $properties['MaxPlayers'] = $maxPlayers['CurrentValue']; try { $scriptName = $this->maniaControl->client->getScriptName(); - $properties['ScriptName'] = $scriptName["CurrentValue"]; + $properties['ScriptName'] = $scriptName['CurrentValue']; } catch (Exception $e) { if ($e->getMessage() == 'Not in script mode.') { $properties['ScriptName'] = ''; @@ -93,11 +94,11 @@ class UsageReporter implements TimerListener { $info = base64_encode($json); $self = $this; - $this->maniaControl->fileReader->loadFile(ManiaControl::URL_WEBSERVICE . "/usagereport?info=" . urlencode($info), function ($response, $error) use (&$self) { + $this->maniaControl->fileReader->loadFile(ManiaControl::URL_WEBSERVICE . '/usagereport?info=' . urlencode($info), function ($response, $error) use (&$self) { $response = json_decode($response); if ($error || !$response) { - $self->maniaControl->log("Error while Sending data: " . $error); + $self->maniaControl->log('Error while Sending data: ' . $error); } }); } -} \ No newline at end of file +}