public RequestHandlerFactory(IContainerManager containerManager, IJobManager jobManager, Message.Type requestType, Request request)
 {
     if (containerManager == null)
     {
         throw new ArgumentNullException("containerManager");
     }
     if (jobManager == null)
     {
         throw new ArgumentNullException("jobManager");
     }
     if (requestType == default(Message.Type))
     {
         throw new ArgumentNullException("requestType");
     }
     if (request == null)
     {
         throw new ArgumentNullException("message");
     }
     this.containerManager = containerManager;
     this.jobManager = jobManager;
     this.requestType = requestType;
     this.request = request;
 }
Exemple #2
0
 // Token: 0x06000061 RID: 97
 public abstract void PacketID(Message.Type val);
Exemple #3
0
    public void OnNetworkMessage(Message packet)
    {
        Message.Type type = packet.type;
        if (type == Message.Type.Ready)
        {
            if (!packet.connection.isAuthenticated)
            {
                return;
            }
            if (packet.connection.GetPacketsPerSecond(packet.type) > (long)1)
            {
                Network.Net.sv.Kick(packet.connection, "Packet Flooding: Client Ready");
                return;
            }
            using (TimeWarning timeWarning = TimeWarning.New("ClientReady", (long)20))
            {
                try
                {
                    this.ClientReady(packet);
                }
                catch (Exception exception)
                {
                    this.Log(exception);
                    Network.Net.sv.Kick(packet.connection, "Invalid Packet: Client Ready");
                }
            }
            packet.connection.AddPacketsPerSecond(packet.type);
            return;
        }
        switch (type)
        {
        case Message.Type.RPCMessage:
        {
            if (!packet.connection.isAuthenticated)
            {
                return;
            }
            if (packet.connection.GetPacketsPerSecond(packet.type) > (long)ConVar.Server.maxrpcspersecond)
            {
                Network.Net.sv.Kick(packet.connection, "Paket Flooding: RPC Message");
                return;
            }
            using (timeWarning = TimeWarning.New("OnRPCMessage", (long)20))
            {
                try
                {
                    this.OnRPCMessage(packet);
                }
                catch (Exception exception1)
                {
                    this.Log(exception1);
                    Network.Net.sv.Kick(packet.connection, "Invalid Packet: RPC Message");
                }
            }
            packet.connection.AddPacketsPerSecond(packet.type);
            return;
        }

        case Message.Type.EntityPosition:
        case Message.Type.ConsoleMessage:
        case Message.Type.Effect:
        {
            this.ProcessUnhandledPacket(packet);
            return;
        }

        case Message.Type.ConsoleCommand:
        {
            if (!packet.connection.isAuthenticated)
            {
                return;
            }
            if (packet.connection.GetPacketsPerSecond(packet.type) > (long)ConVar.Server.maxcommandspersecond)
            {
                Network.Net.sv.Kick(packet.connection, "Packet Flooding: Client Command");
                return;
            }
            using (timeWarning = TimeWarning.New("OnClientCommand", (long)20))
            {
                try
                {
                    ConsoleNetwork.OnClientCommand(packet);
                }
                catch (Exception exception2)
                {
                    this.Log(exception2);
                    Network.Net.sv.Kick(packet.connection, "Invalid Packet: Client Command");
                }
            }
            packet.connection.AddPacketsPerSecond(packet.type);
            return;
        }

        case Message.Type.DisconnectReason:
        {
            if (!packet.connection.isAuthenticated)
            {
                return;
            }
            if (packet.connection.GetPacketsPerSecond(packet.type) > (long)1)
            {
                Network.Net.sv.Kick(packet.connection, "Packet Flooding: Disconnect Reason");
                return;
            }
            using (timeWarning = TimeWarning.New("ReadDisconnectReason", (long)20))
            {
                try
                {
                    this.ReadDisconnectReason(packet);
                }
                catch (Exception exception3)
                {
                    this.Log(exception3);
                    Network.Net.sv.Kick(packet.connection, "Invalid Packet: Disconnect Reason");
                }
            }
            packet.connection.AddPacketsPerSecond(packet.type);
            return;
        }

        case Message.Type.Tick:
        {
            if (!packet.connection.isAuthenticated)
            {
                return;
            }
            if (packet.connection.GetPacketsPerSecond(packet.type) > (long)ConVar.Server.maxtickspersecond)
            {
                Network.Net.sv.Kick(packet.connection, "Packet Flooding: Player Tick");
                return;
            }
            using (timeWarning = TimeWarning.New("OnPlayerTick", (long)20))
            {
                try
                {
                    this.OnPlayerTick(packet);
                }
                catch (Exception exception4)
                {
                    this.Log(exception4);
                    Network.Net.sv.Kick(packet.connection, "Invalid Packet: Player Tick");
                }
            }
            packet.connection.AddPacketsPerSecond(packet.type);
            return;
        }

        default:
        {
            switch (type)
            {
            case Message.Type.GiveUserInformation:
            {
                if (packet.connection.GetPacketsPerSecond(packet.type) > (long)1)
                {
                    Network.Net.sv.Kick(packet.connection, "Packet Flooding: User Information");
                    return;
                }
                using (timeWarning = TimeWarning.New("GiveUserInformation", (long)20))
                {
                    try
                    {
                        this.OnGiveUserInformation(packet);
                    }
                    catch (Exception exception5)
                    {
                        this.Log(exception5);
                        Network.Net.sv.Kick(packet.connection, "Invalid Packet: User Information");
                    }
                }
                packet.connection.AddPacketsPerSecond(packet.type);
                return;
            }

            case Message.Type.GroupEnter:
            case Message.Type.GroupLeave:
            {
                this.ProcessUnhandledPacket(packet);
                return;
            }

            case Message.Type.VoiceData:
            {
                if (!packet.connection.isAuthenticated)
                {
                    return;
                }
                if (packet.connection.GetPacketsPerSecond(packet.type) > (long)100)
                {
                    Network.Net.sv.Kick(packet.connection, "Packet Flooding: Disconnect Reason");
                    return;
                }
                using (timeWarning = TimeWarning.New("OnPlayerVoice", (long)20))
                {
                    try
                    {
                        this.OnPlayerVoice(packet);
                    }
                    catch (Exception exception6)
                    {
                        this.Log(exception6);
                        Network.Net.sv.Kick(packet.connection, "Invalid Packet: Player Voice");
                    }
                }
                packet.connection.AddPacketsPerSecond(packet.type);
                return;
            }

            case Message.Type.EAC:
            {
                using (timeWarning = TimeWarning.New("OnEACMessage", (long)20))
                {
                    try
                    {
                        EACServer.OnMessageReceived(packet);
                    }
                    catch (Exception exception7)
                    {
                        this.Log(exception7);
                        Network.Net.sv.Kick(packet.connection, "Invalid Packet: EAC");
                    }
                }
                return;
            }

            default:
            {
                this.ProcessUnhandledPacket(packet);
                return;
            }
            }
            break;
        }
        }
    }
