Beispiel #1
0
        static void Main(string[] args)
        {
            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect += delegate(int i) {
            }
        }
 protected static void StartWebServer()
 {
     if (ws == null)
     {
         X509Certificate2 certificate = new X509Certificate2("certificate.crt", "");
         ws = new SimpleWebServer(myBaseUrl.ToString(), certificate);
         ws.addUrlAction("/my_public_keys.jwks", RespondWithJwks);
         ws.addUrlAction("/id_token_flow_callback", IdTokenFlowCallback);
         ws.addUrlAction("/code_flow_callback", CodeFlowCallback);
         ws.addUrlAction("/request.jwt", RequestUriCallback);
         ws.addUrlAction("/initiated_login", ThirdPartyInitiatedLoginCallback);
         ws.Run();
     }
 }
Beispiel #3
0
        static void Main(string[] args)
        {
            _rand = new Random(Environment.TickCount);

            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect    += WebServerOnConnect;
            _webServer.onData       += WebServerOnData;
            _webServer.onDisconnect += WebServerOnDisconnect;

            Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000);

            stateUpdateTimer.Elapsed  += StateUpdateTimerOnElapsed;
            stateUpdateTimer.AutoReset = true;
            stateUpdateTimer.Enabled   = true;

            while (!Console.KeyAvailable)
            {
                _webServer.ProcessMessageQueue();

                switch (_currentState)
                {
                case GameState.Waiting:
                {
                    if (_connectedIds.Count >= 2)
                    {
                        _currentState = GameState.Begin;
                        SendStateUpdate(_currentState);
                    }

                    break;
                }

                case GameState.Begin:
                {
                    break;
                }
                }
            }

            Console.WriteLine("Closing server");
            _webServer.Stop();
        }
Beispiel #4
0
        // First, we set up the webserver with the html/css/js files we have in the public folder of this project.
        // We used blockly from https://developers.google.com/blockly/ (amazing frameworks and super easy to use).
        // We created a few custom blocks (inspired by the ones used by the BBC micro:bit, check it out at https://www.microbit.co.uk/).
        // You can go and modify the blocks and the JavaScript translations. Check out public\index.html, public\blockly\blocks-custom.js
        // and public\blockly\javascript-custom.js.
        // Then we add handlers for the "runcode" and "stopcode" POSTs, which leverage the Chakra JavaScript engine to execute
        // the JavaScript code translated by blockly.
        // The JavaScript code uses a few helper functions from the IoTBlocklyHelper WinRT library (which is added applocal to
        // this UWP Background Application).
        // Notice that most of the blocks require the Raspberry Pi Sense Hat (https://www.raspberrypi.org/products/sense-hat/).
        // And then we start listening on port 8024 and start serving pages: Use your favorite browser to browse to your
        // Raspberry Pi IP address:8024 and you can start coding.
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            deferral = taskInstance.GetDeferral();
            var publicFolder = await localFolder.GetFolderAsync("public");

            // await StartMostRecentScript();  // problematic if JS Corrupt when stored

            var server = new SimpleWebServer();

            // include last saved script
            server.Get(
                "/",
                async(req, res) => { await SimpleWebServer.WriteStaticResponseFilter(req, res, publicFolder, IncludeLastScript); });
            server.Get(
                "/index.html",
                async(req, res) => { await SimpleWebServer.WriteStaticResponseFilter(req, res, publicFolder, IncludeLastScript); });

            server.UseStatic(publicFolder);

            server.Post("/runcode", async(req, res) =>
            {
                var code   = req.GetValue("code");
                var blocks = req.GetValue("blocks");
                if (!String.IsNullOrEmpty(code))
                {
                    // await SaveMostRecentScript(code, blocks);
                    host.RunScriptAsync(code);
                }
                await res.RedirectAsync("..");
            });

            server.Post("/stopcode", async(req, res) =>
            {
                host.HaltScript();
                await res.RedirectAsync("..");
            });

            try
            {
                server.Listen(8024);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
            }
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect += delegate(int i) {
                Console.WriteLine($"Client {i} joined, sending hello");
                byte[] buff = System.Text.Encoding.UTF8.GetBytes("Hello from server");
                _webServer.SendOne(i, "Hello from server");
            };
        }
		public void CanHandleRobotsTxt()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				List<PropertyBag> propertyBags = new List<PropertyBag>();
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
					.Do((crawler, bag) => { propertyBags.Add(bag); })
					.MaxCrawlCount(1)
					.Robots("/Content/Robots.txt")
					.Download()
					.AddLoggerStep()
					.Run();
				Assert.AreEqual(propertyBags.Count, 1);
				var allowed = (bool) propertyBags[0][RobotsPipelineStep.RobotsIsPathAllowedPropertyName].Value;
				Assert.AreEqual(false, allowed);
			}
		}
