Esempio n. 1
0
 private void Packeteer_OnMessageReceived(Packeteer sender, NetProxy.Hub.Common.Peer peer, NetProxy.Hub.Common.Packet packet)
 {
     if (packet.Label == Constants.CommandLables.GuiRequestRoute)
     {
         this.Invoke(_populateRouteInformation, JsonConvert.DeserializeObject <Route>(packet.Payload));
     }
 }
Esempio n. 2
0
        private void Packeteer_OnMessageReceived(Packeteer sender, NetProxy.Hub.Common.Peer peer, NetProxy.Hub.Common.Packet packet)
        {
            Console.WriteLine("{0}{1}", packet.Label, packet.Payload);

            if (packet.Label == Constants.CommandLables.GuiRequestRouteList)
            {
                this.Invoke(_populateRouteList, JsonConvert.DeserializeObject <List <RouteGridItem> >(packet.Payload));
            }
            else if (packet.Label == Constants.CommandLables.GuiSendMessage)
            {
                this.Invoke(_sendMessage, packet.Payload);
            }
            if (packet.Label == Constants.CommandLables.GuiRequestRouteStatsList)
            {
                this.Invoke(_populateRouteListStats, JsonConvert.DeserializeObject <List <RouteGridStats> >(packet.Payload));
            }
        }
Esempio n. 3
0
 private void Packeteer_OnMessageReceived(Packeteer sender, NetProxy.Hub.Common.Peer peer, NetProxy.Hub.Common.Packet packet)
 {
     if (packet.Label == Constants.CommandLables.GuiRequestUserList)
     {
         var collection = JsonConvert.DeserializeObject <Users>(packet.Payload);
         this.Invoke(_populateGrid, new object[] { collection });
     }
 }
Esempio n. 4
0
        private void Packeteer_OnMessageReceived(Packeteer sender, NetProxy.Hub.Common.Peer peer, NetProxy.Hub.Common.Packet packet)
        {
            //Console.WriteLine("{0}:{1}", packet.Label, packet.Payload);

            if (_loggedInPeers.Contains(peer.Id) == false)
            {
                if (packet.Label == Constants.CommandLables.GuiRequestLogin)
                {
                    try
                    {
                        lock (_config)
                        {
                            var userLogin = JsonConvert.DeserializeObject <UserLogin>(packet.Payload);

                            var singleUser = (from o in _config.Users.List
                                              where o.UserName.ToLower() == userLogin.UserName.ToLower() &&
                                              o.PasswordHash.ToLower() == userLogin.PasswordHash.ToLower()
                                              select o).FirstOrDefault();

                            if (singleUser != null)
                            {
                                _loggedInPeers.Add(peer.Id);
                                Console.WriteLine("Logged in session: {0}, User: {1} (Logged in users {2}).", peer.Id, userLogin.UserName.ToLower(), _loggedInPeers.Count());
                            }
                            else
                            {
                                Console.WriteLine("Failed Login session: {0}, User: {1} (Logged in users {2}).", peer.Id, userLogin.UserName.ToLower(), _loggedInPeers.Count());
                            }

                            _packeteer.SendTo(peer.Id, packet.Label, JsonConvert.SerializeObject(new GenericBooleanResult()
                            {
                                Value = singleUser != null
                            }));
                        }
                    }
                    catch (Exception ex)
                    {
                        Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                        {
                            Severity   = EventLogging.Severity.Error,
                            CustomText = "An error occured while logging in.",
                            Exception  = ex
                        });

                        _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                    }
                }

                return; //If the peer is not logged in, don't go any further.
            }

            if (packet.Label == Constants.CommandLables.GuiRequestRouteList)
            {
                try
                {
                    List <RouteGridItem> routes = new List <RouteGridItem>();

                    lock (_config)
                    {
                        foreach (var router in _routers.List)
                        {
                            RouteGridItem augmentedRoute = new RouteGridItem()
                            {
                                Id                   = router.Route.Id,
                                Name                 = router.Route.Name,
                                TrafficType          = router.Route.TrafficType,
                                RouterType           = router.Route.TrafficType.ToString() + " / " + router.Route.BindingProtocal.ToString(),
                                BindingProtocal      = router.Route.BindingProtocal,
                                Description          = router.Route.Description,
                                IsRunning            = router.IsRunning,
                                ListenPort           = router.Route.ListenPort,
                                ListenOnAllAddresses = router.Route.ListenOnAllAddresses,
                                Bindings             = router.Route.Bindings
                            };

                            routes.Add(augmentedRoute);
                        }
                    }

                    _packeteer.SendTo(peer.Id, packet.Label, JsonConvert.SerializeObject(routes));
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to get route list.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiRequestRouteStatsList)
            {
                try
                {
                    List <RouteGridStats> stats = new List <RouteGridStats>();

                    lock (_config)
                    {
                        foreach (var router in _routers.List)
                        {
                            RouteGridStats augmentedRoute = new RouteGridStats()
                            {
                                Id                 = router.Route.Id,
                                IsRunning          = router.IsRunning,
                                BytesReceived      = router.Stats.BytesReceived,
                                BytesSent          = router.Stats.BytesSent,
                                TotalConnections   = router.Stats.TotalConnections,
                                CurrentConnections = router.CurrentConnectionCount
                            };
                            stats.Add(augmentedRoute);
                        }
                    }

                    _packeteer.SendTo(peer.Id, packet.Label, JsonConvert.SerializeObject(stats));
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to get route stats list.",
                        Exception  = ex
                    });
                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiRequestRoute)
            {
                try
                {
                    lock (_config)
                    {
                        Guid   routerId = Guid.Parse(packet.Payload);
                        Router router   = _routers[routerId];
                        if (router != null)
                        {
                            string value = JsonConvert.SerializeObject(router.Route);
                            _packeteer.SendTo(peer.Id, packet.Label, value);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to get route.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiRequestUserList)
            {
                try
                {
                    lock (_config)
                    {
                        string value = JsonConvert.SerializeObject(_config.Users);
                        _packeteer.SendTo(peer.Id, packet.Label, value);
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to get user list.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiPersistUserList)
            {
                try
                {
                    var value = JsonConvert.DeserializeObject <Users>(packet.Payload);

                    lock (_config)
                    {
                        _config.Users.List.Clear();

                        foreach (var user in value.List)
                        {
                            _config.Users.Add(user);
                        }
                        SaveConfiguration();
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to save user list.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiPersistUpsertRoute)
            {
                try
                {
                    var value = JsonConvert.DeserializeObject <Route>(packet.Payload);

                    lock (_config)
                    {
                        var existingRoute = (from o in _routers.List
                                             where o.Route.Id == value.Id
                                             select o).FirstOrDefault();

                        if (existingRoute != null)
                        {
                            existingRoute.Stop();
                            _routers.List.Remove(existingRoute);
                        }

                        var newRouter = new Router(value);

                        _routers.Add(newRouter);

                        SaveConfiguration();

                        if (newRouter.Route.AutoStart)
                        {
                            newRouter.Start();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to upsert route.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiPersistDeleteRoute)
            {
                try
                {
                    Guid routeId = Guid.Parse(packet.Payload);

                    lock (_config)
                    {
                        var existingRoute = (from o in _routers.List
                                             where o.Route.Id == routeId
                                             select o).FirstOrDefault();

                        if (existingRoute != null)
                        {
                            existingRoute.Stop();
                            _routers.List.Remove(existingRoute);
                        }
                        SaveConfiguration();
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to get delete route.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "The operation failed: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiPersistStopRoute)
            {
                try
                {
                    Guid routeId = Guid.Parse(packet.Payload);

                    lock (_config)
                    {
                        var existingRoute = (from o in _routers.List
                                             where o.Route.Id == routeId
                                             select o).FirstOrDefault();

                        if (existingRoute != null)
                        {
                            existingRoute.Stop();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to get stop route.",
                        Exception  = ex
                    });

                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "Failed to stop route: " + ex.Message);
                }
            }
            else if (packet.Label == Constants.CommandLables.GuiPersistStartRoute)
            {
                try
                {
                    Guid routeId = Guid.Parse(packet.Payload);

                    lock (_config)
                    {
                        var existingRoute = (from o in _routers.List
                                             where o.Route.Id == routeId
                                             select o).FirstOrDefault();

                        if (existingRoute != null)
                        {
                            if (existingRoute.Start() == false)
                            {
                                _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "Failed to start route.");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Singletons.EventLog.WriteEvent(new EventLogging.EventPayload
                    {
                        Severity   = EventLogging.Severity.Error,
                        CustomText = "Failed to start route.",
                        Exception  = ex
                    });
                    _packeteer.SendTo(peer.Id, Constants.CommandLables.GuiSendMessage, "Failed to start route: " + ex.Message);
                }
            }
        }