예제 #1
0
        public static IMessageStruct ParseMessageData(Message message)
        {
            switch ((Message.TYPE_ID)message.TypeID)
            {
            case Message.TYPE_ID.FIRST_SECURE_MESSAGE:
                return(FirstSecureMessage.Parse(message.Data));

            case Message.TYPE_ID.FIRST_SECURE_MESSAGE_SERVER:
                return(FirstSecureMessageServer.Parse(message.Data));

            case Message.TYPE_ID.GENERATE_SECURITY_CONTEXT:
                return(GenerateSecurityContext.Parse(message.Data));

            case Message.TYPE_ID.SECURITY_CONTEXT_SERVER_MSG:
                return(SecurityContextServer.Parse(message.Data));

            case Message.TYPE_ID.AUTHENTICATE_MSG:
                return(AuthenticateMessage.Parse(message.Data));

            case Message.TYPE_ID.SERVER_ACCESS_GRANTED:
                return(ServerAccessGranted.Parse(message.Data));

            case Message.TYPE_ID.SERVER_ACCESS_DENIED:
                return(ServerAccessDenied.Parse(message.Data));

            case Message.TYPE_ID.CONNECT_MSG:
                return(ConnectMessage.Parse(message.Data));

            case Message.TYPE_ID.CONNECT_ACK_MSG:
                return(ConnectAckMessage.Parse(message.Data));

            case Message.TYPE_ID.STATE_MSG:
                return(StateMessage.Parse(message.Data));

            case Message.TYPE_ID.USER_MSG:
                return(UserMessage.Parse(message.Data));

            case Message.TYPE_ID.ERROR_MSG:
                return(ErrorMessage.Parse(message.Data));

            case Message.TYPE_ID.WATCH_MSG:
                return(WatchMessage.Parse(message.Data));

            case Message.TYPE_ID.DATA_MSG:
                return(DataMessage.Parse(message.Data));

            default:
                return(null);
            }
        }
예제 #2
0
            public static ServerAccessGranted Parse(byte[] Data)
            {
                var parsedMessage = new ServerAccessGranted();

                parsedMessage.Unused_0          = BitConverter.ToInt32(Data, 0);
                parsedMessage.ZWebAuthSignature = System.Text.Encoding.ASCII.GetString(Data, 4, 8);
                parsedMessage.Unused_1          = BitConverter.ToInt32(Data, 13);
                parsedMessage.Unused_2          = BitConverter.ToInt32(Data, 17);
                parsedMessage.Username          = System.Text.Encoding.ASCII.GetString(Data, 21, 19);

                parsedMessage.Unused_3 = BitConverter.ToInt32(Data, 41);
                parsedMessage.Unused_4 = BitConverter.ToInt32(Data, 45);
                parsedMessage.Unused_5 = BitConverter.ToInt32(Data, 49);

                parsedMessage.UserID = System.Text.Encoding.ASCII.GetString(Data, 53, Data.Length - 53);
                return(parsedMessage);
            }
예제 #3
0
        private static void ServerManager_MessageReceived(ServerMessage msg)
        {
            switch (msg.Name)
            {
            case "mudhack_users":
                UsersReceived?.Invoke(JsonConvert.DeserializeObject <List <OnlineUser> >(msg.Contents));
                break;

            case "mudhack_init":
                ServerPasswordGenerated?.Invoke(msg.Contents);
                break;

            case "mudhack_denied":
                ServerAccessDenied?.Invoke();
                break;

            case "mudhack_granted":
                ServerAccessGranted?.Invoke();
                break;

            case "getguid_fromserver":
                if (SaveSystem.CurrentSave.Username == msg.Contents)
                {
                    client.Send(new NetObject("yes_i_am", new ServerMessage
                    {
                        Name     = "getguid_reply",
                        GUID     = msg.GUID,
                        Contents = thisGuid.ToString(),
                    }));
                }
                break;

            case "getguid_reply":
                GUIDReceived?.Invoke(msg.Contents);
                break;
            }
        }