public Authorize(Core.Networking.ErrorCodes ErrorCode) : base((ushort)Core.Networking.PacketList.ServerAuthentication, Core.Networking.Constants.xOrKeyInternalSend) { Append((ushort)ErrorCode); }
public PlayerAuthentication(Core.Networking.ErrorCodes errorCode, uint targetId) : base((ushort)Core.Networking.PacketList.PlayerAuthentication, Core.Networking.Constants.xOrKeyInternalSend) { Append((ushort)errorCode); Append(targetId); }
protected override void Process(Entities.Server s) { ushort errorCode = GetUShort(0); if (Enum.IsDefined(typeof(Core.Networking.ErrorCodes), errorCode)) { Core.Networking.ErrorCodes enumErrorCode = (Core.Networking.ErrorCodes)errorCode; uint targetId = GetuInt(1); string username = GetString(3); byte accessLevel = GetByte(4); switch (enumErrorCode) { // A new player logs in. //Raptor 1/6/18: Added more checks just in case someone managed to perform a MiM while another player is choosing server. //That would lead to a registered, not active session which could be stolen if targetId is known case Core.Networking.ErrorCodes.Success: { Session session = Managers.SessionManager.Instance.Get(targetId); if (session != null) { if (!session.IsActivated && session.Name == username && (byte)session.AccessLevel == accessLevel) { session.Activate((byte)s.ID); s.Send(new Packets.Internal.PlayerAuthentication(session)); } else { s.Send(new Packets.Internal.PlayerAuthentication(Core.Networking.ErrorCodes.EntityAlreadyAuthorized, targetId)); } } else { s.Send(new Packets.Internal.PlayerAuthentication(Core.Networking.ErrorCodes.InvalidKeyOrSession, targetId)); } break; } // Update the information of a player. //TODO: DARK INVESTIGATE THIS case Core.Networking.ErrorCodes.Update: { Session session = Managers.SessionManager.Instance.Get(targetId); if (session != null) { } else { // Force a closure of the connection. s.Send(new Packets.Internal.PlayerAuthentication(Core.Networking.ErrorCodes.InvalidKeyOrSession, targetId)); } break; } // A player logs out of the server. case Core.Networking.ErrorCodes.EndConnection: { Session session = Managers.SessionManager.Instance.Get(targetId); if (session != null) { if (session.IsActivated) { session.End(); } } break; } default: { // Unused. break; } } } else { Console.WriteLine(string.Concat("Unknown PlayerAuthorization error: ", errorCode)); } }