Exemplo n.º 1
0
        public static ServerMessage Compose(ModerationTicket Ticket)
        {
            string DisplayRoomName = string.Empty;

            if (Ticket.RoomId > 0)
            {
                RoomInfo Info = RoomInfoLoader.GetRoomInfo(Ticket.RoomId);
                DisplayRoomName = Info == null ? "(Unknown room " + Ticket.RoomId + ")" : Info.Name;
            }

            ServerMessage Message = new ServerMessage(OpcodesOut.MODERATION_TICKET);

            Message.AppendUInt32(Ticket.Id);
            Message.AppendUInt32(Ticket.TabId);
            Message.AppendUInt32(11); // ?? unknown
            Message.AppendUInt32(Ticket.CategoryId);
            Message.AppendUInt32(11); // ?? unknown
            Message.AppendUInt32(Ticket.Score);
            Message.AppendUInt32(Ticket.ReporteeUserId);
            Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Ticket.ReporteeUserId));
            Message.AppendUInt32(Ticket.ReportedUserId);
            Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Ticket.ReportedUserId));
            Message.AppendUInt32(Ticket.ModeratorUserId);
            Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(Ticket.ModeratorUserId));
            Message.AppendStringWithBreak(Ticket.Message);
            Message.AppendUInt32(Ticket.RoomId);
            Message.AppendStringWithBreak(DisplayRoomName);
            return(Message);
        }
Exemplo n.º 2
0
        private static void GetTicketChatlog(Session Session, ClientMessage Message)
        {
            if (!Session.HasRight("moderation_tool"))
            {
                return;
            }

            ModerationTicket Ticket = ModerationTicketManager.GetTicket(Message.PopWiredUInt32());

            if (Ticket == null || Ticket.ModeratorUserId != Session.CharacterId)
            {
                Session.SendData(NotificationMessageComposer.Compose("Ticket not found or ticket is not assigned to you."));
                return;
            }

            RoomInfo Info = null;

            if (Ticket.RoomId > 0)
            {
                Info = RoomInfoLoader.GetRoomInfo(Ticket.RoomId);
            }

            Session.SendData(ModerationTicketChatlogsComposer.Compose(Ticket, Info, ModerationLogs.GetLogsForRoom(Ticket.RoomId,
                                                                                                                  (Ticket.CreatedTimestamp - 600), UnixTimestamp.GetCurrent())));
        }
        public static ServerMessage Compose(uint UserId, Dictionary <ModerationRoomVisit, ReadOnlyCollection <ModerationChatlogEntry> > Entries)
        {
            string CharacterNameString = CharacterResolverCache.GetNameFromUid(UserId);

            ServerMessage Message = new ServerMessage(OpcodesOut.MODERATION_CHATLOGS_USER);

            Message.AppendUInt32(UserId);
            Message.AppendStringWithBreak(CharacterNameString);
            Message.AppendInt32(Entries.Count);

            foreach (KeyValuePair <ModerationRoomVisit, ReadOnlyCollection <ModerationChatlogEntry> > EntryData in Entries)
            {
                RoomInfo Info = RoomInfoLoader.GetRoomInfo(EntryData.Key.RoomId);

                Message.AppendBoolean(Info != null && Info.Type == RoomType.Public);
                Message.AppendUInt32(Info != null ? Info.Id : 0);
                Message.AppendStringWithBreak(Info != null ? Info.Name : "(Unknown room)");
                Message.AppendInt32(EntryData.Value.Count);

                foreach (ModerationChatlogEntry Entry in EntryData.Value)
                {
                    DateTime Time = UnixTimestamp.GetDateTimeFromUnixTimestamp(Entry.Timestamp);

                    Message.AppendInt32(Time.Hour);
                    Message.AppendInt32(Time.Minute);
                    Message.AppendUInt32(Entry.UserId);
                    Message.AppendStringWithBreak(Entry.UserId == UserId ? CharacterNameString :
                                                  CharacterResolverCache.GetNameFromUid(Entry.UserId));
                    Message.AppendStringWithBreak(Entry.Message);
                }
            }

            return(Message);
        }
Exemplo n.º 4
0
        private static void GetRoomInfo(Session Session, ClientMessage Message)
        {
            if (!Session.HasRight("moderation_tool"))
            {
                return;
            }

            RoomInfo Info = RoomInfoLoader.GetRoomInfo(Message.PopWiredUInt32());

            if (Info == null)
            {
                Session.SendData(NotificationMessageComposer.Compose("Could not retrieve room information."));
                return;
            }

            Session.SendData(ModerationRoomInfoComposer.Compose(Info, RoomManager.GetInstanceByRoomId(Info.Id)));
        }
