Ejemplo n.º 1
0
 internal static IEnumerable<string[]> Fetch(string uri)
 {
     string[] res;
     using(var x = new StreamReader(WebRequest.Create(uri).GetResponse().GetResponseStream()))
         res = x.EnumerateLines().ToArray();
     var s = new List<string>();
     foreach(var x in res)
     {
         if(x.Equals("----") || x.Equals(res.Last()))
         {
             yield return s.ToArray();
             s.Clear();
         }
         else
             s.Add(x);
     }
 }
        /// <summary>
        /// NOTE: Relies on the results from CombineMCPComicsData
        /// </summary>
        /// <param name="pathDataDir"></param>
        private static void AssembleMCPCharacterCharacters(string pathDataDir)
        {
            Console.WriteLine("Starting character-characters data assembling . . .");

            int countProcessedCharacter = 0;
            int totalNumCharacters = FileManager.GetNumLinesInCSV(FileManager.GetPathResultCharComics(pathDataDir));

            using (StreamWriter writer = new StreamWriter(FileManager.GetPathResultCharChars(pathDataDir), false))
            {
                string pathCharComics = FileManager.GetPathResultCharComics(pathDataDir);
                FileStream outerFileStream = new FileStream(pathCharComics, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
                using (StreamReader outerReader = new StreamReader(outerFileStream))
                {
                    while (!outerReader.EndOfStream)
                    {
                        string outerInput = outerReader.ReadLine();

                        if (!outerReader.Equals(String.Empty))
                        {
                            Console.WriteLine(String.Format("Processing character #{0} of {1}", countProcessedCharacter, totalNumCharacters));
                            ++countProcessedCharacter;

                            string[] testCharData = outerInput.Split(',');
                            string testCharId = testCharData[0];
                            HashSet<string> testCharComics = new HashSet<string>();
                            for (int i = 1; i < testCharData.Length; ++i)
                            {
                                testCharComics.Add(testCharData[i]);
                            }

                            writer.Write(testCharId);

                            // Check overlapping with all characters
                            FileStream innerFileStream = new FileStream(pathCharComics, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
                            using (StreamReader innerReader = new StreamReader(innerFileStream))
                            {
                                while (!innerReader.EndOfStream)
                                {
                                    string innerInput = innerReader.ReadLine();

                                    if (!innerInput.Equals(String.Empty))
                                    {
                                        string[] nextCharData = innerInput.Split(',');
                                        string nextCharId = nextCharData[0];

                                        if (!nextCharId.Equals(testCharId))
                                        {
                                            HashSet<string> nextCharComics = new HashSet<string>();
                                            for (int i = 1; i < nextCharData.Length; ++i)
                                            {
                                                nextCharComics.Add(nextCharData[i]);
                                            }

                                            if (testCharComics.Overlaps(nextCharComics))
                                            {
                                                writer.Write(String.Format(",{0}", nextCharId));
                                            }
                                        }
                                    }
                                }
                            }

                            writer.WriteLine();
                        }
                    }
                }
            }

            Console.WriteLine("Finished character-characters data assembling.");
        }
Ejemplo n.º 3
0
        private void report_Click(object sender, EventArgs e)
        {
            if (agree.Checked && reason.Text != "")
            {
                WebRequest.DefaultWebProxy = gui.proxy;
                HtmlWeb htmlWeb = new HtmlWeb();
                htmlWeb.UserAgent = "DaRT 0.6";
                HtmlAgilityPack.HtmlDocument doc = htmlWeb.Load("http://www.gametracker.com/server_info/" + reporter + ":" + port + "/server_variables/");

                HtmlNode rootNode = doc.DocumentNode;
                HtmlNodeCollection table = rootNode.SelectNodes("//table[@class='table_lst table_lst_gse']//tr//td[@class='c02']");

                String servername = null;
                String signature = null;

                if (table != null)
                {
                    foreach (HtmlNode node in table)
                    {
                        if (node.InnerHtml.Contains("hostname"))
                        {
                            servername = node.InnerText.Trim();
                        }
                        else if (node.InnerHtml.Contains("signatures"))
                        {
                            signature = node.InnerText.Trim();
                        }
                    }
                }

                if (servername == null)
                {
                    servername = "N/A";
                }
                if (signature == null)
                {
                    signature = "N/A";
                }
                
                String data = String.Format("key={0}&reporter={1}&port={2}&ip={3}&guid={4}&name={5}&reason={6}&url={7}&servername={8}&signature={9}", "d2kso2laoxp2ld8fmy4qk2js8rl5kf7r", reporter, port, ip, guid, name, reason.Text, "", servername, signature);
                
                ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(certCheck);
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://forum.swisscraft.eu/DaRT report.php");
                request.Proxy = gui.proxy;
                request.KeepAlive = false;
                request.ProtocolVersion = HttpVersion.Version10;
                request.Method = "POST";
                request.UserAgent = "DaRT " + gui.version;

                byte[] postBytes = Encoding.ASCII.GetBytes(data);

                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = postBytes.Length;
                Stream requestStream = request.GetRequestStream();

                requestStream.Write(postBytes, 0, postBytes.Length);
                requestStream.Close();

                HttpWebResponse responseStream = (HttpWebResponse)request.GetResponse();
                String response = new StreamReader(responseStream.GetResponseStream()).ReadToEnd();
                responseStream.Close();

                if (response.Equals("OK"))
                {
                    gui.Invoke((MethodInvoker)delegate
                    {
                        gui.Log("Player has been reported.", LogType.Console, false);
                    });
                }
                else if (response.Equals("Already reported"))
                {
                    gui.Invoke((MethodInvoker)delegate
                    {
                        gui.Log("You can not report a player two times.", LogType.Console, false);
                    });
                }
                else if (response.Equals("Blacklisted"))
                {
                    gui.Invoke((MethodInvoker)delegate
                    {
                        gui.Log("It appears you are blacklisted, you can not report players.", LogType.Console, false);
                    });
                }
                else if (response.Equals("No valid server"))
                {
                    gui.Invoke((MethodInvoker)delegate
                    {
                        gui.Log("It appears that your server is not a valid, whitelisted DayZ server or is not listed on GameTracker.", LogType.Console, false);
                        gui.Log("Please register your server at GameTracker in order to use this feature. http://www.gametracker.com/server_info/" + reporter + ":" + port + "/", LogType.Console, false);
                    });
                }
                else
                {
                    gui.Invoke((MethodInvoker)delegate
                    {
                        gui.Log("An error occurred. Please report this to me:", LogType.Console, false);
                        gui.Log(response, LogType.Console, false);
                    });
                }
                this.Close();
            }
        }