Feature:Asynchronous Operation & Formatting Code

- Now the async operation is enabled!
- Code formatted by Resharper plugin <3
This commit is contained in:
Somebody
2024-07-22 17:12:03 +08:00
parent e983375620
commit 87d228eb79
793 changed files with 34764 additions and 40190 deletions

View File

@@ -3,38 +3,38 @@ using EggLink.DanhengServer.WebServer.Objects;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace EggLink.DanhengServer.WebServer.Handler
namespace EggLink.DanhengServer.WebServer.Handler;
public class ComboTokenGranterHandler
{
public class ComboTokenGranterHandler
public JsonResult Handle(int app_id, int channel_id, string data, string device, string sign)
{
public JsonResult Handle(int app_id, int channel_id, string data, string device, string sign)
var tokenData = JsonConvert.DeserializeObject<LoginTokenData>(data);
var res = new ComboTokenResJson();
if (tokenData == null)
{
var tokenData = JsonConvert.DeserializeObject<LoginTokenData>(data);
ComboTokenResJson res = new ComboTokenResJson();
if (tokenData == null)
{
res.retcode = -202;
res.message = "Invalid login data";
return new JsonResult(res);
}
AccountData? account = AccountData.GetAccountByUid(int.Parse(tokenData.uid!));
if (account == null)
{
res.retcode = -201;
res.message = "Game account cache information error";
return new JsonResult(res);
} else
{
res.message = "OK";
res.data = new ComboTokenResJson.LoginData(account.Uid.ToString(), account.GenerateComboToken());
}
res.retcode = -202;
res.message = "Invalid login data";
return new JsonResult(res);
}
}
public class LoginTokenData
{
public string? uid { get; set; }
public string? token { get; set; }
public bool guest { get; set; }
var account = AccountData.GetAccountByUid(int.Parse(tokenData.uid!));
if (account == null)
{
res.retcode = -201;
res.message = "Game account cache information error";
return new JsonResult(res);
}
res.message = "OK";
res.data = new ComboTokenResJson.LoginData(account.Uid.ToString(), account.GenerateComboToken());
return new JsonResult(res);
}
}
public class LoginTokenData
{
public string? uid { get; set; }
public string? token { get; set; }
public bool guest { get; set; }
}

View File

@@ -1,45 +1,45 @@
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using static EggLink.DanhengServer.WebServer.Handler.FingerprintResJson;
namespace EggLink.DanhengServer.WebServer.Handler
namespace EggLink.DanhengServer.WebServer.Handler;
public class FingerprintHandler
{
public class FingerprintHandler
public JsonResult GetFp(string device_fp)
{
public JsonResult GetFp(string device_fp)
FingerprintResJson res = new();
if (device_fp == null)
{
FingerprintResJson res = new();
if (device_fp == null)
{
res.retcode = -202;
res.message = "Error";
} else
{
res.message = "OK";
res.data = new FingerprintDataJson(device_fp);
}
return new JsonResult(res);
res.retcode = -202;
res.message = "Error";
}
}
public class FingerprintResJson
{
public string? message { get; set; }
public int retcode { get; set; }
public FingerprintDataJson? data { get; set; }
public class FingerprintDataJson
else
{
public string device_fp { get; set; }
public string message { get; set; }
public int code { get; set; }
public FingerprintDataJson(string fp)
{
code = 200;
message = "OK";
device_fp = fp;
}
res.message = "OK";
res.data = new FingerprintDataJson(device_fp);
}
return new JsonResult(res);
}
}
public class FingerprintResJson
{
public string? message { get; set; }
public int retcode { get; set; }
public FingerprintDataJson? data { get; set; }
public class FingerprintDataJson
{
public FingerprintDataJson(string fp)
{
code = 200;
message = "OK";
device_fp = fp;
}
public string device_fp { get; set; }
public string message { get; set; }
public int code { get; set; }
}
}

View File