Beispiel #7
0
 public void CanHandleRobotsTxt()
 {
     using (SimpleWebServer server = new SimpleWebServer())
     {
         List <PropertyBag> propertyBags = new List <PropertyBag>();
         new CrawlerConfiguration()
         .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
         .Do((crawler, bag) => { propertyBags.Add(bag); })
         .MaxCrawlCount(1)
         .Robots("/Content/Robots.txt")
         .Download()
         .AddLoggerStep()
         .Run();
         Assert.AreEqual(propertyBags.Count, 1);
         var allowed = (bool)propertyBags[0][RobotsPipelineStep.RobotsIsPathAllowedPropertyName].Value;
         Assert.AreEqual(false, allowed);
     }
 }
Beispiel #8
0
        static void Main(string[] args)
        {
            string baseDir = GetBaseDirectory();
            FileQueryDispatcher files = new FileQueryDispatcher(Path.Combine(baseDir, @"..\..\www"), "/");
            DefaultQueryDispatcher root = new DefaultQueryDispatcher(Path.Combine(baseDir, @"..\..\www"));
            SimpleWebServer server = new SimpleWebServer(new ConsoleLogger());
            server.Dispatchers.Add(root);
            server.Dispatchers.Add(files);
            server.Dispatchers.Add(new DemoData());
            server.Dispatchers.Add(new PageNotFoundQueryDispatcher());

            server.Port = 8080;
            server.IPAddress = IPAddress.Any;
            server.Start();

            Console.ReadLine();
            server.Stop();
        }
Beispiel #9
0
        private IEnumerator Start()
        {
            var tcpConfig = new TcpConfig(true, 5000, 5000);

            server = new SimpleWebServer(5000, tcpConfig, 32000, 5000, default);
            server.Start(7776);

            server.onConnect    += (id) => { connection = true; Debug.Log($"New Client connected, id:{id}"); };
            server.onDisconnect += (id) => Debug.Log($"Client disconnected, id:{id}");
            server.onData       += OnData;
            server.onError      += (id, exception) => Debug.Log($"Error because of Client, id:{id}, Error:{exception}");

            yield return(new WaitUntil(() => connection));

            for (int i = 1; i < 200; i++)
            {
                yield return(Send(i * 1000));
            }
        }
		public void CanDownloadWith()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				List<PropertyBag> downloads = new List<PropertyBag>();
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
					.FlurlDownload()
					.MaxCrawlCount(1)
					.AddLoggerStep()
					.Do((crawler, bag) =>
					{
						downloads.Add(bag);
					})
					.Run();

				var flurlProperties = downloads[0][FlurlDownloadPipelineStep.FlurlHttpCallPropertyName].Value;
				Assert.IsNotNull(flurlProperties);
			}
		}
        public void CanDownloadWith()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                List <PropertyBag> downloads = new List <PropertyBag>();
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
                .FlurlDownload()
                .MaxCrawlCount(1)
                .AddLoggerStep()
                .Do((crawler, bag) =>
                {
                    downloads.Add(bag);
                })
                .Run();

                var flurlProperties = downloads[0][FlurlDownloadPipelineStep.FlurlHttpCallPropertyName].Value;
                Assert.IsNotNull(flurlProperties);
            }
        }
		public void Test()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				List<PropertyBag> propertyBags = new List<PropertyBag>();
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
					.Do((crawler, bag) => { propertyBags.Add(bag); })
					.MaxCrawlCount(1)
					.Download()
					.TextProcessor()
					.DetectLanguage()
					.AddLoggerStep()
					.Run();
				Assert.Greater(propertyBags.Count, 1);
				string language = propertyBags[0][GoogleLanguageDetection.LanguagePropertyName].Value as string;
				Assert.IsNotNull(language);
				Assert.AreEqual("eng", language);
			}
		}
 public void Test()
 {
     using (SimpleWebServer server = new SimpleWebServer())
     {
         List <PropertyBag> propertyBags = new List <PropertyBag>();
         new CrawlerConfiguration()
         .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
         .Do((crawler, bag) => { propertyBags.Add(bag); })
         .MaxCrawlCount(1)
         .Download()
         .TextProcessor()
         .DetectLanguage()
         .AddLoggerStep()
         .Run();
         Assert.Greater(propertyBags.Count, 1);
         string language = propertyBags[0][GoogleLanguageDetection.LanguagePropertyName].Value as string;
         Assert.IsNotNull(language);
         Assert.AreEqual("eng", language);
     }
 }
		public void CanExtractLinksFromText()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				List<PropertyBag> collectedLinks = new List<PropertyBag>();
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
					.Do((crawler, bag) =>
					{
						collectedLinks.Add(bag);
					})
					.MaxCrawlCount(1)
					.Download()
					.TextProcessor()
					.AddLoggerStep()
					.Run();

				Assert.Greater(collectedLinks.Count, 1);
			}
		}
        public void CanExtractLinksFromText()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                List <PropertyBag> collectedLinks = new List <PropertyBag>();
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
                .Do((crawler, bag) =>
                {
                    collectedLinks.Add(bag);
                })
                .MaxCrawlCount(1)
                .Download()
                .TextProcessor()
                .AddLoggerStep()
                .Run();

                Assert.Greater(collectedLinks.Count, 1);
            }
        }
        static void Main(string[] args)
        {
            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);
            Console.WriteLine("Setting up secure server");
            sslConfig = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16*1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect += WebServerOnConnect;
            _webServer.onData += WebServerOnData;
            _webServer.onDisconnect += WebServerOnDisconnect;

            while (!Console.KeyAvailable) {
                _webServer.ProcessMessageQueue();
            }

            Console.WriteLine("Closing server");
            _webServer.Stop();
        }
