public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_SPOTMOVE)protocol; if (sessionState.RoomID == inboundPacket.roomID) { var room = dbContext.GetRoom(sessionState.RoomID); if (!room.NotFound) { foreach (var spot in room.Hotspots) { if (spot.id == inboundPacket.spotID) { spot.loc = inboundPacket.pos; break; } } room.HasUnsavedAuthorChanges = true; room.HasUnsavedChanges = true; ServerState.FlushRooms(dbContext); SessionManager.SendToRoomID(sessionState.RoomID, sessionState.UserID, inboundPacket, EventTypes.MSG_SPOTMOVE, 0); } } }
public bool Command(ThePalaceEntities dbContext, UInt32 UserID, UInt32 TargetID, params string[] args) { var sessionState = SessionManager.sessionStates[UserID]; var xtlk = new MSG_XTALK(); if (TargetID == 0) { xtlk.text = "Sorry, you must target a user to use this command."; sessionState.Send(xtlk, EventTypes.MSG_XTALK, 0); } else { var targetSessionState = SessionManager.sessionStates[TargetID]; targetSessionState.userFlags |= (short)UserFlags.U_PropGag; targetSessionState.details.nbrProps = 0; targetSessionState.details.propSpec = null; SessionManager.SendToRoomID(targetSessionState.RoomID, 0, new MSG_USERPROP { nbrProps = 0, propSpec = null, }, EventTypes.MSG_USERPROP, (Int32)TargetID); xtlk.text = $"User {targetSessionState.details.name} is now propgagged!"; SessionManager.SendToRoomID(targetSessionState.RoomID, 0, xtlk, EventTypes.MSG_XTALK, 0); } return(true); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_ROOMINFO)protocol; if (sessionState.RoomID == inboundPacket.room.roomID) { var room = dbContext.GetRoom(sessionState.RoomID); if (!room.NotFound) { room.Name = inboundPacket.room.roomName; room.Flags = inboundPacket.room.roomFlags; room.Picture = inboundPacket.room.roomPicture; room.Artist = inboundPacket.room.roomArtist; room.FacesID = inboundPacket.room.facesID; //room.HasUnsavedAuthorChanges = true; room.HasUnsavedChanges = true; ServerState.FlushRooms(dbContext); SessionManager.SendToRoomID(sessionState.RoomID, 0, room, EventTypes.MSG_ROOMSETDESC, 0); } } }
public bool Command(ThePalaceEntities dbContext, UInt32 UserID, UInt32 TargetID, params string[] args) { if (args.Length > 0) { Logger.Log(MessageTypes.Info, $"CMD_SUSR[{UserID}]: {args[0]}"); } var sessionState = SessionManager.sessionStates[UserID]; AuthEngine.AuthorizeUser(dbContext, new Message { sessionState = sessionState, protocol = new MSG_SUPERUSER { password = args.FirstOrDefault(), }, }, out int AuthUserID, out List <int> AuthRoleIDs, out List <int> AuthMsgIDs, out List <string> AuthCmds); sessionState.Authorized = (AuthUserID != 0); sessionState.AuthUserID = AuthUserID; sessionState.AuthRoleIDs = AuthRoleIDs; sessionState.AuthMsgIDs = AuthMsgIDs; sessionState.AuthCmds = AuthCmds; return(true); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; // Send User Log 'endr' sessionState.Send(null, EventTypes.MSG_ROOMDESCEND, (Int32)sessionState.UserID); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var mediaState = ((Message)message).mediaState; sessionState.Send(mediaState.mediaStream, EventTypes.MSG_FILESEND, 0); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_DOORLOCK)protocol; if (inboundPacket.roomID == sessionState.RoomID) { var room = dbContext.GetRoom(sessionState.RoomID); if (!room.NotFound) { var hotspotType = room.Hotspots .Where(s => s.id == inboundPacket.spotID) .Select(s => (short)s.type) .FirstOrDefault(); if (hotspotType == (short)HotspotTypes.HS_Bolt) { room.Flags |= (int)RoomFlags.RF_Closed; SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_DOORLOCK, (Int32)sessionState.UserID); } else { var outboundPacket = new Protocols.MSG_XTALK { text = "The door you are attempting to lock is not a deadbolt!", }; sessionState.Send(outboundPacket, EventTypes.MSG_XTALK, 0); } } } }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_USERPROP)protocol; if (!sessionState.Authorized) { if ((sessionState.userFlags & (int)(UserFlags.U_PropGag | UserFlags.U_Pin)) != 0) { inboundPacket.nbrProps = 0; inboundPacket.propSpec = null; SessionManager.Send(sessionState, inboundPacket, EventTypes.MSG_USERPROP, (Int32)sessionState.UserID); return; } } sessionState.details.nbrProps = inboundPacket.nbrProps; sessionState.details.propSpec = inboundPacket.propSpec; AssetLoader.CheckAssets(sessionState, inboundPacket.propSpec); SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_USERPROP, (Int32)sessionState.UserID); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; if (!sessionState.Authorized) { if ((sessionState.userFlags & (int)UserFlags.U_NameGag) != 0) { return; } } var inboundPacket = (Protocols.MSG_USERNAME)protocol; if (string.IsNullOrWhiteSpace(inboundPacket.name) || Regex.IsMatch(inboundPacket.name, @"^User\s*[0-9]+$", RegexOptions.IgnoreCase | RegexOptions.Singleline)) { inboundPacket.name = $"User {sessionState.UserID}"; } Logger.Log(MessageTypes.Info, $"MSG_USERNAME[{sessionState.UserID}]: {inboundPacket.name}"); sessionState.details.name = inboundPacket.name; SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_USERNAME, (Int32)sessionState.UserID); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var listOfAllUsers = new Protocols.MSG_LISTOFALLUSERS(); sessionState.Send(listOfAllUsers, EventTypes.MSG_LISTOFALLUSERS, 0); }
public static void FlushRooms(ThePalaceEntities dbContext) { roomsCache.Values .ToList() .ForEach(r => { var nbrUsers = SessionManager.GetRoomUserCount(r.ID); if (r.HasUnsavedChanges) { if (nbrUsers < 1 && (r.Flags & (int)RoomFlags.RF_Closed) != 0) { r.Flags &= ~(int)RoomFlags.RF_Closed; } r.Write(dbContext); } if (nbrUsers < 1 && (r.Flags & (int)RoomFlags.RF_DropZone) == 0) { lock (roomsCache) { roomsCache.Remove(r.ID); } } }); }
public static RoomBuilder GetRoom(this ThePalaceEntities dbContext, Int16 roomID) { var room = (RoomBuilder)null; if (ServerState.roomsCache.ContainsKey(roomID)) { room = ServerState.roomsCache[roomID]; } else { room = new RoomBuilder(); if (room == null) { throw new OutOfMemoryException("Unable to initiate RoomBuilder instance."); } room.ID = roomID; room.Read(dbContext); if (!room.NotFound) { lock (ServerState.roomsCache) { ServerState.roomsCache.TryAdd(room.ID, room); } } } return(room); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; AuthEngine.AuthorizeUser(dbContext, message, out int AuthUserID, out List <int> AuthRoleIDs, out List <int> AuthMsgIDs, out List <string> AuthCmds); //sessionState = SessionManager.sessionStates[sessionState.UserID]; sessionState.Authorized = (AuthUserID != 0); sessionState.AuthUserID = AuthUserID; sessionState.AuthRoleIDs = AuthRoleIDs; sessionState.AuthMsgIDs = AuthMsgIDs; sessionState.AuthCmds = AuthCmds; if (sessionState.Authorized) { new MSG_LOGON().Send(dbContext, message); } else { new MSG_SERVERDOWN { reason = ServerDownFlags.SD_LoggedOff, whyMessage = "Authentication Failure!", }.Send(dbContext, message); } }
public static bool ReadRoom(this ThePalaceEntities dbContext, Int16 roomID, out RoomRec roomData) { var room = dbContext.Rooms.AsNoTracking() .Where(r => r.RoomId == roomID) .Join( dbContext.RoomData.AsNoTracking(), r => r.RoomId, e => e.RoomId, (r, e) => new { r, e } ) .FirstOrDefault(); if (room == null) { roomData = null; return(false); } roomData = new RoomRec { roomID = room.r.RoomId, roomName = room.r.Name, roomFlags = room.r.Flags, roomMaxOccupancy = room.r.MaxOccupancy, roomLastModified = room.r.LastModified ?? room.r.CreateDate, facesID = room.e.FacesId, roomArtist = room.e.ArtistName, roomPicture = room.e.PictureName, roomPassword = room.e.Password, }; return(true); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var assetState = ((Message)message).assetState; sessionState.Send(assetState.assetStream, EventTypes.MSG_ASSETSEND, 0); }
public void SendToStaff(ThePalaceEntities dbContext, object message) { var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_XTALK)protocol; SessionManager.SendToStaff(inboundPacket, EventTypes.MSG_XTALK, 0); }
public void SendToRoomID(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var userNew = new Protocols.MSG_USERNEW(); SessionManager.SendToRoomID(sessionState.RoomID, 0, userNew, EventTypes.MSG_USERNEW, (int)sessionState.UserID); }
public bool Command(ThePalaceEntities dbContext, UInt32 UserID, UInt32 TargetID, params string[] args) { var sessionState = SessionManager.sessionStates[UserID]; if (sessionState.extended.ContainsKey("OfferBuffer")) { var userProp = new MSG_USERPROP { propSpec = (AssetSpec[])sessionState.extended["OfferBuffer"], }; userProp.nbrProps = (Int16)userProp.propSpec.Length; sessionState.Send(userProp, EventTypes.MSG_USERPROP, (Int32)UserID); } else { var xtlk = new MSG_XTALK { text = $"No one has offered you their avatar.", }; sessionState.Send(xtlk, EventTypes.MSG_XTALK, 0); } return(true); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var userList = new Protocols.MSG_USERLIST(); sessionState.Send(userList, EventTypes.MSG_USERLIST, (Int32)SessionManager.GetRoomUserCount(sessionState.RoomID, sessionState.UserID)); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_PICTMOVE)protocol; SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_PICTMOVE, 0); }
public void SendToUserID(ThePalaceEntities dbContext, Message message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_XTALK)protocol; SessionManager.SendToUserID(sessionState.UserID, inboundPacket, EventTypes.MSG_XTALK, 0); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; sessionState.driver.DropConnection(); SendToServer(dbContext, message); }
public void Receive(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_EXTENDEDINFO)protocol; sessionState.Send(inboundPacket, EventTypes.MSG_EXTENDEDINFO, (Int32)sessionState.UserID); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var protocol = ((Message)message).protocol; var outboundPacket = (Protocols.MSG_ASSETQUERY)protocol; sessionState.Send(outboundPacket, EventTypes.MSG_ASSETQUERY, 0); }
public void SendToServer(ThePalaceEntities dbConetxt, object message) { var serverDown = new Protocols.MSG_SERVERDOWN { whyMessage = whyMessage, }; SessionManager.SendToServer(serverDown, EventTypes.MSG_SERVERDOWN, (Int32)reason); }
public void SendToUser(ThePalaceEntities dbContext, object message, UInt32 TargetID) { var protocol = ((Message)message).protocol; var header = ((Message)message).header; var inboundPacket = (Protocols.MSG_BLOWTHRU)protocol; SessionManager.SendToUserID(TargetID, inboundPacket, EventTypes.MSG_BLOWTHRU, header.refNum); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var version = Assembly.GetExecutingAssembly().GetName().Version; // Send Server Version 'vers' sessionState.Send(null, EventTypes.MSG_VERSION, (((version.Major & 0xFFFF) << 16) | (version.Minor & 0xFFFF))); }
public void Send(ThePalaceEntities dbContext, object message) { var sessionState = ((Message)message).sessionState; var diyit = new Protocols.MSG_DIYIT { ipAddress = sessionState.driver.GetIPAddress(), }; sessionState.Send(diyit, EventTypes.MSG_DIYIT, (Int32)sessionState.UserID); }
public void Receive(ThePalaceEntities dbContext, object message) { var protocol = ((Message)message).protocol; var inboundPacket = (Protocols.MSG_KILLUSER)protocol; var targetSession = SessionManager.sessionStates[inboundPacket.target]; targetSession.Send(null, EventTypes.MSG_SERVERDOWN, (Int32)ServerDownFlags.SD_KilledBySysop); targetSession.driver.DropConnection(); }
public void Send(ThePalaceEntities dbConetxt, object message) { var sessionState = ((Message)message).sessionState; var serverDown = new Protocols.MSG_SERVERDOWN { whyMessage = whyMessage, }; sessionState.Send(serverDown, EventTypes.MSG_SERVERDOWN, (Int32)reason); }