초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,361 @@
using GameServer.Quest;
using Nettention.Proud;
using ServerCommon;
using ServerCore; using ServerBase;
using static ClientToGameMessage.Types;
using static ClientToGameReq.Types;
namespace GameServer
{
internal class AuthHandler
{
public AuthHandler()
{
}
// static public async Task ProcessRequestPacket(HostID remote, RmiContext rmictx, ClientToGameReq request)
// {
// // Log.getLogger().info($"[{Thread.CurrentThread.ManagedThreadId}] recved. {request.MsgCase}");
// #if SEQUENCE
// ServerLog.Sequence("GameClient", "GameServer", request.MsgCase.ToString());
// #endif
// using (var clientInfo = GameServer.Instance._srv.GetClientInfo(remote))
// {
// ClientSession? session = ClientSessionManager.Instance.GetSession(remote);
// if (session == null)
// {
// GameServer.Instance._srv.CloseConnection(remote);
// Log.getLogger().error($"Not found Session : {clientInfo.tcpAddrFromServer.IPToString()}");
// return;
// }
// await session._serializer.post(async () =>
// {
// if (session.IsClosedProcessed)
// {
// Log.getLogger().error($"{session.Id} Session is Closed : {remote}");
// return;
// }
// /* 패킷별로 시간을 나누어야 될듯
// DateTime curTime = DateTime.Now;
// TimeSpan diff = curTime - session.lastPacketReceivTime;
// if (diff <= TimeSpan.FromMilliseconds(50))
// {
// Log.getLogger().warn($"{session.Id} ClientIP:{clientInfo.tcpAddrFromServer.IPToString()}, {request}");
// }
//
// session.lastPacketReceivTime = curTime;
// */
// switch (request.MsgCase)
// {
// case ClientToGameReq.MsgOneofCase.LoginReq:
// await HandleLoginReq(session, rmictx, request.LoginReq);
// break;
// case ClientToGameReq.MsgOneofCase.LogoutReq:
// await HandleLogoutReq(session, request.LogoutReq);
// break;
// default:
// await session.ProcessRequestPacket(request);
// break;
// }
//
// });
// }
//
// }
// static async Task HandleLoginReq(ClientSession session, RmiContext rmiCtx, LoginReq loginReq)
// {
// ClientToGame clientToGame = new();
// clientToGame.Response = new();
// clientToGame.Response.LoginRes = new();
// try
// {
// Log.getLogger().debug($"{loginReq.Name} loginReq {loginReq} {rmiCtx.encryptMode}");
// // TODO: rmiCtx.encryptMode
// if ( rmiCtx.encryptMode != EncryptMode.EM_Fast)
// {
// //Log.getLogger().error($"{loginReq.Name} loginReq {loginReq} {rmiCtx.encryptMode}");
// // session.Close();;
// }
//
// var block_enable = GameServer.Instance.getUserLoginBlockEnable();
// if(true == block_enable.Value)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.AccountLoginBlockEnable;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().debug($"User login Block !!! : {loginReq.Name}");
// await session.Close();
// return;
// }
//
// if (AccountAuthorityManager.Instance.IsWhiteListUser(loginReq.Name) == false)
// {
// //점검중
// if (AccountAuthorityManager.Instance.isInspection == true ||
// AccountAuthorityManager.Instance.isReadyForDistroy == true)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.Inspection;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().debug($"Now Inspection : {loginReq.Name}");
// await session.Close();
// return;
// }
//
// if (AccountAuthorityManager.Instance.IsBlackListUser(loginReq.Name) == true)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.BlackList;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().debug($"BlackList User :{loginReq.Name}");
// await session.Close();
// return;
// }
// }
//
// var loginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(loginReq.Name);
//
// if (loginInfo == null || loginInfo.Moving == null)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error($"Not found LoginInfo User:{loginReq.Name}");
// await session.Close();
// return;
// }
//
// string departureServer = loginInfo.CurrentServer;
//
// if (loginReq.Otp != loginInfo.Moving.OneTimeKey)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.InvalidToken;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error($"{loginReq.Name} Not correct Token {loginReq.Otp} != {loginInfo.Moving.OneTimeKey}");
// await session.Close();
// return;
// }
//
// if (await GameServerApp.Instance.LoginStorage.EndMoving(loginReq.Name, DateTime.Now) == false)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error($"EndMoving fail !!! {loginReq.Name}");
// await session.Close();
// return;
// }
//
// if (loginInfo.Moving.DestServer != GameServer.Instance.ServerName)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error($"Not correct Server:{loginInfo.Moving.DestServer} cur:{GameServer.Instance.ServerName} LoginInfo User:{loginReq.Name}");
// await session.Close();
// return;
// }
//
// session.Id = loginInfo.Name;
// session.AccountGuid = loginInfo.Guid;
// session.Email = loginInfo.Email;
// session.PartyGuid = loginInfo.PartyGuid;
//
// if (await session.AutoSelectChar(loginInfo) == false)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error("Select Character fail !!!", session.ToString());
// await session.Close();
// return;
// }
//
// if( session._selectedChar == null
// || session._selectedChar._charEntity == null
// || session._selectedChar._charEntity.CharInfo == null)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error("Select Character fail !!!", session.ToString());
// await session.Close();
// return;
// }
//
// if (session._selectedChar._charEntity.CharInfo.Operator != 1
// && ClientSessionManager.Instance.Count > (int)(ServerCommon.Constant.g_MaxUser))
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.ServerFull;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().debug($"Server Full ", session.ToString());
// await session.Close();
// return;
// }
//
// if(session.GameGuardInitialize() == false)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.GameGuardUserInitFailed;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().debug($"GameGuard Init Failed.", session.ToString());
// await session.Close();
// return;
// }
//
// if (false == ClientSessionManager.Instance.NewSession(session))
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// await session.Close();
// return;
// }
//
// // 각종 정보 로드
// if (!await session.LoadDB())
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.DbError;
// session.Send(RmiContext.ReliableSend, clientToGame);
// await session.Close();
// Log.getLogger().error("LoadDB Fail !!!", session.ToString());
// return;
// }
//
// bool IsPartyDestroy = false; // 서버 이동 중 파티가 해체되었는지 확인
// if (session.PartyGuid != string.Empty)
// {
// var error_code = await PartyManager.Instance.joinParty(session.PartyGuid, session);
// if (error_code.isFail())
// {
// IsPartyDestroy = true;
// }
// }
//
// InstanceRoom? joinedRoom = null;
// if (GameServerApp.Instance.Config.GameServerType == EGameServerType.Channel)
// {
// if(GameServer.Instance.Map == null)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.ServerLogicError;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error("GameServer.Instance.Map == null", session.ToString());
// await session.Close();
// return;
// }
// }
// else
// {
// // 인스턴스 룸 입장
// joinedRoom = await InstanceRoomManager.Instance.JoinRoom(session, session._selectedChar.LastPositionInfo.EnterInstanceInfo.InstanceRoomId, session._selectedChar.LastPositionInfo.EnterInstanceInfo.InstanceId);
// if (joinedRoom == null)
// {
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// Log.getLogger().error($"JoinRoom fail {loginReq.Name}", session.ToString());
// return;
// }
// }
//
// //여기서 Session 업데이트
// await GameServer.Instance.sessionUpdate();
//
// clientToGame.Response.LoginRes.ServerUtcTime = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime.UtcNow);
// clientToGame.Response.ErrorCode = ServerErrorCode.Success;
// session.Send(RmiContext.ReliableSend, clientToGame);
// // 각종 정보 클라로 전송
// session.SendInfo();
//
// bool isFromLogin = departureServer.Contains(EServerType.Login.ToString());
//
// if (GameServerApp.Instance.Config.GameServerType == EGameServerType.Channel)
// {
// if(GameServer.Instance.Map != null)
// {
// session._selectedChar.EnterWorld(GameServer.Instance.Map, isFromLogin);
// }
//
// session._selectedChar.SendPos();
//
// //이전 서버가 게임서버이면 채널간 이동으로 본다.
// if (departureServer.Contains(EServerType.Game.ToString()))
// {
// }
//
// await GameServerApp.Instance.LoginStorage.ChangeInstanceRoomId(session.Id, string.Empty);
// }
// else
// {
// // 인스턴스 룸 입장 패킷 전송
// if (joinedRoom != null)
// {
// await joinedRoom.SendJoinSuccess(session);
//
// await GameServerApp.Instance.LoginStorage.ChangeInstanceRoomId(session.Id, session.InstanceRoomId);
// }
// }
//
// if (isFromLogin)
// {
// session.SendInfoFromLogin();
// }
// else
// {
// }
//
// if (session.PartyGuid != string.Empty)
// {
// if (IsPartyDestroy)
// {
// ClientToGame clientToGameNoti = new();
// clientToGameNoti.Message = new();
// clientToGameNoti.Message.DestroyPartyNoti = new();
//
// session.Send(RmiContext.ReliableSend, clientToGameNoti);
//
// session.PartyGuid = string.Empty;
// await GameServerApp.Instance.LoginStorage.ChangePartyGuid(session.Id, string.Empty);
// }
// else
// {
// // 서버 이동 중 파티원 위치 정보 및 본인 위치 정보 업데이트
// if (PartyManager.Instance.getMemberInfo(session.PartyGuid, session.getUserNickname(), out var memberInfo))
// {
// if (session._selectedChar.getLocationInfo(out var locationInfo))
// {
// memberInfo.LocationInfo = locationInfo;
//
// await PartyManager.Instance.UpdatePartyMemberInfo(session.PartyGuid, session.getUserNickname());
// PartyManager.Instance.sendPartyMemberLocationNoti(session.PartyGuid, session.getUserNickname(), session._selectedChar.Guid);
// }
// }
//
// PartyManager.Instance.sendAllPartyMemberLocationNoti(session.PartyGuid, session);
// }
// }
//
// session._selectedChar.ownedQuestList.checkQuestTimer(session._selectedChar);
// await session.ownedFriendList.checkInviteNoti(session._selectedChar);
// }
// catch (Exception ex)
// {
// Log.getLogger().error($"{ex} account:{loginReq.Name}");
// clientToGame.Response.ErrorCode = ServerErrorCode.LoginFail;
// session.Send(RmiContext.ReliableSend, clientToGame);
// await session.Close();
// }
// }
//
// static async Task HandleLogoutReq(ClientSession session, LogoutReq logoutReq)
// {
// Log.getLogger().debug($"logoutReq", session.ToString());
//
// ClientToGame clientToGame = new();
// clientToGame.Response = new();
// clientToGame.Response.LogoutRes = new();
// clientToGame.Response.ErrorCode = ServerErrorCode.Success;
// session.Send(RmiContext.ReliableSend, clientToGame);
//
// string sessionStr = session.ToString();
//
// await session.Close();
// }
}
}