@@ -1,37 +1,38 @@
using Microsoft.AspNetCore.Mvc;
using EggLink.DanhengServer.Database.Account;
using EggLink.DanhengServer.Database.Account;
using EggLink.DanhengServer.Util;
using static EggLink.DanhengServer.WebServer.Objects.NewLoginResJson;
using EggLink.DanhengServer.WebServer.Objects;
using Microsoft.AspNetCore.Mvc;
using static EggLink.DanhengServer.WebServer.Objects.NewLoginResJson;
namespace EggLink.DanhengServer.WebServer.Handler
namespace EggLink.DanhengServer.WebServer.Handler;
public class NewUsernameLoginHandler
{
public class NewUsernameLoginHandler
public JsonResult Handle(string account, string password)
{
public JsonResult Handle(string account, string password)
NewLoginResJson res = new();
var accountData = AccountData.GetAccountByUserName(account);
if (accountData == null)
{
NewLoginResJson res = new();
AccountData? accountData = AccountData.GetAccountByUserName(account);
if (accountData == null)
if (ConfigManager.Config.ServerOption.AutoCreateUser)
{
if (ConfigManager.Config.ServerOption.AutoCreateUser)
{
AccountHelper.CreateAccount(account, 0);
accountData = AccountData.GetAccountByUserName(account);
}
else
{
return new JsonResult(new NewLoginResJson { message = "Account not found", retcode = -201 });
}
AccountHelper.CreateAccount(account, 0);
accountData = AccountData.GetAccountByUserName(account);
}
if (accountData != null)
else
{
res.message = "OK";
res.data = new VerifyData(accountData.Uid.ToString(), accountData.Username + "@egglink.me", accountData.GenerateDispatchToken());
return new JsonResult(new NewLoginResJson { message = "Account not found", retcode = -201 });
}
return new JsonResult(res);
}
if (accountData != null)
{
res.message = "OK";
res.data = new VerifyData(accountData.Uid.ToString(), accountData.Username + "@egglink.me",
accountData.GenerateDispatchToken());
}
return new JsonResult(res);
}
}
}

View File

@@ -2,55 +2,52 @@
using EggLink.DanhengServer.Util;
using Google.Protobuf;
namespace EggLink.DanhengServer.WebServer.Handler
namespace EggLink.DanhengServer.WebServer.Handler;
internal class QueryGatewayHandler
{
internal class QueryGatewayHandler
public static Logger Logger = new("GatewayServer");
public string Data;
public QueryGatewayHandler()
{
public static Logger Logger = new("GatewayServer");
public string Data;
public QueryGatewayHandler()
var config = ConfigManager.Config;
var urlData = config.DownloadUrl;
// build gateway proto
var gateServer = new GateServer
{
var config = ConfigManager.Config;
var urlData = config.DownloadUrl;
RegionName = config.GameServer.GameServerId,
Ip = config.GameServer.PublicAddress,
Port = config.GameServer.PublicPort,
Msg = "Access verification failed. Please check if you have logged in to the correct account and server.",
B1 = true,
B2 = true,
B3 = true,
B4 = true,
B5 = true
};
// build gateway proto
var gateServer = new GateServer()
{
RegionName = config.GameServer.GameServerId,
Ip = config.GameServer.PublicAddress,
Port = config.GameServer.PublicPort,
Msg = "Access verification failed. Please check if you have logged in to the correct account and server.",
B1 = true,
B2 = true,
B3 = true,
B4 = true,
B5 = true,
};
if (urlData.AssetBundleUrl != null && urlData.AssetBundleUrl.Length > 0)
gateServer.AssetBundleUrl = urlData.AssetBundleUrl;
if (urlData.AssetBundleUrl != null && urlData.AssetBundleUrl.Length > 0)
{
gateServer.AssetBundleUrl = urlData.AssetBundleUrl;
}
if (urlData.ExResourceUrl != null && urlData.ExResourceUrl.Length > 0)
gateServer.ExResourceUrl = urlData.ExResourceUrl;
if (urlData.ExResourceUrl != null && urlData.ExResourceUrl.Length > 0)
{
gateServer.ExResourceUrl = urlData.ExResourceUrl;
}
if (urlData.LuaUrl != null && urlData.LuaUrl.Length > 0)
{
gateServer.LuaUrl = urlData.LuaUrl;
gateServer.MdkResVersion = urlData.LuaUrl.Split('/')[^1].Split('_')[1];
}
if (urlData.IfixUrl != null && urlData.IfixUrl.Length > 0)
{
gateServer.IfixUrl = urlData.IfixUrl;
gateServer.IfixVersion = urlData.IfixUrl.Split('/')[^1].Split('_')[1];
}
Logger.Info("Client request: query_gateway");
Data = Convert.ToBase64String(gateServer.ToByteArray());
if (urlData.LuaUrl != null && urlData.LuaUrl.Length > 0)
{
gateServer.LuaUrl = urlData.LuaUrl;
gateServer.MdkResVersion = urlData.LuaUrl.Split('/')[^1].Split('_')[1];
}
if (urlData.IfixUrl != null && urlData.IfixUrl.Length > 0)
{
gateServer.IfixUrl = urlData.IfixUrl;
gateServer.IfixVersion = urlData.IfixUrl.Split('/')[^1].Split('_')[1];
}
Logger.Info("Client request: query_gateway");
Data = Convert.ToBase64String(gateServer.ToByteArray());
}
}
}

