private void AddIpToMac(string ip, KnownDevice device) { if (_ipToMac.ContainsKey(ip)) { _ipToMac.Remove(ip); } _ipToMac.Add(ip, device); }
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; } } }
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); } }