示例#1
0
        private void AddIpToMac(string ip, KnownDevice device)
        {
            if (_ipToMac.ContainsKey(ip))
            {
                _ipToMac.Remove(ip);
            }

            _ipToMac.Add(ip, device);
        }
示例#2
0
        private void AddSourceNameFromKnownDevices(List <TraceRouteInfo> connections)
        {
            string sourceText = "Unknown Source";

            foreach (var connection in connections)
            {
                KnownDevice sourceDevice = null;
                if (_ipToMac.TryGetValue(connection.SourceIpAddress, out sourceDevice))
                {
                    connection.SourceName = sourceDevice.Name;
                }
            }
        }
示例#3
0
        public async Task <List <TraceRouteInfo> > GetConnectionInfo()
        {
            using (Client client = new Client(_routerUri, 23, new System.Threading.CancellationToken()))
            {
                var r = await client.TryLoginAsync(ConfigurationManager.AppSettings["Username"], ConfigurationManager.AppSettings["Password"], 5000);


                var connectionList = await GetIpConnections(client);



                var customList      = (await ExecuteCommandAsync(client, "nvram get custom_clientlist")).Split('<');
                var asusDevice      = (await ExecuteCommandAsync(client, "nvram get asus_device_list")).Split('<');
                var fromDHCPLease   = (await ExecuteCommandAsync(client, "cat /var/lib/misc/dnsmasq.leases")).Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                var client_info_tmp = (await ExecuteCommandAsync(client, "nvram get client_info_tmp")).Split(',');
                //nmp_custom_clientlist give list of all clients that have been connected?
                var nmp_custom_clientlist = (await ExecuteCommandAsync(client, "cat /jffs/nmp_client_list")).Split('<');

                foreach (var item in fromDHCPLease)
                {
                    var parts = item.Split(' ');
                    var mac   = parts[1].ToLower().Replace(":", "");
                    var ip    = parts[2];
                    var name  = parts[3];

                    var knownDevice = _knownDevices.FirstOrDefault(x => x.MAC == mac);
                    if (knownDevice == null)
                    {
                        knownDevice = new KnownDevice {
                            MAC = mac, Name = name
                        };
                        _knownDevices.Add(knownDevice);
                    }
                    AddIpToMac(ip, knownDevice);
                }

                foreach (var item in client_info_tmp.Where(x => x.Trim() != ""))
                {
                    var parts = item.Split('>');
                    var name  = parts[1];
                    var ip    = parts[2];
                    var mac   = parts[3].ToLower().Replace(":", "");

                    var knownDevice = _knownDevices.FirstOrDefault(x => x.MAC == mac);
                    if (knownDevice == null)
                    {
                        knownDevice = new KnownDevice {
                            MAC = mac, Name = name
                        };

                        _knownDevices.Add(knownDevice);
                    }

                    AddIpToMac(ip, knownDevice);
                }

                foreach (var item in customList.Where(x => x.Trim() != ""))
                {
                    var parts = item.Split('>');
                    var name  = parts[0];
                    var mac   = parts[1].ToLower().Replace(":", "");

                    var knownDevice = _knownDevices.FirstOrDefault(x => x.MAC == mac);
                    if (knownDevice == null)
                    {
                        knownDevice = new KnownDevice {
                            MAC = mac, Name = name
                        };
                        _knownDevices.Add(knownDevice);
                    }
                }

                foreach (var item in nmp_custom_clientlist.Where(x => x.Trim() != ""))
                {
                    var parts = item.Split('>');
                    var name  = parts[2];
                    var mac   = parts[0].ToLower().Replace(":", "");

                    var knownDevice = _knownDevices.FirstOrDefault(x => x.MAC == mac);
                    if (knownDevice == null)
                    {
                        knownDevice = new KnownDevice {
                            MAC = mac, Name = name
                        };
                        _knownDevices.Add(knownDevice);
                    }
                }



                return(connectionList);
            }
        }