Exemplo n.º 1
0
        public async Task <IActionResult> Index()
        {
            var settings = await _settingsRepository.GetSettings();

            var neighbours = new List <EthernetNeighbor>();
            var viewModel  = new IndexViewModel();

            try
            {
                _lldpSercives.ActivateLLDPAgent();
                neighbours = _lldpSercives.GetNeighbours();
            }
            catch (Exception e)
            {
                viewModel.Error = e.Message;
            }

            viewModel.Interfaces = _ethernetServices
                                   .GetEthernetInterfaces()
                                   .Select(@interface => new InterfaceViewModel
            {
                AllowTagging    = settings.AllowTagging,
                IsActive        = @interface.Status == OperationalStatus.Up,
                Status          = @interface.Status,
                IsHostInterface = @interface.IsHostInterface,
                Name            = @interface.Name,
                Tagged          = @interface.Tagged,
                Type            = @interface.Type,
                VirtualLANs     = @interface.VirtualLANs,
                Hidden          = settings.HiddenInterfaces?.Contains(@interface.Name) ?? false,
                Neighbor        = neighbours.FirstOrDefault(x => x.EthernetInterfaceName == @interface.Name)
            }).ToList();

            return(View(viewModel));
        }
Exemplo n.º 2
0
        static void AnalyseFrame(List <RawCapture> frames, string interface_name, EthernetServices _ethernetservices)
        {
            //await Task.Run(() => {

            List <EthernetInterface> GVRP_ON_Interfaces = new List <EthernetInterface>();

            foreach (EthernetInterface nic in _ethernetservices.GetEthernetInterfaces().Where(x => x.GVRP_Enabled == true))
            {
                GVRP_ON_Interfaces.Add(nic);
            }

            List <GVRP_data> gvrp_events = new List <GVRP_data>();

            foreach (RawCapture frame in frames)
            {
                string   tmpFrame  = BitConverter.ToString(frame.Data);
                string[] frameArry = tmpFrame.Split('-');
                int      i         = 20;
                while (frameArry[i] != "00" && frameArry[i + 1] != "00")    // while gvrp data
                {
                    gvrp_events.Add(new GVRP_data());
                    gvrp_events.Last().event_id = int.Parse(frameArry[i + 1], System.Globalization.NumberStyles.HexNumber);
                    gvrp_events.Last().vlan_ID  = int.Parse(frameArry[i + 2] + frameArry[i + 3], System.Globalization.NumberStyles.HexNumber);
                    i = i + 4;
                }
            }
            List <int> GVRPadd    = new List <int>();
            List <int> GVRPaddTmp = new List <int>();
            List <int> GVRPrm     = new List <int>();

            foreach (GVRP_data d in gvrp_events)
            {
                if (d.event_id == 3)
                {
                    GVRPrm.Add(d.vlan_ID);
                }
                if (d.event_id == 2)
                {
                    GVRPadd.Add(d.vlan_ID);
                }
            }
            GVRPadd = GVRPadd.Distinct().ToList();
            GVRPrm  = GVRPrm.Distinct().ToList();


            //GVRPaddTmp = GVRPadd.Except(GVRPrm).ToList();
            GVRPrm = GVRPrm.Except(GVRPadd).ToList();

            List <GVRP_data> gvrp_eventsToSet = new List <GVRP_data>();

            foreach (int i in GVRPadd)
            {
                GVRP_data tmp = new GVRP_data();
                tmp.event_id = 2;
                tmp.vlan_ID  = i;
                gvrp_eventsToSet.Add(tmp);
            }
            foreach (int i in GVRPrm)
            {
                GVRP_data tmp = new GVRP_data();
                tmp.event_id = 3;
                tmp.vlan_ID  = i;
                gvrp_eventsToSet.Add(tmp);
            }

            foreach (GVRP_data g in gvrp_eventsToSet)
            {
                if (g.event_id == 3)    // remove vlan from interface
                {
                    foreach (EthernetInterface nic in GVRP_ON_Interfaces)
                    {
                        List <string> vlans = _ethernetservices.GetEthernetInterfaces().Where(x => x.Name == nic.Name).First().VirtualLANs.ToList();

                        bool isVlanToRemove = false;
                        foreach (var vlan in vlans)
                        {
                            if (vlan == g.vlan_ID.ToString())
                            {
                                isVlanToRemove = true;
                            }
                        }
                        if (isVlanToRemove == true)
                        {
                            //vlans.Remove(g.vlan_ID.ToString());
                            List <string> tmp = new List <string>();
                            tmp.Add(g.vlan_ID.ToString());
                            //Console.WriteLine("UsuwamVLAN:{0}", tmp[0]);
                            if (tmp.Count() > 0)
                            {
                                _ethernetservices.RemoveVlanFromInterface(nic.Name, tmp);
                            }
                        }
                    }
                }
                if (g.event_id == 2)    // add vlan to interface
                {
                    List <string> vlans = new List <string>();
                    vlans.Add(g.vlan_ID.ToString());     //vlans to add
                    foreach (EthernetInterface nic in GVRP_ON_Interfaces)
                    {
                        List <string> tmp = new List <string>();
                        foreach (string s in nic.VirtualLANs.ToList())
                        {
                            tmp.Add(s);
                        }
                        tmp.Add(g.vlan_ID.ToString());
                        if (tmp.Count() > 0)
                        {
                            _ethernetservices.ApplyEthernetGVRPInterfaceVLANs(nic.Name, true, true, tmp);
                        }
                    }
                }
            }
            // });
        }