View File

@@ -3,25 +3,25 @@ using EggLink.DanhengServer.WebServer.Objects;
using Microsoft.AspNetCore.Mvc;
using static EggLink.DanhengServer.WebServer.Objects.LoginResJson;
namespace EggLink.DanhengServer.WebServer.Handler
namespace EggLink.DanhengServer.WebServer.Handler;
public class TokenLoginHandler
{
public class TokenLoginHandler
public JsonResult Handle(string uid, string token)
{
public JsonResult Handle(string uid, string token)
var account = AccountData.GetAccountByUid(int.Parse(uid));
var res = new LoginResJson();
if (account == null || !account?.DispatchToken?.Equals(token) == true)
{
AccountData? account = AccountData.GetAccountByUid(int.Parse(uid));
var res = new LoginResJson();
if (account == null || !account?.DispatchToken?.Equals(token) == true)
{
res.retcode = -201;
res.message = "Game account cache information error";
}
else
{
res.message = "OK";
res.data = new VerifyData(account!.Uid.ToString(), account.Username + "@egglink.me", token);
}
return new JsonResult(res);
res.retcode = -201;
res.message = "Game account cache information error";
}
else
{
res.message = "OK";
res.data = new VerifyData(account!.Uid.ToString(), account.Username + "@egglink.me", token);
}
return new JsonResult(res);
}
}
}

View File

@@ -1,37 +1,38 @@
using Microsoft.AspNetCore.Mvc;
using EggLink.DanhengServer.Database.Account;
using EggLink.DanhengServer.Database.Account;
using EggLink.DanhengServer.Util;
using static EggLink.DanhengServer.WebServer.Objects.LoginResJson;
using EggLink.DanhengServer.WebServer.Objects;
using Microsoft.AspNetCore.Mvc;
using static EggLink.DanhengServer.WebServer.Objects.LoginResJson;
namespace EggLink.DanhengServer.WebServer.Handler
namespace EggLink.DanhengServer.WebServer.Handler;
public class UsernameLoginHandler
{
public class UsernameLoginHandler
public JsonResult Handle(string account, string password, bool isCrypto)
{
public JsonResult Handle(string account, string password, bool isCrypto)
LoginResJson res = new();
var accountData = AccountData.GetAccountByUserName(account);
if (accountData == null)
{
LoginResJson res = new();
AccountData? accountData = AccountData.GetAccountByUserName(account);
if (accountData == null)
if (ConfigManager.Config.ServerOption.AutoCreateUser)
{
if (ConfigManager.Config.ServerOption.AutoCreateUser)
{
AccountHelper.CreateAccount(account, 0);
accountData = AccountData.GetAccountByUserName(account);
}
else
{
return new JsonResult(new LoginResJson { message = "Account not found", retcode = -201 });
}
AccountHelper.CreateAccount(account, 0);
accountData = AccountData.GetAccountByUserName(account);
}
if (accountData != null)
else
{
res.message = "OK";
res.data = new VerifyData(accountData.Uid.ToString(), accountData.Username + "@egglink.me", accountData.GenerateDispatchToken());
return new JsonResult(new LoginResJson { message = "Account not found", retcode = -201 });
}
return new JsonResult(res);
}
if (accountData != null)
{
res.message = "OK";
res.data = new VerifyData(accountData.Uid.ToString(), accountData.Username + "@egglink.me",
accountData.GenerateDispatchToken());
}
return new JsonResult(res);
}
}
}