From 49c2f9e06548955cf9caa26e3ce6f1381083fc8c Mon Sep 17 00:00:00 2001
From: milimoe <110188673+milimoe@users.noreply.github.com>
Date: Mon, 3 Jul 2023 09:27:23 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=BE=E5=9B=9E=E5=AF=86=E7=A0=81=20?=
=?UTF-8?q?=E7=AC=AC=E4=BA=8C=E9=83=A8=E5=88=86=20(#19)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
FunGame.Server/Main.cs | 6 +-
FunGame.Server/Models/DataRequestHandler.cs | 142 +++++++++++
FunGame.Server/Models/ServerModel.cs | 221 ++++++------------
FunGame.Server/Models/SocketMessageHandler.cs | 7 +
4 files changed, 221 insertions(+), 155 deletions(-)
create mode 100644 FunGame.Server/Models/DataRequestHandler.cs
create mode 100644 FunGame.Server/Models/SocketMessageHandler.cs
diff --git a/FunGame.Server/Main.cs b/FunGame.Server/Main.cs
index bec0a94..5e5b264 100644
--- a/FunGame.Server/Main.cs
+++ b/FunGame.Server/Main.cs
@@ -170,7 +170,7 @@ bool Read(ClientSocket socket)
foreach (SocketObject read in socket.ReceiveArray())
{
SocketMessageType type = read.SocketType;
- if (type == SocketMessageType.Connect)
+ if (type == SocketMessageType.RunTime_Connect)
{
if (read.Parameters.Length > 0)
{
@@ -190,7 +190,7 @@ bool Send(ClientSocket socket, Guid Token)
{
// 发送消息给客户端
string msg = Config.ServerName + ";" + Config.ServerNotice;
- if (socket.Send(SocketMessageType.Connect, msg, Token) == SocketResult.Success)
+ if (socket.Send(SocketMessageType.RunTime_Connect, msg, Token) == SocketResult.Success)
{
ServerHelper.WriteLine(ServerHelper.MakeClientName(socket.ClientIP) + " <- " + "已确认连接");
return true;
@@ -204,7 +204,7 @@ bool SendRefuseConnect(ClientSocket socket, string msg)
{
// 发送消息给客户端
msg = $"连接被拒绝,如有疑问请联系服务器管理员:{msg}";
- if (socket.Send(SocketMessageType.Connect, msg) == SocketResult.Success)
+ if (socket.Send(SocketMessageType.RunTime_Connect, msg) == SocketResult.Success)
{
ServerHelper.WriteLine(ServerHelper.MakeClientName(socket.ClientIP) + " <- " + "已拒绝连接");
return true;
diff --git a/FunGame.Server/Models/DataRequestHandler.cs b/FunGame.Server/Models/DataRequestHandler.cs
new file mode 100644
index 0000000..17f82db
--- /dev/null
+++ b/FunGame.Server/Models/DataRequestHandler.cs
@@ -0,0 +1,142 @@
+using System.Collections;
+using Milimoe.FunGame.Core.Api.Utility;
+using Milimoe.FunGame.Core.Library.Common.Network;
+using Milimoe.FunGame.Core.Library.Constant;
+using Milimoe.FunGame.Core.Library.SQLScript.Common;
+using Milimoe.FunGame.Core.Library.SQLScript.Entity;
+using Milimoe.FunGame.Server.Others;
+using Milimoe.FunGame.Server.Utility;
+
+namespace Milimoe.FunGame.Server.Model
+{
+ public partial class ServerModel
+ {
+ ///
+ /// 接收并验证找回密码时的验证码
+ ///
+ ///
+ ///
+ private void DataRequest_ForgetPassword(Hashtable RequestData, Hashtable ResultData)
+ {
+ string msg = "无法找回您的密码,请稍后再试。"; // 返回的验证信息
+ if (RequestData.Count >= 2)
+ {
+ ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> ForgetPassword");
+ string username = NetworkUtility.JsonDeserializeFromHashtable(RequestData, ForgetVerifyCodes.Column_Username) ?? "";
+ string email = NetworkUtility.JsonDeserializeFromHashtable(RequestData, ForgetVerifyCodes.Column_Email) ?? "";
+ string verifycode = NetworkUtility.JsonDeserializeFromHashtable(RequestData, ForgetVerifyCodes.Column_ForgetVerifyCode) ?? "";
+
+ // 客户端发来了验证码就进行验证,没有发就生成
+ if (verifycode.Trim() != "")
+ {
+ // 先检查验证码
+ SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_ForgetVerifyCode(username, email, verifycode));
+ if (SQLHelper.Result == SQLResult.Success)
+ {
+ // 检查验证码是否过期
+ DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
+ if ((DateTime.Now - SendTime).TotalMinutes >= 10)
+ {
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 验证码已过期");
+ msg = "此验证码已过期,请重新找回密码。";
+ SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
+ }
+ else
+ {
+ // 检查验证码是否正确
+ if (ForgetVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode]))
+ {
+ ServerHelper.WriteLine("[ForgerPassword] UserName: " + username + " Email: " + email);
+ SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
+ msg = "";
+ }
+ else msg = "验证码不正确,请重新输入!";
+ }
+ }
+ else msg = "验证码不正确,请重新输入!";
+ }
+ else
+ {
+ // 检查账号和邮箱是否匹配
+ SQLHelper.ExecuteDataSet(UserQuery.Select_CheckEmailWithUsername(username, email));
+ if (SQLHelper.Result != SQLResult.Success)
+ {
+ msg = "此邮箱未绑定此账号,请重试!";
+ }
+ else
+ {
+ // 检查验证码是否发送过和是否过期
+ SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_HasSentForgetVerifyCode(username, email));
+ if (SQLHelper.Result != SQLResult.Success || (DateTime.Now - ((DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime])).TotalMinutes >= 10)
+ {
+ // 发送验证码,需要先删除之前过期的验证码
+ SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
+ ForgetVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
+ SQLHelper.Execute(ForgetVerifyCodes.Insert_ForgetVerifyCode(username, email, ForgetVerify));
+ if (SQLHelper.Result == SQLResult.Success)
+ {
+ if (MailSender != null)
+ {
+ // 发送验证码
+ string ServerName = Config.ServerName;
+ string Subject = $"[{ServerName}] FunGame 找回密码验证码";
+ string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!
{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
+ string[] To = new string[] { email };
+ if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
+ {
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{ForgetVerify}");
+ msg = "";
+ }
+ else
+ {
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
+ ServerHelper.WriteLine(MailSender.ErrorMsg);
+ }
+ }
+ else // 不使用MailSender的情况
+ {
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户");
+ msg = "";
+ }
+ }
+ }
+ else
+ {
+ // 发送过验证码且验证码没有过期
+ string ForgetVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode];
+ ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
+ msg = "";
+ }
+ }
+ }
+ }
+ ResultData.Add("msg", msg);
+ }
+
+ ///
+ /// 更新用户的密码
+ ///
+ ///
+ ///
+ private void DataRequest_UpdatePassword(Hashtable RequestData, Hashtable ResultData)
+ {
+ string msg = "无法更新您的密码,请稍后再试。";
+ if (RequestData.Count >= 2)
+ {
+ ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> UpdatePassword");
+ string username = NetworkUtility.JsonDeserializeFromHashtable(RequestData, UserQuery.Column_Username) ?? "";
+ string password = NetworkUtility.JsonDeserializeFromHashtable(RequestData, UserQuery.Column_Password) ?? "";
+ if (username.Trim() != "" && password.Trim() != "")
+ {
+ SQLHelper.Execute(UserQuery.Update_Password(username, password));
+ if (SQLHelper.Success)
+ {
+ // 更新成功返回空值
+ msg = "";
+ }
+ }
+ }
+ ResultData.Add("msg", msg);
+ }
+ }
+}
diff --git a/FunGame.Server/Models/ServerModel.cs b/FunGame.Server/Models/ServerModel.cs
index a024274..f231ac6 100644
--- a/FunGame.Server/Models/ServerModel.cs
+++ b/FunGame.Server/Models/ServerModel.cs
@@ -13,7 +13,7 @@ using Milimoe.FunGame.Server.Utility;
namespace Milimoe.FunGame.Server.Model
{
- public class ServerModel : IServerModel
+ public partial class ServerModel : IServerModel
{
/**
* Public
@@ -71,7 +71,7 @@ namespace Milimoe.FunGame.Server.Model
string msg = "";
// 验证Token
- if (type != SocketMessageType.HeartBeat && token != Token)
+ if (type != SocketMessageType.RunTime_HeartBeat && token != Token)
{
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + ServerSocket.GetTypeString(type) + "] ");
return false;
@@ -83,8 +83,8 @@ namespace Milimoe.FunGame.Server.Model
}
// 如果不等于这些Type,就不会输出一行记录。这些Type有特定的输出。
- SocketMessageType[] IgnoreType = new SocketMessageType[] { SocketMessageType.HeartBeat, SocketMessageType.Login, SocketMessageType.IntoRoom,
- SocketMessageType.Chat};
+ SocketMessageType[] IgnoreType = new SocketMessageType[] { SocketMessageType.RunTime_HeartBeat, SocketMessageType.RunTime_Login, SocketMessageType.Main_IntoRoom,
+ SocketMessageType.Main_Chat};
if (!IgnoreType.Contains(type))
{
if (msg.Trim() == "")
@@ -95,11 +95,11 @@ namespace Milimoe.FunGame.Server.Model
switch (type)
{
- case SocketMessageType.GetNotice:
+ case SocketMessageType.Main_GetNotice:
msg = Config.ServerNotice;
break;
- case SocketMessageType.Login:
+ case SocketMessageType.RunTime_Login:
CheckLoginKey = Guid.Empty;
if (args != null)
{
@@ -138,7 +138,7 @@ namespace Milimoe.FunGame.Server.Model
}
return Send(socket, type, CheckLoginKey, msg);
- case SocketMessageType.CheckLogin:
+ case SocketMessageType.RunTime_CheckLogin:
if (args != null && args.Length > 0)
{
Guid checkloginkey = SocketObject.GetParam(0);
@@ -160,7 +160,7 @@ namespace Milimoe.FunGame.Server.Model
}
return Send(socket, type, CheckLoginKey.ToString());
- case SocketMessageType.Logout:
+ case SocketMessageType.RunTime_Logout:
Guid checklogoutkey = Guid.Empty;
if (args != null && args.Length > 0)
{
@@ -178,15 +178,15 @@ namespace Milimoe.FunGame.Server.Model
ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登出。");
return Send(socket, type, checklogoutkey);
- case SocketMessageType.Disconnect:
+ case SocketMessageType.RunTime_Disconnect:
msg = "你已成功断开与服务器的连接: " + Config.ServerName + "。 ";
break;
- case SocketMessageType.HeartBeat:
+ case SocketMessageType.RunTime_HeartBeat:
msg = "";
break;
- case SocketMessageType.IntoRoom:
+ case SocketMessageType.Main_IntoRoom:
msg = "-1";
if (args != null && args.Length > 0) msg = SocketObject.GetParam(0)!;
RoomID = msg;
@@ -200,14 +200,14 @@ namespace Milimoe.FunGame.Server.Model
{
if (Client != null && User.Id != 0)
{
- Client.Send(Client.Socket!, SocketMessageType.Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 进入了房间。");
+ Client.Send(Client.Socket!, SocketMessageType.Main_Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 进入了房间。");
}
}
}
}
break;
- case SocketMessageType.Chat:
+ case SocketMessageType.Main_Chat:
if (args != null && args.Length > 0) msg = SocketObject.GetParam(0)!;
ServerHelper.WriteLine(msg);
foreach (ServerModel Client in Server.GetUsersList.Cast())
@@ -216,13 +216,13 @@ namespace Milimoe.FunGame.Server.Model
{
if (Client != null && User.Id != 0)
{
- Client.Send(Client.Socket!, SocketMessageType.Chat, User.Username, DateTimeUtility.GetNowShortTime() + msg);
+ Client.Send(Client.Socket!, SocketMessageType.Main_Chat, User.Username, DateTimeUtility.GetNowShortTime() + msg);
}
}
}
return true;
- case SocketMessageType.Reg:
+ case SocketMessageType.RunTime_Reg:
if (args != null)
{
string? username = "", email = "";
@@ -289,7 +289,7 @@ namespace Milimoe.FunGame.Server.Model
}
return true;
- case SocketMessageType.CheckReg:
+ case SocketMessageType.RunTime_CheckReg:
if (args != null)
{
string? username = "", password = "", email = "", verifycode = "";
@@ -340,7 +340,7 @@ namespace Milimoe.FunGame.Server.Model
else msg = "注册失败!";
return Send(socket, type, false, msg);
- case SocketMessageType.UpdateRoom:
+ case SocketMessageType.Main_UpdateRoom:
Config.RoomList ??= new();
Config.RoomList.Clear();
DataSet DsRoomTemp = new(), DsUserTemp = new();
@@ -350,7 +350,7 @@ namespace Milimoe.FunGame.Server.Model
Config.RoomList.AddRooms(rooms); // 更新服务器中的房间列表
return Send(socket, type, rooms); // 传RoomList
- case SocketMessageType.CreateRoom:
+ case SocketMessageType.Main_CreateRoom:
msg = "-1";
if (args != null)
{
@@ -368,7 +368,7 @@ namespace Milimoe.FunGame.Server.Model
GameMode.GameMode_Team => RoomType.Team,
GameMode.GameMode_MixHasPass => RoomType.MixHasPass,
GameMode.GameMode_TeamHasPass => RoomType.TeamHasPass,
- _ => RoomType.None
+ _ => RoomType.All
};
string roomid = Verification.CreateVerifyCode(VerifyCodeType.MixVerifyCode, 7).ToUpper();
SQLHelper.Execute(RoomQuery.Insert_CreateRoom(roomid, userid, roomtype, password ?? ""));
@@ -380,7 +380,7 @@ namespace Milimoe.FunGame.Server.Model
}
break;
- case SocketMessageType.QuitRoom:
+ case SocketMessageType.Main_QuitRoom:
if (args != null)
{
string? roomid = "";
@@ -422,10 +422,10 @@ namespace Milimoe.FunGame.Server.Model
{
if (Client != null && User.Id != 0)
{
- Client.Send(Client.Socket!, SocketMessageType.Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 离开了房间。");
+ Client.Send(Client.Socket!, SocketMessageType.Main_Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 离开了房间。");
if (UpdateRoomMaster.Id != 0 && Room.Roomid != "-1")
{
- Client.Send(Client.Socket!, SocketMessageType.UpdateRoomMaster, User, Room);
+ Client.Send(Client.Socket!, SocketMessageType.Room_UpdateRoomMaster, User, Room);
}
}
}
@@ -436,13 +436,13 @@ namespace Milimoe.FunGame.Server.Model
}
return Send(socket, type, false);
- case SocketMessageType.MatchRoom:
+ case SocketMessageType.Main_MatchRoom:
break;
- case SocketMessageType.ChangeRoomSetting:
+ case SocketMessageType.Room_ChangeRoomSetting:
break;
- case SocketMessageType.GetRoomPlayerCount:
+ case SocketMessageType.Room_GetRoomPlayerCount:
if (args != null)
{
string? roomid = "-1";
@@ -465,6 +465,45 @@ namespace Milimoe.FunGame.Server.Model
}
}
+ public bool DataRequestHandler(ClientSocket socket, SocketObject SocketObject)
+ {
+ Hashtable ResultData = new();
+ DataRequestType type = DataRequestType.UnKnown;
+
+ if (SocketObject.Parameters.Length > 0)
+ {
+ try
+ {
+ type = SocketObject.GetParam(0);
+ Hashtable RequestData = SocketObject.GetParam(1) ?? new();
+
+ SQLHelper.NewTransaction();
+ switch (type)
+ {
+ case DataRequestType.UnKnown:
+ break;
+
+ case DataRequestType.Login_GetFindPasswordVerifyCode:
+ DataRequest_ForgetPassword(RequestData, ResultData);
+ break;
+
+ case DataRequestType.Login_UpdatePassword:
+ DataRequest_UpdatePassword(RequestData, ResultData);
+ break;
+ }
+ SQLHelper.Commit();
+ }
+ catch (Exception e)
+ {
+ ServerHelper.Error(e);
+ SQLHelper.Rollback();
+ return Send(socket, SocketMessageType.DataRequest, type, ResultData);
+ }
+ }
+
+ return Send(socket, SocketMessageType.DataRequest, type, ResultData);
+ }
+
public bool Send(ClientSocket socket, SocketMessageType type, params object[] objs)
{
// 发送消息给客户端
@@ -474,14 +513,14 @@ namespace Milimoe.FunGame.Server.Model
{
switch (type)
{
- case SocketMessageType.Logout:
+ case SocketMessageType.RunTime_Logout:
RemoveUser();
break;
- case SocketMessageType.Disconnect:
+ case SocketMessageType.RunTime_Disconnect:
RemoveUser();
Close();
break;
- case SocketMessageType.Chat:
+ case SocketMessageType.Main_Chat:
return true;
}
object obj = objs[0];
@@ -498,7 +537,7 @@ namespace Milimoe.FunGame.Server.Model
return false;
}
}
-
+
public void Start()
{
Task StreamReader = Task.Factory.StartNew(CreateStreamReader);
@@ -511,128 +550,6 @@ namespace Milimoe.FunGame.Server.Model
_ClientName = ClientName;
}
- private bool DataRequestHandler(ClientSocket socket, SocketObject SocketObject)
- {
- Hashtable RequestData = new();
- Hashtable ResultData = new();
- DataRequestType type = DataRequestType.UnKnown;
-
- if (SocketObject.Parameters.Length > 0)
- {
- try
- {
- type = SocketObject.GetParam(0);
- RequestData = SocketObject.GetParam(1) ?? new();
- switch (type)
- {
- case DataRequestType.UnKnown:
- break;
-
- case DataRequestType.GetFindPasswordVerifyCode:
- if (RequestData.Count >= 2)
- {
- ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> ForgetPassword");
- string username = (string?)(RequestData[ForgetVerifyCodes.Column_Username]) ?? "";
- string email = (string?)(RequestData[ForgetVerifyCodes.Column_Email]) ?? "";
- string verifycode = (string?)RequestData[ForgetVerifyCodes.Column_ForgetVerifyCode] ?? "";
- string msg = ""; // 返回错误信息
- // 客户端发来了验证码就进行验证,没有发就生成
- if (verifycode.Trim() != "")
- {
- // 先检查验证码
- SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_ForgetVerifyCode(username, email, verifycode));
- if (SQLHelper.Result == SQLResult.Success)
- {
- // 检查验证码是否过期
- DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
- if ((DateTime.Now - SendTime).TotalMinutes >= 10)
- {
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 验证码已过期");
- msg = "此验证码已过期,请重新找回密码。";
- SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
- }
- else
- {
- // 找回密码
- if (ForgetVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode]))
- {
- ServerHelper.WriteLine("[ForgerPassword] UserName: " + username + " Email: " + email);
- // TODO. 等更新UpdatePassword
- if (true)
- {
- //msg = "找回密码!请牢记您的新密码!";
- //SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email), out _);
- }
- //else msg = "服务器无法处理您的注册,注册失败!";
- }
- else msg = "验证码不正确,请重新输入!";
- }
- }
- else msg = "无法找回您的密码,请稍后再试。";
- }
- else
- {
- // 检查验证码是否发送过
- SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_HasSentForgetVerifyCode(username, email));
- if (SQLHelper.Result == SQLResult.Success)
- {
- DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
- string ForgetVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode];
- if ((DateTime.Now - SendTime).TotalMinutes < 10)
- {
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
- }
- else
- {
- // 发送验证码,需要先删除之前过期的验证码
- SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
- ForgetVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
- SQLHelper.Execute(ForgetVerifyCodes.Insert_ForgetVerifyCode(username, email, ForgetVerify));
- if (SQLHelper.Result == SQLResult.Success)
- {
- if (MailSender != null)
- {
- // 发送验证码
- string ServerName = Config.ServerName;
- string Subject = $"[{ServerName}] FunGame 找回密码验证码";
- string Body = $"亲爱的 {username},
您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!
{ServerName}
{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
- string[] To = new string[] { email };
- if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
- {
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{ForgetVerify}");
- }
- else
- {
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
- ServerHelper.WriteLine(MailSender.ErrorMsg);
- }
- }
- else // 不使用MailSender的情况
- {
- ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户");
- }
- }
- else msg = "无法找回您的密码,请稍后再试。";
- }
- }
- else msg = "无法找回您的密码,请稍后再试。";
- }
- ResultData.Add("msg", msg);
- }
- else ResultData.Add("msg", "无法找回您的密码,请稍后再试。");
- break;
- }
- }
- catch (Exception e)
- {
- ServerHelper.Error(e);
- return false;
- }
- }
-
- return Send(socket, SocketMessageType.DataRequest, type, ResultData);
- }
-
private void KickUser()
{
if (User.Id != 0)
@@ -642,7 +559,7 @@ namespace Milimoe.FunGame.Server.Model
{
ServerHelper.WriteLine("OnlinePlayers: 玩家 " + user + " 重复登录!");
ServerModel serverTask = (ServerModel)Server.GetUser(user);
- serverTask?.Send(serverTask.Socket!, SocketMessageType.ForceLogout, serverTask.CheckLoginKey, "您的账号在别处登录,已强制下线。");
+ serverTask?.Send(serverTask.Socket!, SocketMessageType.RunTime_ForceLogout, serverTask.CheckLoginKey, "您的账号在别处登录,已强制下线。");
}
}
}
diff --git a/FunGame.Server/Models/SocketMessageHandler.cs b/FunGame.Server/Models/SocketMessageHandler.cs
new file mode 100644
index 0000000..7ecfa5c
--- /dev/null
+++ b/FunGame.Server/Models/SocketMessageHandler.cs
@@ -0,0 +1,7 @@
+namespace Milimoe.FunGame.Server.Model
+{
+ public partial class ServerModel
+ {
+
+ }
+}