Exemplo n.º 3
0
        public async Task ShouldReturnListOfInterface()
        {
            var ethernetInterfaces = _service.GetEthernetInterfaces().ToList();

            CollectionAssert.IsNotEmpty(ethernetInterfaces);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Index(IndexViewModel viewModel)
        {
            var settings = await _settingsRepository.GetSettings();

            var neighbours = new List <EthernetNeighbor>();

            viewModel ??= new IndexViewModel();

            try
            {
                _lldpSercives.ActivateLLDPAgent();
                neighbours = _lldpSercives.GetNeighbours();
            }
            catch (Exception e)
            {
                viewModel.Error = e.Message;
            }

            var ethernetInterfaces = _ethernetServices
                                     .GetEthernetInterfaces()
                                     .ToList();

            viewModel.Interfaces = ethernetInterfaces
                                   .Select(@interface => new InterfaceViewModel
            {
                AllowTagging    = settings.AllowTagging,
                IsActive        = @interface.Status == OperationalStatus.Up,
                Status          = @interface.Status,
                IsHostInterface = @interface.IsHostInterface,
                Name            = @interface.Name,
                Tagged          = @interface.Tagged,
                IsGVRP          = @interface.GVRP_Enabled,
                Type            = @interface.Type,
                VirtualLANs     = @interface.VirtualLANs,
                Hidden          = settings.HiddenInterfaces?.Contains(@interface.Name) ?? false,
                Neighbor        = neighbours.FirstOrDefault(x => x.EthernetInterfaceName == @interface.Name)
            }).ToList();

            var vlanNames = ethernetInterfaces
                            .SelectMany(@interface => @interface.VirtualLANs)
                            .Where(vLan => vLan.IsNotEmpty())
                            .Distinct()
                            .ToList();

            viewModel.VLANs = new List <BridgeViewModel>();

            foreach (var vlanName in vlanNames)
            {
                viewModel.VLANs.Add(new BridgeViewModel
                {
                    Name       = vlanName,
                    IpAddress  = _ethernetServices.GetBridgeAddress(vlanName),
                    Interfaces = ethernetInterfaces
                                 .Where(@interface => @interface.VirtualLANs.Contains(vlanName))
                                 .Select(@interface => @interface.Name)
                                 .ToArray()
                });
            }

            return(View(viewModel));
        }