mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-07-30 16:58:38 +00:00
Rework parsing to check against GameVersion enum and game token GameVersion
This commit is contained in:
parent
63b61d831c
commit
b77b7b3fb9
3 changed files with 28 additions and 13 deletions
|
@ -67,14 +67,6 @@ public class LoginController : ControllerBase
|
||||||
|
|
||||||
UserEntity? user;
|
UserEntity? user;
|
||||||
|
|
||||||
if (ServerConfiguration.Instance.Authentication.RequirePatchworkUserAgent)
|
|
||||||
{
|
|
||||||
if (!PatchworkHelper.UserHasValidPatchworkUserAgent(this.Request.Headers.UserAgent.ToString()))
|
|
||||||
{
|
|
||||||
return this.Forbid();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (npTicket.Platform)
|
switch (npTicket.Platform)
|
||||||
{
|
{
|
||||||
case Platform.RPCS3:
|
case Platform.RPCS3:
|
||||||
|
@ -221,6 +213,14 @@ public class LoginController : ControllerBase
|
||||||
return this.Forbid();
|
return this.Forbid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ServerConfiguration.Instance.Authentication.RequirePatchworkUserAgent)
|
||||||
|
{
|
||||||
|
if (!PatchworkHelper.UserHasValidPatchworkUserAgent(token, this.Request.Headers.UserAgent.ToString()))
|
||||||
|
{
|
||||||
|
return this.Forbid();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Logger.Success($"Successfully logged in user {user.Username} as {token.GameVersion} client", LogArea.Login);
|
Logger.Success($"Successfully logged in user {user.Username} as {token.GameVersion} client", LogArea.Login);
|
||||||
|
|
||||||
user.LastLogin = TimeHelper.TimestampMillis;
|
user.LastLogin = TimeHelper.TimestampMillis;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
using LBPUnion.ProjectLighthouse.Database;
|
using LBPUnion.ProjectLighthouse.Database;
|
||||||
using LBPUnion.ProjectLighthouse.Extensions;
|
using LBPUnion.ProjectLighthouse.Extensions;
|
||||||
using LBPUnion.ProjectLighthouse.Servers.GameServer.Helpers;
|
|
||||||
using LBPUnion.ProjectLighthouse.Helpers;
|
using LBPUnion.ProjectLighthouse.Helpers;
|
||||||
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
|
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
|
||||||
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
|
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
|
||||||
|
|
|
@ -1,20 +1,36 @@
|
||||||
using LBPUnion.ProjectLighthouse.Configuration;
|
using LBPUnion.ProjectLighthouse.Configuration;
|
||||||
|
using LBPUnion.ProjectLighthouse.Configuration.ConfigurationCategories;
|
||||||
|
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
|
||||||
|
using LBPUnion.ProjectLighthouse.Types.Users;
|
||||||
|
|
||||||
namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Helpers;
|
namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Helpers;
|
||||||
|
|
||||||
public static class PatchworkHelper
|
public static class PatchworkHelper
|
||||||
{
|
{
|
||||||
static int patchworkMajorVer = ServerConfiguration.Instance.PatchworkMajorVersionMinimum;
|
static int patchworkMajorVer = ServerConfiguration.Instance.Authentication.PatchworkMajorVersionMinimum;
|
||||||
static int patchworkMinorVer = ServerConfiguration.Instance.PatchworkMinorVersionMinimum;
|
static int patchworkMinorVer = ServerConfiguration.Instance.Authentication.PatchworkMinorVersionMinimum;
|
||||||
public static bool UserHasValidPatchworkUserAgent(string userAgent)
|
public static bool UserHasValidPatchworkUserAgent(GameTokenEntity token, string userAgent)
|
||||||
{
|
{
|
||||||
string userAgentPrefix = "PatchworkLBP";
|
string userAgentPrefix = "PatchworkLBP";
|
||||||
char gameVersion = userAgent[userAgentPrefix.Length];
|
char gameVersion = userAgent[userAgentPrefix.Length];
|
||||||
|
int numericVersion = 0;
|
||||||
|
|
||||||
if (userAgent.StartsWith(userAgentPrefix))
|
if (userAgent.StartsWith(userAgentPrefix))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (gameVersion is not '1' or '2' or '3' or 'V')
|
if (char.IsLetterOrDigit(gameVersion))
|
||||||
|
{
|
||||||
|
if (gameVersion == 'V')
|
||||||
|
numericVersion = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
numericVersion = gameVersion - '0';
|
||||||
|
|
||||||
|
// Don't want it to be 0 still because of Unknown (-1) in GameVersion
|
||||||
|
if (numericVersion == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (numericVersion - 1 != (int)token.GameVersion && !Enum.IsDefined(typeof(GameVersion), numericVersion))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
string[] patchworkVer = userAgent.Split(' ')[1].Split('.');
|
string[] patchworkVer = userAgent.Split(' ')[1].Split('.');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue