Ejemplo n.º 1
0
        public void UpdateServerData(Server dayZServer, ReadOnlyCollection <QueryMaster.GameServer.PlayerInfo> playerData, ServerInfo serverInfo)
        {
            List <DayZPlayer> playerList = new List <DayZPlayer>();

            if (playerData != null)
            {
                foreach (QueryMaster.GameServer.PlayerInfo dzPlayer in playerData)
                {
                    DayZPlayer i = new DayZPlayer();
                    if (string.IsNullOrEmpty(dzPlayer.Name))
                    {
                        i.Name = "Name Unavailable";
                    }
                    else
                    {
                        i.Name = dzPlayer.Name;
                    }

                    i.FullIP_Address = dayZServer.FullIP_Address;
                    i.Time           = dzPlayer.Time;
                    playerList.Add(i);
                    //Console.WriteLine("Name : " + dzPlayer.Name + "\nScore : " + dzPlayer.Score + "\nTime : " + dzPlayer.Time + "\nServer : " + serverInfo.Name + "\nUser Count : " + serverInfo.Players + "\nPing : " + serverInfo.Ping);
                }
            }

            if (serverInfo != null)
            {
                dayZServer.PingSpeed  = serverInfo.Ping;
                dayZServer.UserCount  = serverInfo.Players;
                dayZServer.IsPrivate  = serverInfo.IsPrivate;
                dayZServer.MaxPlayers = serverInfo.MaxPlayers;
            }
            dayZServer.playersList = playerList;
            ServerToDictionary(dayZServer);
        }
Ejemplo n.º 2
0
        public async Task getGTList()
        {
            byte[]    data;
            WebClient webClient  = new WebClient();
            string    _UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";

            webClient.Headers["Accept"]     = "application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
            webClient.Headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC)";

            try
            {
                ServicePointManager.Expect100Continue = true;
                ServicePointManager.SecurityProtocol  = SecurityProtocolType.Tls
                                                        | SecurityProtocolType.Tls11
                                                        | SecurityProtocolType.Tls12
                                                        | SecurityProtocolType.Ssl3;

                data = await webClient.DownloadDataTaskAsync(new Uri("https://www.gametracker.com/search/dayz/US/?sort=3&order=DESC&searchipp=50", UriKind.Absolute));

                string result = System.Text.Encoding.UTF8.GetString(data);

                Match m2 = Regex.Match(result, "(?<=Server Map).*?(?=Server Map)", RegexOptions.Singleline);
                if (m2.Success)
                {
                    result = m2.ToString();
                }
                else
                {
                    result = "<td><a href=\"/search/dayz/600/\"><img src=\"/images/game_icons16/dayz.png\" alt=\"DAYZ\"/></a></td><td><a class=\"c03serverlink\" href=\"/server_info/216.244.78.242:2802/\">\\DG Clan - SUPERSHARD #1 \\ Unlocked \\ High Loot \\ 24/7 day</a><a href=\"javascript:showPopupExternalLink('gt://*****:*****@"(<a.*?>.*?</a>)",
                                                   RegexOptions.Singleline);

                // 2.
                // Loop over each match.
                foreach (Match m in m1)
                {
                    string     value = m.Groups[1].Value;
                    DayZPlayer i     = new DayZPlayer();

                    // 3.
                    // Get href attribute.
                    Match m3 = Regex.Match(value, "href=\"/server_info/" + "(.*?)" + "/\"",
                                           RegexOptions.Singleline);

                    if (m3.Success)
                    {
                        i.FullIP_Address = m3.Groups[1].Value.ToString();
                    }

                    // 4.
                    // Remove inner tags from text.
                    string t = Regex.Replace(value, @"\s*<.*?>\s*", "",
                                             RegexOptions.Singleline);
                    i.Name = t;
                    if (i.FullIP_Address == null)
                    {
                        continue;
                    }
                    GTlist.Add(i);
                }
                Console.WriteLine("Servers" + GTlist);

                foreach (DayZPlayer GTServer in GTlist)
                {
                    bool serverdata = !GTServer.FullIP_Address.Any(x => char.IsLetter(x));
                    if (!serverdata)
                    {
                        continue;
                    }

                    await Task.Run(() => writeGTList(GTServer.Name, GTServer.FullIP_Address));
                }
            }
            catch (WebException ex)
            {
                Console.WriteLine("Exception" + ex);
            }
        }
Ejemplo n.º 3
0
        public static void DisplayResult(string result, string IP)
        {
            if (result == null)
            {
                return;
            }

            // Console.WriteLine("html: {0}", result);

            string playerhtml = result;

            if (playerhtml.Contains("Players:") && playerhtml.Contains("Rank:"))
            {
                Match m2 = Regex.Match(playerhtml, "(?<=Online Players).*?(?=JOIN THIS SERVER)", RegexOptions.Singleline);
                if (m2.Success)
                {
                    playerhtml = m2.ToString();
                }
            }
            else
            {
                playerhtml = "<a href=\"https://github.com/DayZServerApp/DayZServer/releases\" target=\"_blank\" > Unavailable </a>";
            }


            List <DayZPlayer> list = new List <DayZPlayer>();

            // 1.
            // Find all matches in file.
            MatchCollection m1 = Regex.Matches(playerhtml, @"(<a.*?>.*?</a>)",
                                               RegexOptions.Singleline);

            // 2.
            // Loop over each match.
            foreach (Match m in m1)
            {
                string     value = m.Groups[1].Value;
                DayZPlayer i     = new DayZPlayer();

                // 3.
                // Get href attribute.
                Match m3 = Regex.Match(value, @"href=\""(.*?)\""",
                                       RegexOptions.Singleline);

                if (m3.Success)
                {
                    i.Href = m3.Groups[1].Value.ToString();
                }

                // 4.
                // Remove inner tags from text.
                string t = Regex.Replace(value, @"\s*<.*?>\s*", "",
                                         RegexOptions.Singleline);
                i.UserName = t;

                list.Add(i);
            }

            int    Start, End;
            string userCount;
            string strStart = "Players:";
            string strEnd   = "Rank";



            if (result.Contains("Players:") && result.Contains("Rank:"))
            {
                Start     = result.IndexOf(strStart, 0) + strStart.Length;
                End       = result.IndexOf(strEnd, Start);
                result    = result.Substring(Start, End - Start);
                userCount = Regex.Replace(result, @"<[^>]+>|&nbsp;", "").Trim();
            }
            else
            {
                userCount = "Unavailable";
            }



            Server dzServer = new Server();

            dzServer.UserCount   = userCount;
            dzServer.playersList = list;

            Servers.AddOrUpdate(IP, dzServer, (key, existingVal) =>
            {
                Console.WriteLine(" writeServerHistoryList:Servers1 " + Servers);
                // If this delegate is invoked, then the key already exists.
                try
                {
                    existingVal.UserCount   = dzServer.UserCount;
                    existingVal.playersList = dzServer.playersList;
                    return(existingVal);
                }
                catch (ArgumentException e)
                {
                    Console.WriteLine("Exception" + e);
                    existingVal.UserCount   = dzServer.UserCount;
                    existingVal.playersList = dzServer.playersList;
                    return(existingVal);
                }
            });
            List <Server> serversList = new List <Server>();

            serversList = Servers.Values.ToList() as List <Server>;
        }