milimoe 7a6b40800d
修改架构 (#24)
* 添加ServerController;DataRequest添加GetNotice

* DataRequest添加Reg

* 添加RoomS

* 修改架构之Connect

* 迁移其他的Socket业务至DataRequest

* 更新连接服务器的逻辑

* 修改架构之Login

* 更新Core

* 修复IntoRoom Bug

* 修复ForceLogOut Bug

* 修复CreateRoom QuitRoom IntoRoom

* 修复QuitRoom Bug和进入房间的广播

* 添加查看列表指令,完善kick和forcelogout

* 数量显示错误

* 修复QuitRoom ConnectingCount Bug
2023-09-14 22:15:18 +08:00

170 lines
7.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Entity;
using Milimoe.FunGame.Server.Others;
using Milimoe.FunGame.Core.Api.Transmittal;
namespace Milimoe.FunGame.Server.Utility
{
public class ServerHelper
{
public static string GetPrefix()
{
DateTime now = DateTime.Now;
return now.AddMilliseconds(-now.Millisecond).ToString() + " " + Config.ServerName + "";
}
public static void Error(Exception e)
{
Console.Write("\r" + GetPrefix() + e.Message + "\n" + e.StackTrace + "\n\r> ");
}
public static void Write(string msg)
{
if (msg.Trim() != "") Console.Write("\r" + GetPrefix() + msg + "> ");
}
public static void WriteLine(string msg)
{
if (msg.Trim() != "") Console.Write("\r" + GetPrefix() + msg + "\n\r> ");
}
public static void Type()
{
Console.Write("\r> ");
}
public static string MakeClientName(string name, User? user = null)
{
if (user != null && user.Id != 0)
{
return "玩家 " + user.Username;
}
if (name != "") return "客户端(" + name + ")";
return "客户端";
}
private static Hashtable GetServerSettingHashtable()
{
Hashtable settings = new();
if (INIHelper.ExistINIFile())
{
settings.Add("Name", INIHelper.ReadINI("Server", "Name"));
settings.Add("Password", INIHelper.ReadINI("Server", "Password"));
settings.Add("Describe", INIHelper.ReadINI("Server", "Describe"));
settings.Add("Notice", INIHelper.ReadINI("Server", "Notice"));
settings.Add("Key", INIHelper.ReadINI("Server", "Key"));
settings.Add("Status", Convert.ToInt32(INIHelper.ReadINI("Server", "Status")));
settings.Add("BannedList", INIHelper.ReadINI("Server", "BannedList"));
settings.Add("OfficialMail", INIHelper.ReadINI("ServerMail", "OfficialMail"));
settings.Add("SupportMail", INIHelper.ReadINI("ServerMail", "SupportMail"));
settings.Add("Port", Convert.ToInt32(INIHelper.ReadINI("Socket", "Port")));
settings.Add("MaxPlayer", Convert.ToInt32(INIHelper.ReadINI("Socket", "MaxPlayer")));
settings.Add("MaxConnectFailed", Convert.ToInt32(INIHelper.ReadINI("Socket", "MaxConnectFailed")));
}
return settings;
}
public static void GetServerSettings()
{
try
{
Hashtable settings = GetServerSettingHashtable();
if (settings != null)
{
string? Name = (string?)settings["Name"];
string? Password = (string?)settings["Password"];
string? Describe = (string?)settings["Describe"];
string? Notice = (string?)settings["Notice"];
string? Key = (string?)settings["Key"];
string? BannedList = (string?)settings["BannedList"];
if (Name != null) Config.ServerName = Name;
if (Password != null) Config.ServerPassword = Password;
if (Describe != null) Config.ServerDescription = Describe;
if (Notice != null) Config.ServerNotice = Notice;
if (Key != null) Config.ServerKey = Key;
if (BannedList != null) Config.ServerBannedList = BannedList;
string? OfficialMail = (string?)settings["OfficialMail"];
string? SupportMail = (string?)settings["SupportMail"];
if (OfficialMail != null) OfficialEmail.Email = OfficialMail;
if (SupportMail != null) OfficialEmail.SupportEmail = SupportMail;
int? Status = (int?)settings["Status"];
int? Port = (int?)settings["Port"];
int? MaxPlayer = (int?)settings["MaxPlayer"];
int? MaxConnectFailed = (int?)settings["MaxConnectFailed"];
if (Status != null) Config.ServerStatus = (int)Status;
if (Port != null) Config.ServerPort = (int)Port;
if (MaxPlayer != null) Config.MaxPlayers = (int)MaxPlayer;
if (MaxConnectFailed != null) Config.MaxConnectionFaileds = (int)MaxConnectFailed;
}
}
catch (Exception e)
{
ServerHelper.WriteLine(e.StackTrace ?? "");
}
}
public static void InitOrderList()
{
Config.OrderList.Clear();
Config.OrderList.Add(OrderDictionary.Help, "Milimoe -> 帮助");
Config.OrderList.Add(OrderDictionary.Quit, "关闭服务器");
Config.OrderList.Add(OrderDictionary.Exit, "关闭服务器");
Config.OrderList.Add(OrderDictionary.Close, "关闭服务器");
Config.OrderList.Add(OrderDictionary.Restart, "重启服务器");
}
}
public class SmtpHelper
{
public static string SenderMailAddress { get; set; } = "";
public static string SenderName { get; set; } = "";
public static string SenderPassword { get; set; } = "";
public static string SmtpHost { get; set; } = "";
public static int SmtpPort { get; set; } = 587;
public static bool OpenSSL { get; set; } = true;
public static MailSender? GetMailSender()
{
try
{
if (SenderMailAddress == "" && SenderName == "" && SenderPassword == "" && SmtpHost == "")
{
if (INIHelper.ExistINIFile())
{
if (bool.TryParse(INIHelper.ReadINI("Mailer", "UseMailSender").ToLower(), out bool use))
{
if (use)
{
SenderMailAddress = INIHelper.ReadINI("Mailer", "MailAddress");
SenderName = INIHelper.ReadINI("Mailer", "Name");
SenderPassword = INIHelper.ReadINI("Mailer", "Password");
SmtpHost = INIHelper.ReadINI("Mailer", "Host");
if (int.TryParse(INIHelper.ReadINI("Mailer", "Port"), out int Port))
SmtpPort = Port;
if (bool.TryParse(INIHelper.ReadINI("Mailer", "OpenSSL").ToLower(), out bool SSL))
OpenSSL = SSL;
if (SmtpPort > 0) return new MailSender(SenderMailAddress, SenderName, SenderPassword, SmtpHost, SmtpPort, OpenSSL);
}
}
ServerHelper.WriteLine("Smtp服务处于关闭状态");
return null;
}
throw new SmtpHelperException();
}
return new MailSender(SenderMailAddress, SenderName, SenderPassword, SmtpHost, SmtpPort, OpenSSL);
}
catch (Exception e)
{
ServerHelper.Error(e);
}
return null;
}
}
}