Esempio n. 1
0
        private static void MainThread(object data)
        {
            QuarterServer server = (QuarterServer)data;

            ColorPrint(
                "@@@@@@@@@@@  Quarter Share\n@@@@@@@@@@@\n@@@@@@@@@@@  Use command ");
            Blue(".help");
            ColorPrint(
                " to learn more about the server's\n@@@###@###@  internal commands\n@@@@@#@#@@@\n" +
                "@@@###@###@  The server is running at " + server.Host + ":" + server.Port + "\n" +
                "@@@#@@@@@#@\n@#@###@###@\n@@@@@@@@@@@\n@@@@@@@@@@@\n@@@@@@@@@@@\n\n");

            while (true)
            {
                try
                {
                    TcpClient connection = server.Listener.AcceptTcpClient();
                    new ClientWorker(server, connection);
                }
                catch
                {
                    Red("Failed to accept tcp connection");
                }
            }
        }
Esempio n. 2
0
        public static void ResolveInternalCommand(QuarterServer server, string raw)
        {
            Command TheCommand = null;

            if (raw.StartsWith("."))
            {
                raw = raw.Substring(1);

                Command[] AllCommands =
                {
                    new ShowHelpCommand(server,     raw),
                    new ShowFlagCommand(server,     raw),
                    new ChangeFlagCommand(server,   raw),
                    new ListClientCommand(server,   raw),
                    new StopServerCommand(server,   raw),
                    new AllowClientCommand(server,  raw),
                    new KickClientCommand(server,   raw),
                    new SendToClientCommand(server, raw)
                };

                foreach (Command c in AllCommands)
                {
                    if (c.IsMatch())
                    {
                        TheCommand = c;
                        break;
                    }
                }
            }
            else
            {
                TheCommand = new SendToClientCommand(server, "send @p " + raw);
            }

            if (TheCommand == null)
            {
                Red("Unknown command\n");
                PrintInternalCommandHelp();
                return;
            }

            try
            {
                TheCommand.Handle();
            }
            catch
            {
                Red("Command exception\n");
                PrintInternalCommandHelp();
            }
        }
Esempio n. 3
0
        public static void Main(string[] args)
        {
            ServerConfig config = UserInput.ResolveShellArgument(args);

            Console.OutputEncoding = Encoding.UTF8;
            Console.WriteLine("Press any key to start the server");
            Console.ReadKey();
            Console.Clear();
            Console.SetCursorPosition(0, 0);

            ServerWorker SThread = new ServerWorker(config);

            UsingServer = SThread.Server;

            while (true)
            {
                UserInput.ResolveInternalCommand(UsingServer, Console.ReadLine());
            }
        }
Esempio n. 4
0
        public ClientWorker(QuarterServer server, TcpClient tcp)
        {
            Client = new QuarterClient(server, tcp);

            new Thread(MainThread).Start(Client);
        }
Esempio n. 5
0
 public ListClientCommand(QuarterServer server, string raw) : base(server, raw)
 {
 }
Esempio n. 6
0
 public ChangeFlagCommand(QuarterServer server, string raw) : base(server, raw)
 {
 }
Esempio n. 7
0
 public ShowFlagCommand(QuarterServer server, string raw) : base(server, raw)
 {
 }
Esempio n. 8
0
 public StopServerCommand(QuarterServer server, string raw) : base(server, raw)
 {
 }
Esempio n. 9
0
 public Command(QuarterServer server, string raw)
 {
     Server = server;
     Raw    = raw;
     Split  = raw.Split(' ');
 }
Esempio n. 10
0
 public SendToClientCommand(QuarterServer server, string raw) : base(server, raw)
 {
 }
Esempio n. 11
0
        public ServerWorker(ServerConfig init)
        {
            Server = new QuarterServer(init);

            new Thread(MainThread).Start(Server);
        }