Exemplo n.º 1
0
        public async Task OnHttpPageRequest(HttpContext httpContext, string filename)
        {
            Session session = null;

            if (httpContext.Request.Headers.TryGetValue("Authorization", out var value))
            {
                string[] data = value[0].Split(" ", 2);
                if (data.Length == 2 && data[0].Equals("Bearer"))
                {
                    session = SessionManager.GetSession(data[1]);
                }
            }
            switch (filename.ToLower())
            {
            case "/api/start":
                await StartServer.OnRequest(httpContext, session);

                break;

            case "/api/stop":
                await StopServer.OnRequest(httpContext, session);

                break;

            case "/api/restart":
                await RestartServer.OnRequest(httpContext, session);

                break;

            case "/api/kill":
                await KillServer.OnRequest(httpContext, session);

                break;

            case "/api/stats":
                await GetServerStatus.OnRequest(httpContext, session);

                break;

            case "/api/servers":
                await GetServers.OnRequest(httpContext, session);

                break;

            case "/api/server":
                await GetServer.OnRequest(httpContext, session);

                break;

            case "/api/command":
                await SendCommand.OnRequest(httpContext, session);

                break;

            case "/api/login":
                await Login.OnRequest(httpContext);

                break;
            }
        }
        public override async Task <BatchResult> GetServers <T>(GetServers query, Action <List <T> > pageAction, CancellationToken ct)
        {
            throw new NotImplementedException();
            var r = await query.PostJson <BatchResult>(new Uri(_uri, "/api/get-servers"), ct).ConfigureAwait(false);

            return(r);
        }
Exemplo n.º 3
0
        private void HandleGetServers(GetServers payload, PayloadWriter writer)
        {
            if (!ServerUpdateReceivers.TryAdd(Connection, Account.Id))
            {
                StatusMsg resultPayload1 = Payloads.CreatePayload <StatusMsg>();
                resultPayload1.Errorcode = 3;
                resultPayload1.Errormsg  = "Can not get server list";
                resultPayload1.TicketId  = payload.TicketId;
                SendReply(writer, resultPayload1);
                return;
            }

            List <Server> servers = Program.Servers.GetServers();

            uint ticketId = payload.TicketId;

            foreach (Server server in servers)
            {
                ServerInfo resultPayload1 = CreateServerInfoPayload(server, ticketId);
                SendReply(writer, resultPayload1);
            }

            StatusMsg resultPayload2 = Payloads.CreatePayload <StatusMsg>();

            resultPayload2.Errorcode = 0;
            resultPayload2.Errormsg  = null;
            resultPayload2.TicketId  = payload.TicketId;
            SendReply(writer, resultPayload2);
        }
Exemplo n.º 4
0
        public override async Task <BatchResult> GetServers <T>(GetServers query, Action <List <T> > pageAction,
                                                                CancellationToken ct)
        {
            var requestId = Guid.NewGuid();

            await MakeSureConnected().ConfigureAwait(false);

            using (Listen <ReceivedServerPageEvent>(requestId)
                   .Select(x => x.Servers.Cast <T>().ToList())
                   .Do(pageAction)
                   .Subscribe()) {
                return
                    (await _servers.Invoke <BatchResult>("GetServers", query, requestId)
                     .MakeCancellable(ct)
                     .ConfigureAwait(false));
            }
        }
        private void LoadLocateServers_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter          = "网页源码txt|*.txt|网页源码html|*.html";
            ofd.ValidateNames   = true;
            ofd.CheckPathExists = true;
            ofd.CheckFileExists = true;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                var servers = GetServers.LoadLocate(ofd.FileName);
                if (servers != null && servers.Count > 0)
                {
                    SaveServers(servers);
                    MessageBox.Show("共加载" + (servers.Count - 1) + "个地址!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    MessageBox.Show("读取地址失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Exemplo n.º 6
0
        static async Task Main(string[] args)
        {
            string server = await GetServers.GetBestInZone();

            Console.WriteLine(server);

            List <ClientWebSocket> sockets = new List <ClientWebSocket>();

            ClientWebSocket clientWebSocket = new ClientWebSocket();

            // for N
            sockets.Add(clientWebSocket);
            await clientWebSocket.ConnectAsync(new Uri($"wss://{server.Replace(":", "/")}"), CancellationToken.None);

            // game register

            // game processor

            GameState gameState = new GameState();
            Dictionary <byte, BaseQuery> commands = new Dictionary <byte, BaseQuery>
            {
                { 1, new GameStartQuery(1, new Handshake(clientWebSocket)) }, // TODO hz
                // 2
                { 3, new SelfMovement(3) },
                { 4, new CaptureHex(4) }, // TODO capture
                // 5
                { 13, new TranslationQuery(13, gameState) },
                // 6
                // 14
                { 7, new DeathQuery(7) }, // TODO decapture
                // {8, }
                // 9
                // {10, }
                { 11, new ReceiveUsername(11, gameState) },
                { 15, new ReciveSkin(15, gameState) },
                // 12
                // 99
            };


            Queue <byte[]> messageQueue = new Queue <byte[]>();

            HandleClientInput(clientWebSocket, messageQueue);

            byte[] buffer = new byte[43]; // TODO how many
            while (clientWebSocket.State == WebSocketState.Open)
            {
                WebSocketReceiveResult text = await clientWebSocket.ReceiveAsync(buffer, CancellationToken.None);

                byte key = buffer[0];
                if (commands.ContainsKey(key))
                {
                    if (!text.EndOfMessage)
                    {
                        buffer = await HandleLongMessage(buffer, clientWebSocket);
                    }
                    commands[key].Handle(buffer);
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"Command {key} is not implemented");
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
            }

            Console.ReadLine();
        }
Exemplo n.º 7
0
 public abstract Task <BatchResult> GetServers <T>(GetServers query, Action <List <T> > pageAction,
                                                   CancellationToken ct) where T : ServerInfoModel;
Exemplo n.º 8
0
        public async Task <BatchResult> GetServers <T>(uint appId, GetServers query, CancellationToken ct, Action <List <T> > act) where T : ServerInfoModel
        {
            await StartSteamHelper(appId).ConfigureAwait(false);

            return(await _session.GetServers(query, act, ct).ConfigureAwait(false));
        }
Exemplo n.º 9
0
 public void getActiveServers(GetServers returnData)
 {
     serversCallBack = returnData;
     HttpHelper.sharedInstance.get(webside,afterGet);
 }
Exemplo n.º 10
0
 public Task <BatchResult> GetServers(GetServers query, Guid requestId) => Send(query, requestId);