Beispiel #17
0
    private async Task ServerServer()
    {
        try
        {
            // create server instance
            var tcpConfig = new TcpConfig(noDelay: false, sendTimeout: 5000, receiveTimeout: 20000);
            var server    = new SimpleWebServer(5000, tcpConfig, ushort.MaxValue, 5000, new SslConfig());

            // listen for events
            server.onConnect    += (id) => Debug.Log($"New Client connected, id:{id}");
            server.onDisconnect += (id) => Debug.Log($"Client disconnected, id:{id}");
            server.onData       += (id, data) =>
            {
                Debug.Log($"Data from Client, id:{id}, {BitConverter.ToString(data.Array, data.Offset, data.Count)}");
                // pong
                server.SendOne(id, data);
            };
            server.onError += (id, exception) => Debug.Log($"Error because of Client, id:{id}, Error:{exception}");

            // start server listening on port 7777
            server.Start(7777);

            while (true)
            {
                server.ProcessMessageQueue();
                await Task.Yield();

                if (token.stop)
                {
                    break;
                }
            }

            token = null;
        }
        catch (Exception e)
        {
            Debug.LogException(e);
        }
    }
		public void CanExtractTitleFromHtml()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				PropertyBag propertyBag = null;
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
					.Download()
					.MaxCrawlCount(1)
					.HtmlProcessor()
					.AddLoggerStep()
					.Do((crawler, bag) =>
					{
						propertyBag = bag;
					})
					.Run();

				Assert.IsNotNull(propertyBag);
				Assert.IsNotNull(propertyBag.Title);
				Assert.AreEqual("NCrawler - Home", propertyBag.Title);
			}
		}
        public void ShouldExtractTextFromWord()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                string extractedText = null;
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/Georgia_opposition_NATO-Eng-F.doc")
                .Download()
                .TextExtractProcessor()
                .AddLoggerStep()
                .Where((crawler, bag) =>
                {
                    extractedText = bag.Text;
                    return(false);
                })
                .Run();

                Assert.IsNotNull(extractedText);
                var containsExpectedText = extractedText.Contains("Georgian Parliamentary Faction");
                Assert.IsTrue(containsExpectedText, "Should contain expected text");
            }
        }
		public void ShouldExtractTextFromWord()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				string extractedText = null;
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/Georgia_opposition_NATO-Eng-F.doc")
					.Download()
					.TextExtractProcessor()
					.AddLoggerStep()
					.Where((crawler, bag) =>
					{
						extractedText = bag.Text;
						return false;
					})
					.Run();

				Assert.IsNotNull(extractedText);
				var containsExpectedText = extractedText.Contains("Georgian Parliamentary Faction");
				Assert.IsTrue(containsExpectedText, "Should contain expected text");
			}
		}
		public void ShouldExtractTextFromExcel()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				string extractedText = null;
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/SampleData.xls")
					.Download()
					.TextExtractProcessor()
					.AddLoggerStep()
					.Where((crawler, bag) =>
					{
						extractedText = bag.Text;
						return false;
					})
					.Run();

				Assert.IsNotNull(extractedText);
				var containsExpectedText = extractedText.Contains("Contextures Recommends");
				Assert.IsTrue(containsExpectedText, "Should contain expected text");
			}
		}
        public void ShouldExtractTextFromExcel()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                string extractedText = null;
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/SampleData.xls")
                .Download()
                .TextExtractProcessor()
                .AddLoggerStep()
                .Where((crawler, bag) =>
                {
                    extractedText = bag.Text;
                    return(false);
                })
                .Run();

                Assert.IsNotNull(extractedText);
                var containsExpectedText = extractedText.Contains("Contextures Recommends");
                Assert.IsTrue(containsExpectedText, "Should contain expected text");
            }
        }
        public void CanExtractTitleFromText()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                PropertyBag propertyBag = null;
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
                .Download()
                .MaxCrawlCount(1)
                .TextProcessor()
                .AddLoggerStep()
                .Do((crawler, bag) =>
                {
                    propertyBag = bag;
                })
                .Run();

                Assert.IsNotNull(propertyBag);
                Assert.IsNotNull(propertyBag.Title);
                Assert.AreEqual(propertyBag.Step.Uri.ToString(), propertyBag.Title);
            }
        }
        // First, we set up the webserver with the html/css/js files we have in the public folder of this project.
        // We used blockly from https://developers.google.com/blockly/ (amazing frameworks and super easy to use).
        // We created a few custom blocks (inspired by the ones used by the BBC micro:bit, check it out at https://www.microbit.co.uk/).
        // You can go and modify the blocks and the JavaScript translations. Check out public\index.html, public\blockly\blocks-custom.js
        // and public\blockly\javascript-custom.js.
        // Then we add handlers for the "runcode" and "stopcode" POSTs, which leverage the Chakra JavaScript engine to execute
        // the JavaScript code translated by blockly.
        // The JavaScript code uses a few helper functions from the IoTBlocklyHelper WinRT library (which is added applocal to
        // this UWP Background Application).
        // Notice that most of the blocks require the Raspberry Pi Sense Hat (https://www.raspberrypi.org/products/sense-hat/).
        // And then we start listening on port 8000 and start serving pages: Use your favorite browser to browse to your
        // Raspberry Pi IP address:8000 and you can start coding.
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            deferral = taskInstance.GetDeferral();
            var publicFolder = await localFolder.GetFolderAsync("public");

            await StartMostRecentScript();

            var server = new SimpleWebServer();

            // include last saved script
            server.Get(
                "/",
                async(req, res) => { await SimpleWebServer.WriteStaticResponseFilter(req, res, publicFolder, IncludeLastScript); });
            server.Get(
                "/index.html",
                async(req, res) => { await SimpleWebServer.WriteStaticResponseFilter(req, res, publicFolder, IncludeLastScript); });

            server.UseStatic(publicFolder);

            server.Post("/runcode", async(req, res) =>
            {
                var code   = req.GetValue("code");
                var blocks = req.GetValue("blocks");
                if (!String.IsNullOrEmpty(code))
                {
                    await SaveMostRecentScript(code, blocks);
                    host.runScriptAsync(code);
                }
                await res.RedirectAsync("..");
            });

            server.Post("/stopcode", async(req, res) =>
            {
                host.haltScript();
                await res.RedirectAsync("..");
            });

            server.Listen(8000);
        }
        public void CanDownload()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                List <PropertyBag> downloads = new List <PropertyBag>();
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
                .FlurlDownload()
                .MaxCrawlCount(1)
                .AddLoggerStep()
                .Do((crawler, bag) =>
                {
                    downloads.Add(bag);
                })
                .Run();

                Assert.AreEqual(1, downloads.Count);
                Assert.IsNotNull(downloads[0].Response);
                Assert.GreaterOrEqual(downloads[0].Response.Length, new FileInfo(Path.Combine(
                                                                                     new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName ?? string.Empty,
                                                                                     "Content\\NCrawler - Home.html")).Length);
            }
        }
        public void CanExtractTextFromText()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                PropertyBag propertyBag = null;
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.txt")
                .MaxCrawlCount(1)
                .Download()
                .TextProcessor()
                .AddLoggerStep()
                .Do((crawler, bag) =>
                {
                    propertyBag = bag;
                })
                .Run();

                Assert.IsNotNull(propertyBag);
                Assert.IsNotNull(propertyBag.Text);
                var containsExpectedText = propertyBag.Text.Contains("NCrawler - Home");
                Assert.IsTrue(containsExpectedText, "Should contain expected text");
            }
        }
		public void CanExtractTextFromHtml()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				PropertyBag propertyBag = null;
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
					.MaxCrawlCount(1)
					.Download()
					.HtmlProcessor()
					.AddLoggerStep()
					.Do((crawler, bag) =>
					{
						propertyBag = bag;
					})
					.Run();

				Assert.IsNotNull(propertyBag);
				Assert.IsNotNull(propertyBag.Text);
				var containsExpectedText = propertyBag.Text.Contains("ncrawler - home");
				Assert.IsTrue(containsExpectedText, "Should contain expected text");
			}
		}
		public void CanDownload()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				List<PropertyBag> downloads = new List<PropertyBag>();
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
					.FlurlDownload()
					.MaxCrawlCount(1)
					.AddLoggerStep()
					.Do((crawler, bag) =>
					{
						downloads.Add(bag);
					})
					.Run();

				Assert.AreEqual(1, downloads.Count);
				Assert.IsNotNull(downloads[0].Response);
				Assert.GreaterOrEqual(downloads[0].Response.Length, new FileInfo(Path.Combine(
					new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName ?? string.Empty,
					"Content\\NCrawler - Home.html")).Length);
			}
		}
