diff --git a/FunGame.Server/Controllers/DataRequestController.cs b/FunGame.Server/Controllers/DataRequestController.cs index 026d596..7b49821 100644 --- a/FunGame.Server/Controllers/DataRequestController.cs +++ b/FunGame.Server/Controllers/DataRequestController.cs @@ -489,26 +489,28 @@ namespace Milimoe.FunGame.Server.Controller else { // 发送验证码,需要先删除之前过期的验证码 + SQLHelper.NewTransaction(); SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email)); RegVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6); SQLHelper.Execute(RegVerifyCodes.Insert_RegVerifyCode(username, email, RegVerify)); if (SQLHelper.Result == SQLResult.Success) { + SQLHelper.Commit(); if (MailSender != null) { // 发送验证码 string ServerName = Config.ServerName; string Subject = $"[{ServerName}] FunGame 注册验证码"; - string Body = $"亲爱的 {username},
感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}"; - string[] To = new string[] { email }; + string Body = $"亲爱的 {username},
感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}"; + string[] To = [email]; if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success) { ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{RegVerify}"); } else { - ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码"); - ServerHelper.WriteLine(MailSender.ErrorMsg); + ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码", InvokeMessageType.Error); + ServerHelper.WriteLine(MailSender.ErrorMsg, InvokeMessageType.Error); } } else // 不使用MailSender的情况 @@ -517,6 +519,7 @@ namespace Milimoe.FunGame.Server.Controller } returnType = RegInvokeType.InputVerifyCode; } + else SQLHelper.Rollback(); } } } @@ -540,6 +543,7 @@ namespace Milimoe.FunGame.Server.Controller // 注册 if (RegVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode])) { + SQLHelper.NewTransaction(); ServerHelper.WriteLine("[Reg] UserName: " + username + " Email: " + email); SQLHelper.Execute(UserQuery.Insert_Register(username, password, email, Server.Socket?.ClientIP ?? "")); if (SQLHelper.Result == SQLResult.Success) @@ -547,9 +551,11 @@ namespace Milimoe.FunGame.Server.Controller success = true; msg = "注册成功!请牢记您的账号与密码!"; SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email)); + SQLHelper.Commit(); } else { + SQLHelper.Rollback(); msg = "服务器无法处理您的注册,注册失败!"; } } @@ -704,8 +710,8 @@ namespace Milimoe.FunGame.Server.Controller // 发送验证码 string ServerName = Config.ServerName; string Subject = $"[{ServerName}] FunGame 找回密码验证码"; - string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}"; - string[] To = new string[] { email }; + string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!

{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.LongDateOnly)}"; + string[] To = [email]; if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success) { ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{ForgetVerify}"); diff --git a/FunGame.Server/Main.cs b/FunGame.Server/Main.cs index f0e20cb..a10074d 100644 --- a/FunGame.Server/Main.cs +++ b/FunGame.Server/Main.cs @@ -224,7 +224,7 @@ bool Connect(ClientSocket socket, Guid token, string clientip, ref bool isDebugM return false; } - ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(read.SocketType) + "] " + ServerHelper.MakeClientName(socket.ClientIP), InvokeMessageType.Core); + ServerHelper.WriteLine("[" + SocketSet.GetTypeString(read.SocketType) + "] " + ServerHelper.MakeClientName(socket.ClientIP), InvokeMessageType.Core); // 读取参数 // 参数1:客户端的游戏模组列表,没有服务器的需要拒绝 diff --git a/FunGame.Server/Models/ServerModel.cs b/FunGame.Server/Models/ServerModel.cs index 12a9611..1348f2e 100644 --- a/FunGame.Server/Models/ServerModel.cs +++ b/FunGame.Server/Models/ServerModel.cs @@ -83,7 +83,7 @@ namespace Milimoe.FunGame.Server.Model // 验证Token if (type != SocketMessageType.HeartBeat && token != Token) { - ServerHelper.WriteLine(GetClientName() + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + ServerSocket.GetTypeString(type) + "] "); + ServerHelper.WriteLine(GetClientName() + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + SocketSet.GetTypeString(type) + "] "); return false; } @@ -111,7 +111,7 @@ namespace Milimoe.FunGame.Server.Model switch (type) { case SocketMessageType.Disconnect: - ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + GetClientName() + " -> Disconnect", InvokeMessageType.Core); + ServerHelper.WriteLine("[" + SocketSet.GetTypeString(SocketMessageType.DataRequest) + "] " + GetClientName() + " -> Disconnect", InvokeMessageType.Core); msg = "你已成功断开与服务器的连接: " + Config.ServerName + "。 "; break; } @@ -139,9 +139,7 @@ namespace Milimoe.FunGame.Server.Model type = SocketObject.GetParam(0); Hashtable data = SocketObject.GetParam(1) ?? []; - SQLHelper.NewTransaction(); result = DataRequestController.GetResultData(type, data); - SQLHelper.Commit(); } catch (Exception e) { @@ -207,7 +205,7 @@ namespace Milimoe.FunGame.Server.Model } object obj = objs[0]; if (obj.GetType() == typeof(string) && (string)obj != "") - ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + GetClientName() + " <- " + obj, InvokeMessageType.Core); + ServerHelper.WriteLine("[" + SocketSet.GetTypeString(type) + "] " + GetClientName() + " <- " + obj, InvokeMessageType.Core); return true; } throw new CanNotSendToClientException(); @@ -565,7 +563,7 @@ namespace Milimoe.FunGame.Server.Model private void CreateStreamReader() { - Thread.Sleep(100); + Thread.Sleep(20); ServerHelper.WriteLine("Creating: StreamReader -> " + GetClientName() + " ...OK"); while (Running) { @@ -598,13 +596,24 @@ namespace Milimoe.FunGame.Server.Model private void CreatePeriodicalQuerier() { - Thread.Sleep(100); + Thread.Sleep(20); ServerHelper.WriteLine("Creating: PeriodicalQuerier -> " + GetClientName() + " ...OK"); while (Running) { // 每两小时触发一次SQL服务器的心跳查询,防止SQL服务器掉线 - Thread.Sleep(2 * 1000 * 3600); - SQLHelper?.ExecuteDataSet(UserQuery.Select_IsExistUsername(UserName)); + try + { + Thread.Sleep(2 * 1000 * 3600); + SQLHelper?.ExecuteDataSet(UserQuery.Select_IsExistUsername(UserName)); + } + catch (Exception e) + { + ServerHelper.Error(e); + RemoveUser(); + Close(); + ServerHelper.WriteLine(GetClientName() + " Error -> Socket is Closed."); + ServerHelper.WriteLine(GetClientName() + " Close -> StringStream is Closed."); + } } }