Example #1
0
        static void OnPacketReceived(RakNetSession session, Packet packet)
        {
            if (packet is DosUnknown87)
            {
                // Unknown.
            }
            else if (packet is DosEnumerationList)
            {
                if (!Executed)
                {
                    Console.WriteLine("Sending console command:");
                    Console.WriteLine("> " + Command + " " + String.Join(" ", Arguments));
                    var consoleCmd = new DosSendConsoleCommand
                    {
                        Command   = Command,
                        Arguments = Arguments
                    };
                    session.SendEncapsulated(consoleCmd, EncapsulatedReliability.ReliableOrdered);
                }

                ReceivedEvents = true;
            }
            else if (packet is DosConsoleResponse)
            {
                bool hasResult = false;
                var  lines     = (packet as DosConsoleResponse).Lines;
                foreach (var line in lines)
                {
                    switch (line.Level)
                    {
                    case 4: Console.ForegroundColor = ConsoleColor.Green; hasResult = true; break;

                    case 5: Console.ForegroundColor = ConsoleColor.Red; hasResult = true; break;

                    default: Console.ResetColor(); break;
                    }
                    Console.WriteLine(line.Line);
                }
                Console.ResetColor();
                Executed       = true;
                ReceivedEvents = true;

                if (hasResult)
                {
                    var disconnectCmd = new DosDisconnectConsole();
                    Session.SendEncapsulated(disconnectCmd, EncapsulatedReliability.ReliableOrdered);
                }
            }
            else
            {
                throw new Exception("Unhandled DOS encapsulated packet");
            }
        }
Example #2
0
        static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            if (!ReceivedEvents)
            {
                ReceivedEvents = true;

                if (Session != null)
                {
                    Console.WriteLine("Disconnecting.");
                    var disconnectCmd = new DosDisconnectConsole();
                    Session.SendEncapsulated(disconnectCmd, EncapsulatedReliability.ReliableOrdered);
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Timed out waiting for session establishment");
                    Console.ResetColor();
                }
            }
            else
            {
                ReceivedEvents = false;
            }
        }