From a140c58d73058858c1d7c0095c8f2a7aaad946e8 Mon Sep 17 00:00:00 2001 From: letheriver2007 Date: Tue, 15 Apr 2025 16:44:41 +0800 Subject: [PATCH] fix: separate hotfix by client --- Common/Util/ConfigManager.cs | 17 +++++++++-------- WebServer/Handler/QueryGatewayHandler.cs | 7 ++++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Common/Util/ConfigManager.cs b/Common/Util/ConfigManager.cs index 6489e189..e8af83c0 100644 --- a/Common/Util/ConfigManager.cs +++ b/Common/Util/ConfigManager.cs @@ -56,14 +56,13 @@ public static class ConfigManager // Generate all necessary versions var verList = new List(); - if (GameConstants.GAME_VERSION.Length > 4) - for (var i = 1; i < 6; i++) - verList.Add(GameConstants.GAME_VERSION + i.ToString()); - else - verList.Add(GameConstants.GAME_VERSION); - - Logger.Info(I18NManager.Translate("Server.ServerInfo.CurrentVersion", - verList.Aggregate((current, next) => $"{current}, {next}"))); + var prefix = new List { "CN", "OS" }; + foreach (var pre in prefix) + if (GameConstants.GAME_VERSION[^1] == '5') + for (var i = 1; i < 6; i++) + verList.Add(pre + GameConstants.GAME_VERSION + i.ToString()); + else + verList.Add(pre + GameConstants.GAME_VERSION); if (!file.Exists) { @@ -83,6 +82,8 @@ public static class ConfigManager if (!Hotfix.HotfixData.TryGetValue(version, out var _)) Hotfix.HotfixData[version] = new(); + Logger.Info(I18NManager.Translate("Server.ServerInfo.CurrentVersion", GameConstants.GAME_VERSION)); + SaveData(Hotfix, HotfixFilePath); } diff --git a/WebServer/Handler/QueryGatewayHandler.cs b/WebServer/Handler/QueryGatewayHandler.cs index b66a5e3f..dc84a2bc 100644 --- a/WebServer/Handler/QueryGatewayHandler.cs +++ b/WebServer/Handler/QueryGatewayHandler.cs @@ -36,9 +36,9 @@ internal partial class QueryGatewayHandler if (ConfigManager.Config.GameServer.UsePacketEncryption) gateServer.ClientSecretKey = Convert.ToBase64String(Crypto.ClientSecretKey!.GetBytes()); + // Auto separate CN/OS prefix var region = ConfigManager.Hotfix.Region; - if (region == BaseRegionEnum.None) - _ = Enum.TryParse(version[..2], out region); + if (region == BaseRegionEnum.None) _ = Enum.TryParse(version[..2], out region); var baseUrl = region switch { BaseRegionEnum.CN => BaseUrl.CN, @@ -46,6 +46,7 @@ internal partial class QueryGatewayHandler _ => BaseUrl.OS }; + // Separate CN/OS hotfix by client var ver = VersionRegex().Replace(version, ""); ConfigManager.Hotfix.HotfixData.TryGetValue(ver, out var urls); if (urls != null) @@ -66,6 +67,6 @@ internal partial class QueryGatewayHandler Data = Convert.ToBase64String(gateServer.ToByteArray()); } - [GeneratedRegex(@"CN|OS|BETA|PROD|Android|Win|iOS")] + [GeneratedRegex(@"BETA|PROD|CECREATION|Android|Win|iOS")] private static partial Regex VersionRegex(); } \ No newline at end of file