Beispiel #29
0
        public void CanExtractMetaDataFromHtml()
        {
            using (SimpleWebServer server = new SimpleWebServer())
            {
                PropertyBag propertyBag = null;
                new CrawlerConfiguration()
                .CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
                .Download()
                .MaxCrawlCount(1)
                .HtmlProcessor()
                .AddLoggerStep()
                .Do((crawler, bag) =>
                {
                    propertyBag = bag;
                })
                .Run();

                Assert.IsNotNull(propertyBag);
                Assert.IsNotNull(propertyBag["Meta"].Value);
                string[] metaData = (string[])propertyBag["Meta"].Value;
                var      containeMetaDataEntry = metaData.Any(x => x.Equals("twitter:title: NCrawler"));
                Assert.IsTrue(containeMetaDataEntry, "Should contain meta data");
            }
        }
		public void CanExtractMetaDataFromHtml()
		{
			using (SimpleWebServer server = new SimpleWebServer())
			{
				PropertyBag propertyBag = null;
				new CrawlerConfiguration()
					.CrawlSeed(server.BaseUrl + "/Content/NCrawler - Home.html")
					.Download()
					.MaxCrawlCount(1)
					.HtmlProcessor()
					.AddLoggerStep()
					.Do((crawler, bag) =>
					{
						propertyBag = bag;
					})
					.Run();

				Assert.IsNotNull(propertyBag);
				Assert.IsNotNull(propertyBag["Meta"].Value);
				string[] metaData = (string[]) propertyBag["Meta"].Value;
				var containeMetaDataEntry = metaData.Any(x => x.Equals("twitter:title: NCrawler"));
				Assert.IsTrue(containeMetaDataEntry, "Should contain meta data");
			}
		}
        static void Main(string[] args)
        {
            _rand = new Random(Environment.TickCount);

            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect    += WebServerOnConnect;
            _webServer.onData       += WebServerOnData;
            _webServer.onDisconnect += WebServerOnDisconnect;

            Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000);

            stateUpdateTimer.Elapsed  += StateUpdateTimerOnElapsed;
            stateUpdateTimer.AutoReset = true;
            stateUpdateTimer.Enabled   = true;

            while (!Console.KeyAvailable)
            {
                _webServer.ProcessMessageQueue();

                // GUARD, DONT DO STATE STUFF IF WE ARE WAITING
                if (_waitingOnStateTimer)
                {
                    continue;
                }
                switch (_currentState)
                {
                case GameState.Waiting:
                {
                    if (_connectedIds.Count >= 2)
                    {
                        _currentState = GameState.Begin;
                        SendStateUpdate(_currentState);
                    }

                    break;
                }

                case GameState.Begin:
                {
                    // Set timer to go to builder state
                    Timer beginTimer = new Timer(SECONDS_WAITING_IN_BEGIN * 1000);
                    beginTimer.AutoReset = false;
                    beginTimer.Start();
                    _waitingOnStateTimer = true;

                    beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        _movedObjects = new List <ushort>();
                        _currentState = GameState.Builder;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Builder:
                {
                    // Set timer to go to builder state
                    Timer buildTimer = new Timer(SECONDS_WAITING_IN_BUILD * 1000);
                    buildTimer.AutoReset = false;
                    buildTimer.Start();
                    _waitingOnStateTimer = true;

                    buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        // Reset everyones guesses
                        foreach (PlayerData playerData in _playerDatas.Values)
                        {
                            playerData.guesses.Clear();
                        }
                        _currentState = GameState.Search;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Search:
                {
                    // Set timer to go to scoring state
                    Timer searchTimer = new Timer(SECONDS_WAITING_IN_SEARCH * 1000);
                    searchTimer.AutoReset = false;
                    searchTimer.Start();
                    _waitingOnStateTimer = true;

                    searchTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        _currentState = GameState.Scoring;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Scoring:
                {
                    foreach (var playerPair in _playerDatas)
                    {
                    }
                }
                }
            }

            Console.WriteLine("Closing server");
            _webServer.Stop();
        }
Beispiel #32
0
        static void Main(string[] args)
        {
            _rand = new Random(Environment.TickCount);

            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect    += WebServerOnConnect;
            _webServer.onData       += WebServerOnData;
            _webServer.onDisconnect += WebServerOnDisconnect;

            Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000);

            stateUpdateTimer.Elapsed  += StateUpdateTimerOnElapsed;
            stateUpdateTimer.AutoReset = true;
            stateUpdateTimer.Enabled   = true;

            while (!Console.KeyAvailable)
            {
                _webServer.ProcessMessageQueue();

                // GUARD, DONT DO STATE STUFF IF WE ARE WAITING
                if (_waitingOnStateTimer)
                {
                    continue;
                }
                switch (_currentState)
                {
                case GameState.Waiting:
                {
                    if (_handshakenClientCount >= 2 && _connectedIds.Count >= 2)
                    {
                        _currentState = GameState.Begin;
                        SendStateUpdate(_currentState);
                    }

                    break;
                }

                case GameState.Begin:
                {
                    // Set timer to go to builder state
                    beginTimer           = new Timer(SECONDS_WAITING_IN_BEGIN * 1000);
                    beginTimer.AutoReset = false;
                    beginTimer.Start();
                    _waitingOnStateTimer = true;

                    beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        _movedObjects = new Dictionary <ushort, Tuple <ushort, ushort> >();
                        _currentState = GameState.Builder;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Builder:
                {
                    // Set timer to go to builder state
                    buildTimer           = new Timer(SECONDS_WAITING_IN_BUILD * 1000);
                    buildTimer.AutoReset = false;
                    buildTimer.Start();
                    _waitingOnStateTimer = true;

                    buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        // Reset everyones guesses
                        foreach (PlayerData playerData in _playerDatas.Values)
                        {
                            playerData.guesses.Clear();
                        }

                        // Make sure builder actually moved something,
                        // if he didnt, goto scoring and give everyone else a point
                        if (_movedObjects.Count > 0)
                        {
                            _currentState = GameState.Search;
                        }
                        else
                        {
                            foreach (PlayerData data in _playerDatas.Values)
                            {
                                if (data.id != _builderId)
                                {
                                    data.points += 1;
                                }
                                _playerDatas[_builderId].points -= (ushort)_handshakenClientCount;
                            }
                            _currentState = GameState.Scoring;
                        }

                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Search:
                {
                    // Set timer to go to scoring state
                    searchTimer           = new Timer(SECONDS_WAITING_IN_SEARCH * 1000);
                    searchTimer.AutoReset = false;
                    searchTimer.Start();
                    _waitingOnStateTimer = true;

                    searchTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        _currentState = GameState.Scoring;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Scoring:
                {
                    // Set timer to wait for points to come in from clients
                    scoringTimer           = new Timer(SECONDS_WAITING_IN_SCORING * 1000);
                    scoringTimer.AutoReset = false;
                    scoringTimer.Start();
                    _waitingOnStateTimer = true;

                    scoringTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        // Tell everyone everyones scores
                        _bitBuffer.Clear();
                        _bitBuffer.AddByte(7);
                        _bitBuffer.AddUShort((ushort)_playerDatas.Count);

                        foreach (PlayerData data in _playerDatas.Values)
                        {
                            _bitBuffer.AddUShort(data.id);
                            _bitBuffer.AddShort(data.points);
                        }

                        _bitBuffer.ToArray(_buffer);
                        _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 3 + 4 * _playerDatas.Count));

                        if (_handshakenClientCount >= 2 && _connectedIds.Count >= 2)
                        {
                            _currentState = GameState.Begin;
                        }
                        else
                        {
                            _currentState = GameState.Waiting;
                        }
                        SendStateUpdate(_currentState);
                    };

                    break;
                }
                }
            }

            Console.WriteLine("Closing server");
            _webServer.Stop();
        }
Beispiel #33
0
        static void Main(string[] args)
        {
            _rand = new Random(Environment.TickCount);

            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect    += WebServerOnConnect;
            _webServer.onData       += WebServerOnData;
            _webServer.onDisconnect += WebServerOnDisconnect;

            Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000);

            stateUpdateTimer.Elapsed  += StateUpdateTimerOnElapsed;
            stateUpdateTimer.AutoReset = true;
            stateUpdateTimer.Enabled   = true;

            while (!Console.KeyAvailable)
            {
                _webServer.ProcessMessageQueue();

                // GUARD, DONT DO STATE STUFF IF WE ARE WAITING
                if (_waitingOnStateTimer)
                {
                    continue;
                }
                switch (_currentState)
                {
                case GameState.Waiting:
                {
                    if (_connectedIds.Count >= 2)
                    {
                        _currentState = GameState.Begin;
                        SendStateUpdate(_currentState);
                    }

                    break;
                }

                case GameState.Begin:
                {
                    // Set timer to go to builder state
                    beginTimer           = new Timer(SECONDS_WAITING_IN_BEGIN * 1000);
                    beginTimer.AutoReset = false;
                    beginTimer.Start();
                    _waitingOnStateTimer = true;

                    beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        _movedObjects = new List <ushort>();
                        _currentState = GameState.Builder;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Builder:
                {
                    // Set timer to go to builder state
                    buildTimer           = new Timer(SECONDS_WAITING_IN_BUILD * 1000);
                    buildTimer.AutoReset = false;
                    buildTimer.Start();
                    _waitingOnStateTimer = true;

                    buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        // Reset everyones guesses
                        foreach (PlayerData playerData in _playerDatas.Values)
                        {
                            playerData.guesses.Clear();
                        }
                        _currentState = GameState.Search;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Search:
                {
                    // Set timer to go to scoring state
                    searchTimer           = new Timer(SECONDS_WAITING_IN_SEARCH * 1000);
                    searchTimer.AutoReset = false;
                    searchTimer.Start();
                    _waitingOnStateTimer = true;

                    searchTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _waitingOnStateTimer = false;

                        _currentState = GameState.Scoring;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Scoring:
                {
                    short builderPoints = 0;

                    _bitBuffer.Clear();
                    _bitBuffer.AddByte(7);
                    _bitBuffer.AddUShort((ushort)_playerDatas.Count);


                    foreach (var playerData in _playerDatas.Values)
                    {
                        // GUARD, DON'T SCORE THE BUILDER THIS WAY
                        if (playerData.id == _builderId)
                        {
                            continue;
                        }

                        // Free points for objects builder couldnt move
                        // A point for a correct guess, minus point for a wrong guess
                        int numCorrect = _movedObjects.Distinct().Intersect(playerData.guesses).Count();
                        int newPoints  = (numCorrect * 2) - playerData.guesses.Count + (NUMBER_OF_MOVEABLE_OBJECTS - _movedObjects.Count);
                        playerData.points += (short)newPoints;

                        // Builder gets a point for each player who couldnt find any differences
                        if (numCorrect == 0)
                        {
                            builderPoints += 1;
                        }

                        _bitBuffer.AddUShort(playerData.id);
                        _bitBuffer.AddShort(playerData.points);
                    }

                    _playerDatas[_builderId].points += builderPoints;
                    _bitBuffer.AddUShort((ushort)_builderId);
                    _bitBuffer.AddShort(_playerDatas[_builderId].points);

                    _bitBuffer.ToArray(_buffer);
                    _webServer.SendAll(_connectedIds, new ArraySegment <byte>(_buffer, 0, 3 + 2 * _playerDatas.Count));

                    if (_connectedIds.Count >= 2)
                    {
                        _currentState = GameState.Begin;
                    }
                    else
                    {
                        _currentState = GameState.Waiting;
                    }
                    SendStateUpdate(_currentState);

                    break;
                }
                }
            }

            Console.WriteLine("Closing server");
            _webServer.Stop();
        }
 static SilverlightCodedUITestBase()
 {
     SimpleWebServer.Initialise();
 }
        static void Main(string[] args)
        {
            _rand = new Random(Environment.TickCount);

            SslConfig sslConfig;
            TcpConfig tcpConfig = new TcpConfig(true, 5000, 20000);

            Console.WriteLine("Setting up secure server");
            sslConfig  = new SslConfig(true, "cert.pfx", "", SslProtocols.Tls12);
            _webServer = new SimpleWebServer(10000, tcpConfig, 16 * 1024, 3000, sslConfig);
            _webServer.Start(Constants.GAME_PORT);
            Console.WriteLine("Server started");

            _webServer.onConnect    += WebServerOnConnect;
            _webServer.onData       += WebServerOnData;
            _webServer.onDisconnect += WebServerOnDisconnect;

            Timer stateUpdateTimer = new Timer(1f / Constants.SERVER_TICKRATE * 1000);

            stateUpdateTimer.Elapsed  += StateUpdateTimerOnElapsed;
            stateUpdateTimer.AutoReset = true;
            stateUpdateTimer.Enabled   = true;

            while (!Console.KeyAvailable)
            {
                _webServer.ProcessMessageQueue();


                if (_waitingOnStateTimer)
                {
                    continue;
                }
                switch (_currentState)
                {
                case GameState.Waiting:
                {
                    if (_connectedIds.Count >= 2)
                    {
                        _currentState = GameState.Begin;
                        SendStateUpdate(_currentState);
                    }

                    break;
                }

                case GameState.Begin:
                {
                    // Set timer to go to builder state
                    Timer beginTimer = new Timer(SECONDS_WAITING_IN_BEGIN * 1000);
                    beginTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _currentState = GameState.Builder;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }

                case GameState.Builder:
                {
                    // Set timer to go to builder state
                    Timer buildTimer = new Timer(SECONDS_WAITING_IN_BUILD * 1000);
                    buildTimer.Elapsed += delegate(Object source, ElapsedEventArgs e) {
                        _currentState = GameState.Search;
                        SendStateUpdate(_currentState);
                    };
                    break;
                }
                }
            }

            Console.WriteLine("Closing server");
            _webServer.Stop();
        }
Beispiel #36
0
        static void Main(string[] args)
        {
            logger.Info("Starting!");

            TheSockets      sockets = new TheSockets();
            SimpleWebServer nws     = new SimpleWebServer(4567);

            nws.Start();

            InfluxConnection c = new InfluxConnection();

            c.URL = "http://localhost:8086/";

            // HttpInfluxDB db = new HttpInfluxDB(c);
            // db.CreateDatabase("influxdays");
            // sockets.influx = new HttpInfluxWriter(db, "influxdays", 50000);


            foreach (var d in HidSharp.DeviceList.Local.GetHidDevices())
            {
                logger.Info("DEVICE: " + d.DevicePath);
                try
                {
                    logger.Info(" > " + d.GetFriendlyName());
                }
                catch { }
            }


            DeviceWatcher watcherSide  = null;
            DeviceWatcher watcherWheel = null;

            HidSharp.HidDevice dev = DeviceWatcher.find("Saitek Side Panel Control Deck");
            if (dev != null)
            {
                watcherSide = new DeviceWatcher("panel_", dev, sockets);
            }

            dev = DeviceWatcher.find("Saitek Heavy Eqpt. Wheel & Pedal");
            if (dev != null)
            {
                watcherWheel = new DeviceWatcher("wheel_", dev, sockets);
            }

            WebSocketServer server = new WebSocketServer("ws://0.0.0.0:8181");

            server.RestartAfterListenError = true;
            server.Start(socket =>
            {
                socket.OnOpen = () => {
                    sockets.open.Add(socket);
                    logger.Info("WebSocket Open! " + sockets.open.Count);

                    if (watcherSide != null)
                    {
                        watcherSide.broadcast();
                    }
                    if (watcherWheel != null)
                    {
                        watcherWheel.broadcast();
                    }
                };
                socket.OnClose   = () => { sockets.open.Remove(socket); logger.Info("WebSocket Remove! " + sockets.open.Count); };
                socket.OnMessage = message => logger.Info("WebSocket: " + message);
            });


            while (true)
            {
                var x = Console.ReadLine();
                Console.WriteLine("ECHO: " + x);
            }
        }
Beispiel #37
0
 public static void BeforeScenario()
 {
     webServer       = new SimpleWebServer(Configuration.ServerPort);
     Browser.Current = new FirefoxDriver();
 }
            public static void start(int port)
            {
                do
                {
                    var tcpClient = SimpleWebServer.wait(port);

                    Task.Factory.StartNew(
                        () => {
                        var networkStream   = tcpClient.GetStream();
                        var requestBuff     = new byte[4096];
                        var requestResource = "";

                        try {
                            networkStream.Read(requestBuff, 0, 4096);
                        } catch { return; }


                        try {
                            var requestString = System.Text.Encoding.UTF8.GetString(requestBuff);
                            var requestLines  = requestString.Replace("\r", "").Split((char)10);
                            var requestLine   = (String)requestLines.First();
                            var requestParams = requestLine.Split(" "[0]);

                            requestResource = requestParams[1];
                        } catch { return; }

                        var existing = resources.SingleOrDefault(x => x.resource == requestResource);

                        if (existing == null)
                        {
                            Task.Factory.StartNew(() => {
                                var responseBuffer = System.Text.Encoding.UTF8.GetBytes("HTTP/1.0 404 Not Found\r\n\r\n");
                                networkStream.Write(responseBuffer, 0, responseBuffer.Length);
                                tcpClient.Close();
                                return;
                            });
                        }
                        else
                        {
                            Task.Factory.StartNew(() => {
                                var responseBytes = new List <byte>();
                                responseBytes.AddRange(System.Text.Encoding.UTF8.GetBytes("HTTP/1.0 200 OK\r\n\r\n").ToArray());


                                var responseObject = existing.handler.Invoke(requestBuff);

                                byte[] contentBuffer;

                                if (responseObject.GetType() == typeof(String))
                                {
                                    contentBuffer = System.Text.Encoding.UTF8.GetBytes((String)responseObject);
                                }
                                else
                                {
                                    contentBuffer = (Byte[])responseObject;
                                }

                                responseBytes.AddRange(contentBuffer);
                                var responseBuffer = responseBytes.ToArray();


                                networkStream.Write(responseBuffer, 0, responseBuffer.Length);
                                tcpClient.Close();
                                return;
                            });
                        }
                    });
                } while (true);
            }