Stop execution of invalid profiles on game start

This commit is contained in:
Archangel
2025-09-18 18:09:34 +02:00
parent f7e8aa9e77
commit 7184b4e5db
3 changed files with 28 additions and 0 deletions
@@ -1,6 +1,7 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Controllers;
using SPTarkov.Server.Core.DI;
using SPTarkov.Server.Core.Exceptions.Profile;
using SPTarkov.Server.Core.Models.Common;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Request;
@@ -42,6 +43,11 @@ public class GameCallbacks(
/// <returns></returns>
public ValueTask<string> GameStart(string url, EmptyRequestData _, MongoId sessionID)
{
if (saveServer.IsProfileInvalidOrUnloadable(sessionID))
{
throw new ProfileIncompatibleException("This profile cannot be loaded due to it being invalid or unloadable!");
}
var startTimestampSec = timeUtil.GetTimeStamp();
gameController.GameStart(url, sessionID, startTimestampSec);
return new ValueTask<string>(httpResponseUtil.GetBody(new GameStartResponse { UtcTime = startTimestampSec }));
@@ -1,4 +1,5 @@
using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Exceptions.Profile;
using SPTarkov.Server.Core.Extensions;
using SPTarkov.Server.Core.Helpers;
using SPTarkov.Server.Core.Models.Common;
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SPTarkov.Server.Core.Exceptions.Profile;
public class ProfileIncompatibleException : Exception
{
public ProfileIncompatibleException(string message)
: base(message) { }
public ProfileIncompatibleException(string message, Exception innerException)
: base(message, innerException) { }
public override string? StackTrace
{
get { return null; }
}
}