mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-04-22 03:59:36 +08:00
Merge SocketHelper in ServerHelper
This commit is contained in:
commit
d87f97c30c
@ -110,11 +110,11 @@ void StartServer()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Config.ConnectingPlayersCount++;
|
Config.ConnectingPlayersCount++;
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientIPAddress) + " 正在连接服务器 . . .");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientIPAddress) + " 正在连接服务器 . . .");
|
||||||
if (IsIPBanned(ListeningSocket, ClientIPAddress))
|
if (IsIPBanned(ListeningSocket, ClientIPAddress))
|
||||||
{
|
{
|
||||||
SendRefuseConnect(socket, "服务器已拒绝黑名单用户连接。");
|
SendRefuseConnect(socket, "服务器已拒绝黑名单用户连接。");
|
||||||
ServerHelper.WriteLine("检测到 " + SocketHelper.MakeClientName(ClientIPAddress) + " 为黑名单用户,已禁止其连接!");
|
ServerHelper.WriteLine("检测到 " + ServerHelper.MakeClientName(ClientIPAddress) + " 为黑名单用户,已禁止其连接!");
|
||||||
Config.ConnectingPlayersCount--;
|
Config.ConnectingPlayersCount--;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -128,13 +128,13 @@ void StartServer()
|
|||||||
ClientModel.SetTaskAndClientName(t, ClientIPAddress);
|
ClientModel.SetTaskAndClientName(t, ClientIPAddress);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientIPAddress) + " 连接失败。");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientIPAddress) + " 连接失败。");
|
||||||
Config.ConnectingPlayersCount--;
|
Config.ConnectingPlayersCount--;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
if (--Config.ConnectingPlayersCount < 0) Config.ConnectingPlayersCount = 0;
|
if (--Config.ConnectingPlayersCount < 0) Config.ConnectingPlayersCount = 0;
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientIPAddress) + " 断开连接!");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientIPAddress) + " 断开连接!");
|
||||||
ServerHelper.Error(e);
|
ServerHelper.Error(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,9 +172,9 @@ bool Read(ClientSocket socket)
|
|||||||
if (type != SocketMessageType.Unknown)
|
if (type != SocketMessageType.Unknown)
|
||||||
{
|
{
|
||||||
if (objs[0] != null && objs[0].GetType() == typeof(string) && objs[0].ToString()!.Trim() != "")
|
if (objs[0] != null && objs[0].GetType() == typeof(string) && objs[0].ToString()!.Trim() != "")
|
||||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + SocketHelper.MakeClientName(socket.ClientIP) + " -> " + objs[0]);
|
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + ServerHelper.MakeClientName(socket.ClientIP) + " -> " + objs[0]);
|
||||||
else
|
else
|
||||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + SocketHelper.MakeClientName(socket.ClientIP));
|
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + ServerHelper.MakeClientName(socket.ClientIP));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
ServerHelper.WriteLine("客户端发送了不符合FunGame规定的字符,拒绝连接。");
|
ServerHelper.WriteLine("客户端发送了不符合FunGame规定的字符,拒绝连接。");
|
||||||
@ -187,7 +187,7 @@ bool Send(ClientSocket socket, Guid Token)
|
|||||||
string msg = Config.ServerName + ";" + Config.ServerNotice;
|
string msg = Config.ServerName + ";" + Config.ServerNotice;
|
||||||
if (socket.Send(SocketMessageType.Connect, msg, Token) == SocketResult.Success)
|
if (socket.Send(SocketMessageType.Connect, msg, Token) == SocketResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(socket.ClientIP) + " <- " + "已确认连接");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(socket.ClientIP) + " <- " + "已确认连接");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -201,7 +201,7 @@ bool SendRefuseConnect(ClientSocket socket, string msg)
|
|||||||
msg = $"连接被拒绝,如有疑问请联系服务器管理员:{msg}";
|
msg = $"连接被拒绝,如有疑问请联系服务器管理员:{msg}";
|
||||||
if (socket.Send(SocketMessageType.Connect, msg) == SocketResult.Success)
|
if (socket.Send(SocketMessageType.Connect, msg) == SocketResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(socket.ClientIP) + " <- " + "已拒绝连接");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(socket.ClientIP) + " <- " + "已拒绝连接");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -71,7 +71,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
// 验证Token
|
// 验证Token
|
||||||
if (type != SocketMessageType.HeartBeat && token != Token)
|
if (type != SocketMessageType.HeartBeat && token != Token)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + ServerSocket.GetTypeString(type) + "] ");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + ServerSocket.GetTypeString(type) + "] ");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,9 +81,9 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
if (!IgnoreType.Contains(type))
|
if (!IgnoreType.Contains(type))
|
||||||
{
|
{
|
||||||
if (msg.Trim() == "")
|
if (msg.Trim() == "")
|
||||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + SocketHelper.MakeClientName(ClientName, User));
|
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + ServerHelper.MakeClientName(ClientName, User));
|
||||||
else
|
else
|
||||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + SocketHelper.MakeClientName(ClientName, User) + " -> " + msg);
|
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> " + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
@ -226,14 +226,14 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(username), out SQLResult result);
|
SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistUsername(username), out SQLResult result);
|
||||||
if (result == SQLResult.Success)
|
if (result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 账号已被注册");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 账号已被注册");
|
||||||
return Send(socket, type, RegInvokeType.DuplicateUserName);
|
return Send(socket, type, RegInvokeType.DuplicateUserName);
|
||||||
}
|
}
|
||||||
// 检查邮箱是否重复
|
// 检查邮箱是否重复
|
||||||
SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistEmail(email), out result);
|
SQLHelper.ExecuteDataSet(UserQuery.Select_IsExistEmail(email), out result);
|
||||||
if (result == SQLResult.Success)
|
if (result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 邮箱已被注册");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 邮箱已被注册");
|
||||||
return Send(socket, type, RegInvokeType.DuplicateEmail);
|
return Send(socket, type, RegInvokeType.DuplicateEmail);
|
||||||
}
|
}
|
||||||
// 检查验证码是否发送过
|
// 检查验证码是否发送过
|
||||||
@ -244,7 +244,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
string RegVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode];
|
string RegVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode];
|
||||||
if ((DateTime.Now - RegTime).TotalMinutes < 10)
|
if ((DateTime.Now - RegTime).TotalMinutes < 10)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{RegVerifyCode}");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{RegVerifyCode}");
|
||||||
}
|
}
|
||||||
return Send(socket, type, RegInvokeType.InputVerifyCode);
|
return Send(socket, type, RegInvokeType.InputVerifyCode);
|
||||||
}
|
}
|
||||||
@ -263,17 +263,17 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
string[] To = new string[] { email };
|
string[] To = new string[] { email };
|
||||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{RegVerify}");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{RegVerify}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
|
||||||
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // 不使用MailSender的情况
|
else // 不使用MailSender的情况
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 验证码为:{RegVerify},请服务器管理员告知此用户");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 验证码为:{RegVerify},请服务器管理员告知此用户");
|
||||||
}
|
}
|
||||||
return Send(socket, type, RegInvokeType.InputVerifyCode);
|
return Send(socket, type, RegInvokeType.InputVerifyCode);
|
||||||
}
|
}
|
||||||
@ -299,7 +299,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
DateTime RegTime = (DateTime)(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime]);
|
DateTime RegTime = (DateTime)(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime]);
|
||||||
if ((DateTime.Now - RegTime).TotalMinutes >= 10)
|
if ((DateTime.Now - RegTime).TotalMinutes >= 10)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 验证码已过期");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 验证码已过期");
|
||||||
msg = "此验证码已过期,请重新注册。";
|
msg = "此验证码已过期,请重新注册。";
|
||||||
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email), out _);
|
SQLHelper.Execute(RegVerifyCodes.Delete_RegVerifyCode(username, email), out _);
|
||||||
return Send(socket, type, false, msg);
|
return Send(socket, type, false, msg);
|
||||||
@ -397,7 +397,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 没有回应。");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 没有回应。");
|
||||||
ServerHelper.Error(e);
|
ServerHelper.Error(e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -424,14 +424,14 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
}
|
}
|
||||||
object obj = objs[0];
|
object obj = objs[0];
|
||||||
if (obj.GetType() == typeof(string) && (string)obj != "")
|
if (obj.GetType() == typeof(string) && (string)obj != "")
|
||||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + SocketHelper.MakeClientName(ClientName, User) + " <- " + obj);
|
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] " + ServerHelper.MakeClientName(ClientName, User) + " <- " + obj);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
throw new CanNotSendToClientException();
|
throw new CanNotSendToClientException();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 没有回应。");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 没有回应。");
|
||||||
ServerHelper.Error(e);
|
ServerHelper.Error(e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -511,7 +511,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
private void CreateStreamReader()
|
private void CreateStreamReader()
|
||||||
{
|
{
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
ServerHelper.WriteLine("Creating: StreamReader -> " + SocketHelper.MakeClientName(ClientName, User) + " ...OK");
|
ServerHelper.WriteLine("Creating: StreamReader -> " + ServerHelper.MakeClientName(ClientName, User) + " ...OK");
|
||||||
while (Running)
|
while (Running)
|
||||||
{
|
{
|
||||||
if (Socket != null)
|
if (Socket != null)
|
||||||
@ -523,8 +523,8 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
{
|
{
|
||||||
RemoveUser();
|
RemoveUser();
|
||||||
Close();
|
Close();
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " Error -> Too Many Faileds.");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " Error -> Too Many Faileds.");
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " Close -> StreamReader is Closed.");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " Close -> StreamReader is Closed.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -534,8 +534,8 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
{
|
{
|
||||||
RemoveUser();
|
RemoveUser();
|
||||||
Close();
|
Close();
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " Error -> Socket is Closed.");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " Error -> Socket is Closed.");
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " Close -> StringStream is Closed.");
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " Close -> StringStream is Closed.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -544,7 +544,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
private void CreatePeriodicalQuerier()
|
private void CreatePeriodicalQuerier()
|
||||||
{
|
{
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
ServerHelper.WriteLine("Creating: PeriodicalQuerier -> " + SocketHelper.MakeClientName(ClientName, User) + " ...OK");
|
ServerHelper.WriteLine("Creating: PeriodicalQuerier -> " + ServerHelper.MakeClientName(ClientName, User) + " ...OK");
|
||||||
while (Running)
|
while (Running)
|
||||||
{
|
{
|
||||||
// 每两小时触发一次SQL服务器的心跳查询,防止SQL服务器掉线
|
// 每两小时触发一次SQL服务器的心跳查询,防止SQL服务器掉线
|
||||||
|
@ -29,6 +29,16 @@ namespace Milimoe.FunGame.Server.Utility
|
|||||||
Console.Write("\r> ");
|
Console.Write("\r> ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string MakeClientName(string name, User? user = null)
|
||||||
|
{
|
||||||
|
if (user != null)
|
||||||
|
{
|
||||||
|
return "玩家 " + user.Username;
|
||||||
|
}
|
||||||
|
if (name != "") return "客户端(" + name + ")";
|
||||||
|
return "客户端";
|
||||||
|
}
|
||||||
|
|
||||||
private static Hashtable GetServerSettingHashtable()
|
private static Hashtable GetServerSettingHashtable()
|
||||||
{
|
{
|
||||||
Hashtable settings = new();
|
Hashtable settings = new();
|
||||||
@ -105,39 +115,6 @@ namespace Milimoe.FunGame.Server.Utility
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SocketHelper
|
|
||||||
{
|
|
||||||
public static int GetType(string msg)
|
|
||||||
{
|
|
||||||
int index = msg.IndexOf(';') - 1;
|
|
||||||
if (index > 0)
|
|
||||||
return Convert.ToInt32(msg[..index]);
|
|
||||||
else
|
|
||||||
return Convert.ToInt32(msg[..1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string GetMessage(string msg)
|
|
||||||
{
|
|
||||||
int index = msg.IndexOf(';') + 1;
|
|
||||||
return msg[index..];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string MakeMessage(int type, string msg)
|
|
||||||
{
|
|
||||||
return type + ";" + msg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string MakeClientName(string name, User? user = null)
|
|
||||||
{
|
|
||||||
if (user != null)
|
|
||||||
{
|
|
||||||
return "玩家 " + user.Username;
|
|
||||||
}
|
|
||||||
if (name != "") return "客户端(" + name + ")";
|
|
||||||
return "客户端";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class SmtpHelper
|
public class SmtpHelper
|
||||||
{
|
{
|
||||||
public static string SenderMailAddress { get; set; } = "";
|
public static string SenderMailAddress { get; set; } = "";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user