Ejemplo n.º 1
0
        /// <summary>
        /// Listener for console commands
        /// </summary>
        public ConsoleCmdListener()
        {
            ListenerThread = new Thread(() =>
            {
                Console.CursorSize = 35;
                while ((Command = Console.ReadLine()) != null)
                {
                    if (!string.IsNullOrEmpty(Command) && !string.IsNullOrWhiteSpace(Command))
                    {
                        switch (Command.ToLower())
                        {
                        case "/help":
                            Logger.Log("/jsonreload -> Reloads the JSON definitions");
                            Logger.Log("/clear -> Clears the entire console window");
                            Logger.Log("/restart -> Restarts the proxy");
                            Logger.Log("/shutdown -> Safely shuts the proxy down");
                            break;

                        case "/jsonreload":
                            JSONPacketManager.LoadDefinitions();
                            break;

                        case "/clear":
                            Console.Clear();
                            break;

                        case "/restart":
                            Program.Restart();
                            break;

                        case "/shutdown":
                            Logger.Log("Shutting down..");
                            Proxy.Stop();
                            Program.WaitAndClose(350);
                            break;

                        default:
                            Logger.Log("Unknown command! Type \"/help\" to see all available console commands.", LogType.WARNING);
                            break;
                        }
                    }
                    else
                    {
                        Console.CursorTop -= 1;
                    }
                }
            });
            ListenerThread.Start();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Starts the proxy
        /// </summary>
        public static void Start()
        {
            try
            {
                // Check dirs
                Helper.CheckDirectories();

                // ASCII art
                Console.ForegroundColor = Helper.ChooseRandomColor();
                Logger.CenterString(@"  _____                                 ____ ");
                Logger.CenterString(@" / ___/__  ______  ___  _____________  / / / ");
                Logger.CenterString(@" \__ \/ / / / __ \/ _ \/ ___/ ___/ _ \/ / /  ");
                Logger.CenterString(@"  _/ / /_/ / /_/ /  __/ /  / /__/  __/ / /   ");
                Logger.CenterString(@"/____/\__,_/ .___/\___/_/   \___/\___/_/_/   ");
                Logger.CenterString(@"          /_/____                            ");
                Logger.CenterString(@"            / __ \_________  _  ____  __      ");
                Logger.CenterString(@"           / /_/ / ___/ __ \| |/_/ / / /      ");
                Logger.CenterString(@"          / ____/ /  / /_/ />  </ /_/ /      ");
                Logger.CenterString(@"         /_/   /_/   \____/_/|_|\__, /       ");
                Logger.CenterString(@"                               /____/        ");
                Logger.CenterString(@"                                             ");
                Logger.CenterString(Helper.AssemblyVersion);
                Logger.CenterString("Coded by expl0itr");
                Logger.CenterString("Apache Version 2.0 License - © 2016");
                Logger.CenterString("https://github.com/expl0itr/SupercellProxy/");
                Console.Write(Environment.NewLine);
                Console.ResetColor();

                // Show configuration values
                Console.Write(Environment.NewLine);
                Logger.CenterString("===============================");
                Logger.CenterString(Config.Game.ReadableName());
                Logger.CenterString(Config.Host);
                Logger.CenterString("Local IP: " + Helper.LocalNetworkIP);
                Logger.CenterString("===============================");
                Console.Write(Environment.NewLine);

                // Set latest public key
                Keys.SetPublicKey();

                // Bind a new socket to the local EP
                IPEndPoint EP             = new IPEndPoint(IPAddress.Any, Port);
                Socket     ClientListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                ClientListener.Bind(EP);
                ClientListener.Listen(Backlog);

                // Initialize the JSON Packets
                JSONPacketManager.LoadDefinitions();

                // Listen for connections
                AcceptThread = new Thread(() =>
                {
                    while (true)
                    {
                        Socket ClientSocket = ClientListener.Accept();
                        Client c            = new Client(ClientSocket);
                        ClientPool.Add(c);
                        Logger.Log("A client connected (" + ClientSocket.GetIP() + ")! Enqueuing..");
                        c.Enqueue();
                    }
                });
                AcceptThread.Start();
                Logger.Log("Proxy started. Waiting for incoming connections..");
            }
            catch (Exception ex)
            {
                Logger.Log("Failed to start the proxy (" + ex.GetType() + ")!");
            }
        }