Ejemplo n.º 1
0
 protected virtual void ServerOnMessageReceived(object sender, NetworkMessage message)
 {
     if (Parse(message))
     {
         Send(message.MessageId, message.Data);
         Logger.Info("[Received] {0} : {1}", message.MessageId, message.GetType().Name);
     }
 }
Ejemplo n.º 2
0
        protected override bool Parse(NetworkMessage message)
        {
            if (message is SelectedServerDataMessage)
            {
                SelectedServerDataMessage serverData = (SelectedServerDataMessage)message;
                Program.MITM.Tickets.Add(serverData.Ticket, Tuple.Create(serverData.Address, (int)serverData.Port));

                serverData.Address = "127.0.0.1";
                serverData.Port = (ushort)SnifferConfig.Instance.GamePort;
                Send(serverData);
                Stop();
                return false;
            }
            return true;
        }
Ejemplo n.º 3
0
 protected override bool Parse(NetworkMessage message)
 {
     if (message is HelloGameMessage || message is ProtocolRequired)
     {
         return false;
     }
     if(message is AuthenticationTicketMessage)
     {
         AuthenticationTicketMessage ticket = (AuthenticationTicketMessage) message;
         if (Program.MITM.Tickets.ContainsKey(ticket.Ticket))
         {
             Tuple<string, int> address = Program.MITM.Tickets[ticket.Ticket];
             Server.Start(address.Item1, address.Item2);
             Program.MITM.Tickets.Remove(ticket.Ticket);
         }
         else
         {
             Stop();
         }
     }
     return true;
 }
Ejemplo n.º 4
0
 protected virtual void OnMessageReceived(NetworkMessage message)
 {
     MessageReceivedEventHandler handler = MessageReceived;
     if (handler != null) handler(this, message);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Sends a message to the server
 /// </summary>
 public void Send(NetworkMessage message)
 {
     lock (locker)
     {
         if(!Connected)
             throw new Exception("Cannot send a message if the client isn't connected.");
         using (BigEndianWriter writer = new BigEndianWriter())
         {
             message.Pack(writer);
             Writer.WriteBytes(writer.Data);
         }
     }
 }
Ejemplo n.º 6
0
 protected abstract bool Parse(NetworkMessage message);
Ejemplo n.º 7
0
 public void Invoke(NetworkMessage message)
 {
     Method.Invoke(Instance, new object[] { message });
 }
Ejemplo n.º 8
0
 private void Dispatch(object sender, NetworkMessage message)
 {
     foreach (var method in methods)
     {
         foreach (var attribute in method.Attributes)
         {
             if (attribute.MessageId == message.MessageId || attribute.MessageType == message.GetType())
             {
                 method.Invoke(message);
             }
         }
     }
 }