Exemple #4
0
 public Message(Transceiver connection, Message.Type type, MessageContent contents, string creator)
 {
     this._origin = connection;
     this._type = type;
     this._content = contents;
 }
 public Unit Tell(object message, ProcessId sender, string inbox, Message.Type type, Message.TagSpec tag) =>
 ProcessOp.IO(() => TellNoIO(message, sender, inbox, type, tag));
Exemple #6
0
 private void DiscoverType()
 {
     try
     {
         Logger.log("Attempting to discovering message type.", Logger.Verbosity.screaming);
         XmlDocument document = new XmlDocument();
         XmlElement element = null;
         XmlNodeList list = null;
         document.LoadXml(this._raw_message);
         list = document.GetElementsByTagName("Message");
         element = (XmlElement)list.Item(0);
         string type = element.GetAttribute("type");
         switch(type)
         {
             case "Plugins":
                 this._type = Message.Type.Plugins;
                 break;
             case "Loop":
                 this._type = Message.Type.Loop;
                 break;
             case "ServerToServer":
                 this._type = Message.Type.ServerToServer;
                 break;
             case "UserToServer":
                 this._type = Message.Type.UserToServer;
                 break;
             case "UserToServerPlugin":
                 this._type = Message.Type.UserToServerPlugin;
                 break;
             case "UserToUser":
                 this._type = Message.Type.UserToUser;
                 break;
             case "ServerToUser":
                 this._type = Message.Type.ServerToUser;
                 break;
             case "ServerToUserPlugin":
                 this._type = Message.Type.ServerToUserPlugin;
                 break;
             default:
                 this._type = Message.Type.Unknown;
                 break;
         }
     }
     catch(Exception e)
     {
         this._type = Message.Type.Unknown;
     }
     Logger.log("Message type found: "+this.StringType(), Logger.Verbosity.screaming);
 }
 public Message(Message.Type type, byte[] data)
 {
     this.type = type;
     this.data = data;
 }
Exemple #8
0
 internal static RemoteMessageDTO CreateMessage(object message, ProcessId to, ProcessId sender, Message.Type type, Message.TagSpec tag) =>
 new RemoteMessageDTO
 {
     Type        = (int)type,
     Tag         = (int)tag,
     To          = to.Path,
     RequestId   = -1,
     MessageId   = Guid.NewGuid(),
     Sender      = sender.ToString(),
     ReplyTo     = sender.ToString(),
     ContentType = message == null
                         ? null
                         : message.GetType().AssemblyQualifiedName,
     Content = message == null
                         ? null
                         : JsonConvert.SerializeObject(message, ActorConfig.Default.JsonSerializerSettings)
 };
Exemple #9
0
 internal static RemoteMessageDTO Create(object message, ProcessId to, ProcessId sender, Message.Type type, Message.TagSpec tag) =>
 map(message as ActorRequest, req =>
     req == null
             ? map(message as ActorResponse, res =>
                   res == null
                     ? CreateMessage(message, to, sender, type, tag)
                     : CreateResponse(res, to, sender))
             : CreateRequest(req, to, sender));
Exemple #10
0
        public async Task <bool> SaveMessageAsync(MessageModel messageModel, ApplicationUser user, Message.Type type)
        {
            var conversation = await _dbContext.Conversations.FindAsync(messageModel.ConversationId);

            if (conversation == null)
            {
                return(false);
            }
            if (!_dbContext.ApplicationUserConversations
                .Where(auc => auc.ConversationId == conversation.ConversationId)
                .Any(auc => auc.UserId == user.Id))
            {
                return(false);
            }
            var msg = new Message()
            {
                ConversationId = messageModel.ConversationId,
                MessageType    = type,
                SenderUserId   = user.Id,
                Content        = messageModel.Content
            };
            await _dbContext.Messages.AddAsync(msg);

            await _dbContext.SaveChangesAsync();

            messageModel.Type     = type;
            messageModel.senderId = user.Id;

            await _messagesHubContext.Clients
            .Group(conversation.ConversationId.ToString())
            .MessageSent(conversation.ConversationId, messageModel);

            return(true);
        }