public static void StartServer() { string logfilepath, xmlfilepath, logfolder; using (XmlReader reader = new XmlTextReader("Server_config.xml")) { reader.MoveToContent(); port = Int32.Parse(reader.GetAttribute("port")); //read log settings logfolder = Environment.ExpandEnvironmentVariables(reader.GetAttribute("logfolder")); logfilepath = Path.Combine(logfolder, reader.GetAttribute("logfile")); //log file path xmlfilepath = Path.Combine(logfolder, reader.GetAttribute("xml_logfile")); //xml log file path log4net.GlobalContext.Properties["LogFileName"] = logfilepath; log4net.GlobalContext.Properties["XMLFileName"] = xmlfilepath; certfile = reader.GetAttribute("cert"); } serverCertificate = new X509Certificate2(certfile, ServerConfiguration.DEFAULT_PASSCODE, X509KeyStorageFlags.MachineKeySet); MsgUtil.StartLogger(); log.Info("port = " + port); log.InfoFormat("logfile: {0}", logfilepath); log.InfoFormat("xmlfile: {0}", xmlfilepath); SslStream sslStream = null; serverSocket = new TcpListener(IPAddress.Any, port); TcpClient clientSocket = default(TcpClient); int counter = 0; WindowsScraper.WindowsScraper scraper = null; #if !DEBUG Random rnd = new Random(); string passcode = rnd.Next(1, 999999).ToString(); #else string passcode = ServerConfiguration.DEFAULT_PASSCODE; #endif serverSocket.Start(); log.Info("Sinter Scrapper Started"); log.InfoFormat("Passcode = {0}", passcode); Console.WriteLine("\nLet the Sinter proxy client know this passcode : {0}", passcode); try { while (true) { counter += 1; clientSocket = serverSocket.AcceptTcpClient(); sslStream = ProcessClient(clientSocket); if (sslStream == null) { log.Info("Client No:" + counter + " rejected!"); clientSocket.Close(); } else { log.Info("Client No:" + counter + " connected!"); if (scraper == null) { scraper = new WindowsScraper.WindowsScraper(passcode); } else { scraper.execute_stop_scraping(); //restart scraper } ClientHandler client = new ClientHandler(scraper, clientSocket, "" + counter, sslStream); clients.Add(client); } } } catch (SocketException e) { log.Error("SocketException: {0}", e); } catch (ArgumentException e) { log.Error("ArgumentException: {0}", e); } }