Exemplo n.º 5
0
        private static void GetRecentRooms(Session Session, ClientMessage Message)
        {
            ServerMessage Response = TryGetResponseFromCache(Session.CharacterId, Message);

            if (Response != null)
            {
                Session.SendData(Response);
                return;
            }

            List <uint>     VisitedUids = new List <uint>();
            List <RoomInfo> Rooms       = new List <RoomInfo>();

            using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
            {
                MySqlClient.SetParameter("userid", Session.CharacterId);
                DataTable Table = MySqlClient.ExecuteQueryTable("SELECT room_id FROM room_visits WHERE user_id = @userid ORDER BY timestamp_entered DESC LIMIT 50");

                foreach (DataRow Row in Table.Rows)
                {
                    uint Id = (uint)Row["room_id"];

                    if (VisitedUids.Contains(Id))
                    {
                        continue;
                    }

                    RoomInfo Info = RoomInfoLoader.GetRoomInfo(Id);

                    if (Info == null || Info.Type == RoomType.Public)
                    {
                        continue;
                    }

                    Rooms.Add(Info);
                    VisitedUids.Add(Info.Id);
                }
            }

            Response = NavigatorRoomListComposer.Compose(0, 7, string.Empty, Rooms);
            AddToCacheIfNeeded(Session.CharacterId, Message, Response);
            Session.SendData(Response);
        }
Exemplo n.º 6
0
        private static void GetRoomChatlog(Session Session, ClientMessage Message)
        {
            if (!Session.HasRight("moderation_tool"))
            {
                return;
            }

            int  Unknown1 = Message.PopWiredInt32();
            uint RoomId   = Message.PopWiredUInt32();

            RoomInfo Info = RoomInfoLoader.GetRoomInfo(RoomId);

            if (Info == null)
            {
                Session.SendData(NotificationMessageComposer.Compose("Room not found; could not load chatlogs."));
                return;
            }

            Session.SendData(ModerationRoomChatlogsComposer.Compose(Info, ModerationLogs.GetLogsForRoom(RoomId,
                                                                                                        (UnixTimestamp.GetCurrent() - 3600), UnixTimestamp.GetCurrent())));
        }
        public static ServerMessage Compose(uint UserId, ReadOnlyCollection <ModerationRoomVisit> Visits)
        {
            ServerMessage Message = new ServerMessage(OpcodesOut.MODERATION_ROOM_VISITS);

            Message.AppendUInt32(UserId);
            Message.AppendStringWithBreak(CharacterResolverCache.GetNameFromUid(UserId));
            Message.AppendInt32(Visits.Count);

            foreach (ModerationRoomVisit Visit in Visits)
            {
                RoomInfo Info = RoomInfoLoader.GetRoomInfo(Visit.RoomId);
                DateTime Time = UnixTimestamp.GetDateTimeFromUnixTimestamp(Visit.TimestampEntered);

                Message.AppendBoolean(Info != null && Info.Type == RoomType.Public);
                Message.AppendUInt32(Info != null ? Info.Id : 0);
                Message.AppendStringWithBreak(Info != null ? Info.Name : "Unknown Room");
                Message.AppendInt32(Time.Hour);
                Message.AppendInt32(Time.Minute);
            }

            return(Message);
        }
Exemplo n.º 8
0
        private static void OnFollowBuddy(Session Session, ClientMessage Message)
        {
            uint BuddyId = Message.PopWiredUInt32();

            if (!Session.MessengerFriendCache.Friends.Contains(BuddyId))
            {
                return;
            }

            Session BuddySession = SessionManager.GetSessionByCharacterId(BuddyId);

            if (BuddySession == null || !BuddySession.InRoom)
            {
                return;
            }

            RoomInfo Info = RoomInfoLoader.GetRoomInfo(BuddySession.CurrentRoomId);

            if (Info != null)
            {
                Session.SendData(MessengerFollowResultComposer.Compose(Info));
            }
        }
Exemplo n.º 9
0
 public RoomInfo GetRoomInfo()
 {
     return(RoomInfoLoader.GetRoomInfo(mRoomId));
 }