Exemplo n.º 1
0
        static void Main()
        {
            // Set the window title to something a bit more interesting.
            if (!Console.IsOutputRedirected)
            {
                Console.Title = "LogFeed V0.1";
            }

            // Check the credentials are provided in the application's configuration file.
            if (ConfigurationManager.AppSettings["Username"] == null || ConfigurationManager.AppSettings["Password"] == null || ConfigurationManager.AppSettings["Host"] == null)
            {
                Console.WriteLine("Program cannot start, some credentials were missing in the program's configuration file.");

                // Exit the application.
                Environment.Exit(1610);
            }

            // The WebClient allows us to get a valid SessionID to then use with the StatsConnection.
            using (WebClient webClient = new WebClient("https://" + ConfigurationManager.AppSettings["Host"] + "/"))
            {
                // This method will be invoked each time the timer has elapsed.
                sessionHeartbeatTimer.Elapsed += (s, a) => webClient.Heartbeat();

                // Ignore TLS certificate errors if there is a ".crt" file present that matches this host.
                webClient.AllowLocalCertificates();

                // Login to the router.
                webClient.Login(ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"]);

                // Share a valid SessionID with a new StatsConnection object.
                statsConnection = new StatsConnection(webClient.SessionID);

                // Ignore TLS certificate errors if there is a ".crt" file present that matches this host.
                statsConnection.AllowLocalCertificates();

                // Connect to the router.
                statsConnection.ConnectAsync(new Uri("wss://" + ConfigurationManager.AppSettings["Host"] + "/ws/stats"));

                // Setup an event handler for when data is received.
                statsConnection.DataReceived += Connection_DataReceived;

                // Setup an event handler for when the connection state changes.
                statsConnection.ConnectionStatusChanged += Connection_ConnectionStatusChanged;

                // We want the user (and the program itself) to be able to choose to exit.
                Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs eventArgs)
                {
                    // Mark as handled by us, as we will want to clean up.
                    eventArgs.Cancel = true;

                    // Signal to the program that the user wishes to quit.
                    WantToQuit.Set();
                };

                // Wait for something (user requested to quit, program finished..) to signal we should resume.
                WantToQuit.WaitOne();
            }
        }
Exemplo n.º 2
0
        /// <summary>Method which dynamically adds some series of data to the chart and connects to the EdgeOS device once the form is ready.</summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">THe <see cref="EventArgs"/> instance containing the event data.</param>
        private void FormBandwidthChart_Load(object sender, EventArgs e)
        {
            // Check the credentials are provided in the application's configuration file.
            if (ConfigurationManager.AppSettings["Username"] == null || ConfigurationManager.AppSettings["Password"] == null || ConfigurationManager.AppSettings["Host"] == null)
            {
                MessageBox.Show("Program cannot start, some credentials were missing in the program's configuration file.", "Missing Credentials", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }

            // We want to control the ordering of some of the series so we can control the colours.
            for (int count = 0; count < NumberOfEthInterfaces; count++)
            {
                bandwidthChart.Series.Add(new Series("eth" + count + "Rx")
                {
                    ChartArea = "ChartAreaRx", ChartType = SeriesChartType.StackedColumn, Color = paletteColors[count]
                });
                bandwidthChart.Series.Add(new Series("eth" + count + "Tx")
                {
                    ChartArea = "ChartAreaTx", ChartType = SeriesChartType.StackedColumn, Color = paletteColors[count]
                });
            }

            // This method will be invoked each time the timer has elapsed.
            sessionHeartbeatTimer.Elapsed += (s, a) => webClient.Heartbeat();

            // The WebClient allows us to get a valid SessionID to then use with the StatsConnection.
            webClient = new WebClient("https://" + ConfigurationManager.AppSettings["Host"] + "/");

            // Ignore TLS certificate errors if there is a ".crt" file present that matches this host.
            webClient.AllowLocalCertificates();

            // Login to the Router.
            webClient.Login(ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"]);

            // Share a valid SessionID with a new StatsConnection object.
            statsConnection = new StatsConnection(webClient.SessionID);

            // Ignore TLS certificate errors if there is a ".crt" file present that matches this host.
            statsConnection.AllowLocalCertificates();

            // Connect to the router.
            statsConnection.ConnectAsync(new Uri("wss://" + ConfigurationManager.AppSettings["Host"] + "/ws/stats"));

            // Setup an event handler for when data is received.
            statsConnection.DataReceived += Connection_DataReceived;

            // Setup an event handler for when the connection state changes.
            statsConnection.ConnectionStatusChanged += Connection_ConnectionStatusChanged;
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            // Set the window title to something a bit more interesting.
            if (!Console.IsOutputRedirected)
            {
                Console.Title = "LogFeed V0.1";
            }

            // The WebClient allows us to get a valid SessionID to then use with the StatsConnection.
            using (WebClient webClient = new WebClient(ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"], "https://" + ConfigurationManager.AppSettings["Host"] + "/"))
            {
                // Login to the router.
                webClient.Login();

                // Share a valid SessionID with the StatsConnection object.
                statsConnection.SessionID = webClient.SessionID;

                // Ignore TLS certificate errors if there is a ".crt" file present that matches this host.
                statsConnection.AllowLocalCertificates();

                // Connect to the router.
                statsConnection.ConnectAsync(new Uri("wss://" + ConfigurationManager.AppSettings["Host"] + "/ws/stats"));

                // Setup an event handler for when data is received.
                statsConnection.DataReceived += Connection_DataReceived;

                // Setup an event handler for when the connection state changes.
                statsConnection.ConnectionStatusChanged += Connection_ConnectionStatusChanged;
            }

            // We want the user (and the program itself) to be able to choose to exit.
            Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs eventArgs)
            {
                // Mark as handled by us, as we will want to clean up.
                eventArgs.Cancel = true;

                // Signal to the program that the user wishes to quit.
                WantToQuit.Set();
            };

            // Wait for something (user requested to quit, program finished..) to signal we should resume.
            WantToQuit.WaitOne();
        }