public void HandleAdminMessage(NetMessage adminMsgType, NetIncomingMessage messageBody) { switch (adminMsgType) { case NetMessage.RequestEntityDeletion: int entId = messageBody.ReadInt32(); if ( IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(messageBody.SenderConnection). adminPermissions.isAdmin || true) //TEMPORARY. REMOVE THE 'TRUE' LATER ON. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! { Entity delEnt = EntityManager.GetEntity(entId); if (delEnt != null) { EntityManager.DeleteEntity(delEnt); } } break; case NetMessage.RequestAdminLogin: string password = messageBody.ReadString(); if (password == IoCManager.Resolve <IServerConfigurationManager>().AdminPassword) { LogManager.Log("Admin login: "******"Failed Admin login: "******" -> ' " + password + " '"); } break; case NetMessage.RequestAdminPlayerlist: if ( IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(messageBody.SenderConnection). adminPermissions.isAdmin) { NetOutgoingMessage adminPlayerListMessage = IoCManager.Resolve <ISS14NetServer>().CreateMessage(); adminPlayerListMessage.Write((byte)NetMessage.RequestAdminPlayerlist); adminPlayerListMessage.Write((byte)ClientList.Count); foreach ( IPlayerSession plrSession in ClientList.Keys.Select( conn => IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(conn))) { adminPlayerListMessage.Write(plrSession.name); adminPlayerListMessage.Write((byte)plrSession.status); adminPlayerListMessage.Write(plrSession.assignedJob.Name); adminPlayerListMessage.Write(plrSession.connectedClient.RemoteEndPoint.Address.ToString()); adminPlayerListMessage.Write(plrSession.adminPermissions.isAdmin); } IoCManager.Resolve <ISS14NetServer>().SendMessage(adminPlayerListMessage, messageBody.SenderConnection, NetDeliveryMethod.ReliableOrdered); } else { NetOutgoingMessage loginMessage = IoCManager.Resolve <ISS14NetServer>().CreateMessage(); loginMessage.Write((byte)NetMessage.RequestAdminLogin); IoCManager.Resolve <ISS14NetServer>().SendMessage(loginMessage, messageBody.SenderConnection, NetDeliveryMethod.ReliableOrdered); } break; case NetMessage.RequestAdminKick: if ( IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(messageBody.SenderConnection). adminPermissions.isAdmin) { string ipKick = messageBody.ReadString(); IPlayerSession kickSession = IoCManager.Resolve <IPlayerManager>().GetSessionByIp(ipKick); if (kickSession != null) { IoCManager.Resolve <IPlayerManager>().EndSession(kickSession.connectedClient); kickSession.connectedClient.Disconnect("Kicked by Administrator."); } } break; case NetMessage.RequestAdminBan: if ( IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(messageBody.SenderConnection). adminPermissions.isAdmin) { string ipBan = messageBody.ReadString(); IPlayerSession banSession = IoCManager.Resolve <IPlayerManager>().GetSessionByIp(ipBan); if (banSession != null) { if (BanlistMgr.Singleton.IsBanned(ipBan)) { return; } BanlistMgr.Singleton.AddBan(ipBan, "No reason specified."); IoCManager.Resolve <IPlayerManager>().EndSession(banSession.connectedClient); banSession.connectedClient.Disconnect("Banned by Administrator."); } } break; case NetMessage.RequestBanList: if ( IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(messageBody.SenderConnection). adminPermissions.isAdmin) { NetOutgoingMessage banListMessage = IoCManager.Resolve <ISS14NetServer>().CreateMessage(); banListMessage.Write((byte)NetMessage.RequestBanList); banListMessage.Write(BanlistMgr.Singleton.banlist.List.Count); foreach (BanEntry t in BanlistMgr.Singleton.banlist.List) { banListMessage.Write(t.ip); banListMessage.Write(t.reason); banListMessage.Write(t.tempBan); int compare = t.expiresAt.CompareTo(DateTime.Now); TimeSpan timeLeft = compare < 0 ? new TimeSpan(0) : t.expiresAt.Subtract(DateTime.Now); var minutesLeft = (uint)Math.Truncate(timeLeft.TotalMinutes); banListMessage.Write(minutesLeft); } IoCManager.Resolve <ISS14NetServer>().SendMessage(banListMessage, messageBody.SenderConnection, NetDeliveryMethod.ReliableOrdered); } break; case NetMessage.RequestAdminUnBan: if ( IoCManager.Resolve <IPlayerManager>().GetSessionByConnection(messageBody.SenderConnection). adminPermissions.isAdmin) { string ip = messageBody.ReadString(); BanlistMgr.Singleton.RemoveBanByIp(ip); } break; } }