mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-03 04:36:03 +08:00
72 lines
2.6 KiB
C#
72 lines
2.6 KiB
C#
using System.Text.RegularExpressions;
|
|
using EggLink.DanhengServer.Configuration;
|
|
using EggLink.DanhengServer.Data;
|
|
using EggLink.DanhengServer.Enums;
|
|
using EggLink.DanhengServer.Internationalization;
|
|
using EggLink.DanhengServer.Proto;
|
|
using EggLink.DanhengServer.Util;
|
|
using Google.Protobuf;
|
|
|
|
namespace EggLink.DanhengServer.WebServer.Handler;
|
|
|
|
internal partial class QueryGatewayHandler
|
|
{
|
|
public static Logger Logger = new("GatewayServer");
|
|
public string Data;
|
|
|
|
public QueryGatewayHandler(string version)
|
|
{
|
|
var config = ConfigManager.Config;
|
|
|
|
// build gateway proto
|
|
var gateServer = new GateServer
|
|
{
|
|
RegionName = config.GameServer.GameServerId,
|
|
Ip = config.GameServer.PublicAddress,
|
|
Port = config.GameServer.Port,
|
|
LoginWhiteMsg = I18NManager.Translate("Server.Web.Maintain"),
|
|
EnableVersionUpdate = true,
|
|
EnableUploadBattleLog = true,
|
|
EnableDesignDataVersionUpdate = true,
|
|
EnableWatermark = true,
|
|
EnableAndroidMiddlePackage = true,
|
|
NetworkDiagnostic = true,
|
|
CloseRedeemCode = true
|
|
};
|
|
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);
|
|
var baseUrl = region switch
|
|
{
|
|
BaseRegionEnum.CN => BaseUrl.CN,
|
|
BaseRegionEnum.OS => BaseUrl.OS,
|
|
_ => BaseUrl.OS
|
|
};
|
|
|
|
// Separate CN/OS hotfix by client
|
|
var ver = VersionRegex().Replace(version, "");
|
|
ConfigManager.Hotfix.HotfixData.TryGetValue(ver, out var urls);
|
|
if (urls != null)
|
|
{
|
|
if (urls.AssetBundleUrl != "")
|
|
gateServer.AssetBundleUrl = baseUrl + urls.AssetBundleUrl;
|
|
if (urls.ExResourceUrl != "")
|
|
gateServer.ExResourceUrl = baseUrl + urls.ExResourceUrl;
|
|
if (urls.LuaUrl != "")
|
|
gateServer.LuaUrl = baseUrl + urls.LuaUrl;
|
|
if (urls.IfixUrl != "")
|
|
gateServer.IfixUrl = baseUrl + urls.IfixUrl;
|
|
}
|
|
|
|
if (!ResourceManager.IsLoaded) gateServer.Retcode = 2;
|
|
Logger.Info("Client request: query_gateway");
|
|
|
|
Data = Convert.ToBase64String(gateServer.ToByteArray());
|
|
}
|
|
|
|
[GeneratedRegex(@"BETA|PROD|CECREATION|Android|Win|iOS")]
|
|
private static partial Regex VersionRegex();
|
|
} |