Added new Admin Tool page to manage the different versions we need to control. These are:

- launcher version (updating launcher)
- game version
- content version (for catalog)
- catalog version

Also added checks that when the wrong content version you dont get a catalog until you update tha game. And added another check when queuing when using the wrong game version you dont get queued. (so that hunters on the wrong version cannot block the matchmaking)
This commit is contained in:
Vari
2024-09-04 22:06:51 +02:00
parent 55f8f94f16
commit dfbb8f34c0
16 changed files with 309 additions and 12 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Api\Catalog;
use App\Http\Controllers\Controller;
use App\Models\Admin\Versioning\CurrentCatalogVersion;
use App\Models\Game\CatalogItem;
use Auth;
use Illuminate\Database\Eloquent\Collection;
@@ -16,6 +17,9 @@ class CatalogController extends Controller
public function getCatalog(string $catalogVersion): string
{
if($catalogVersion !== CurrentCatalogVersion::get()?->catalogVersion)
abort(404);
return Storage::disk('local')->get('/catalog/catalog.json');
}

View File

@@ -15,6 +15,7 @@
use App\Http\Responses\Api\Matchmaking\QueueResponse;
use App\Models\Admin\Archive\ArchivedGame;
use App\Models\Admin\Archive\ArchivedPlayerProgression;
use App\Models\Admin\Versioning\CurrentGameVersion;
use App\Models\Game\Matchmaking\Game;
use App\Models\Game\Matchmaking\QueuedPlayer;
use App\Models\User\User;
@@ -37,6 +38,9 @@ public function getRegions()
public function queue(QueueRequest $request)
{
if($request->category !== CurrentGameVersion::get()?->gameVersion)
abort(403, 'Too old mod version');
if($request->checkOnly)
return json_encode($this->checkQueueStatus($request));

View File

@@ -7,6 +7,7 @@
use App\Http\Controllers\Controller;
use App\Http\Responses\Api\Statistics\OnlinePlayersResponse;
use App\Models\Admin\LauncherMessage;
use App\Models\Admin\Versioning\LauncherVersion;
use App\Models\Game\Matchmaking\Game;
use App\Models\Game\Matchmaking\QueuedPlayer;
use DB;
@@ -37,7 +38,7 @@ public function getOnlinePlayers() {
}
public function getLauncherVersion(): ?string {
return json_encode(config('app.launcher_version'));
return json_encode(LauncherVersion::get()?->launcherVersion);
}
public function getLauncherMessage(): ?string {

View File

@@ -4,6 +4,9 @@
use App\Http\Controllers\Controller;
use App\Http\Responses\TexResponse;
use App\Models\Admin\Versioning\CurrentCatalogVersion;
use App\Models\Admin\Versioning\CurrentContentVersion;
use App\Models\Admin\Versioning\CurrentGameVersion;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Str;
@@ -37,15 +40,10 @@ public function getLatestClientData()
public function getLatestContentVersion(string $version)
{
$supportedVersion = match($version) {
'0' => 'dev030',
'2.0' => 'dev020',
'2.2' => 'te-23ebf96c-27498-ue4-7172a3f5',
'2.5' => 'te-40131b9e-33193-ue4-fbccc218',
'3.0' => 'dev030',
default => 'te-18f25613-36778-ue4-374f864b'
};
$currentVersion = CurrentContentVersion::get()?->contentVersion;
if($currentVersion === $version)
return ['LatestSupportedVersion' => CurrentCatalogVersion::get()?->catalogVersion];
return ['LatestSupportedVersion' => $supportedVersion];
abort(404);
}
}

View File

@@ -30,6 +30,7 @@ final public static function getAllTools(): array
return [
GameNewsController::class,
FileManagerController::class,
VersioningController::class,
LauncherMessageController::class,
LogViewerController::class,
UsersController::class,

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers\Web\Admin\Tools;
use App\Enums\Auth\Permissions;
use App\Http\Requests\Api\Admin\Tools\SaveLauncherMessageRequest;
use App\Http\Requests\Api\Admin\Tools\SaveVersioningRequest;
use App\Models\Admin\LauncherMessage;
use App\Models\Admin\Versioning\CurrentCatalogVersion;
use App\Models\Admin\Versioning\CurrentContentVersion;
use App\Models\Admin\Versioning\CurrentGameVersion;
use App\Models\Admin\Versioning\LauncherVersion;
use Session;
class VersioningController extends AdminToolController
{
protected static string $name = 'Versioning';
protected static string $description = 'Manage the Launcher & Game Versions.';
protected static string $iconComponent = 'icons.arrow-left-right';
protected static Permissions $neededPermission = Permissions::FILE_UPLOAD;
public function index()
{
return view('admin.tools.versioning', [
'message' => LauncherMessage::getMessage(),
]);
}
public function save(SaveVersioningRequest $request) {
$errorMessage = '';
$successMessage= '';
$success = (new CurrentGameVersion($request->gameVersion))->save();
if($success === true)
$successMessage .= "Game version saved\n\n";
else
$errorMessage .= "Game version saving failed: ' . $success\n\n";
$success = (new CurrentContentVersion($request->contentVersion))->save();
if($success === true)
$successMessage .= "Content version saved\n\n";
else
$errorMessage .= "Content version saving failed: ' . $success\n\n";
(new CurrentCatalogVersion($request->catalogVersion))->save();
if($success === true)
$successMessage .= "Catalog version saved\n\n";
else
$errorMessage .= "Catalog version saving failed: ' . $success\n\n";
(new LauncherVersion($request->launcherVersion))->save();
if($success === true)
$successMessage .= "Launcher version saved\n\n";
else
$errorMessage .= "Launcher version saving failed: ' . $success\n\n";
if($success !== '')
Session::flash('alert-success', nl2br(trim($successMessage)));
if($errorMessage !== '')
Session::flash('alert-error', nl2br(trim($errorMessage)));
return back();
}
}