public Task <List <WorkerReportItem> > GetReportItems(Handler handler, List <WorkerQueueItem> toprocess) { List <WorkerReportItem> reports = new List <WorkerReportItem>(); toprocess.ForEach(s => { WorkerReportItem repitem = handler.Process(s); reports.Add(repitem); }); return(Task.FromResult <List <WorkerReportItem> >(reports)); }
public override WorkerReportItem Process(WorkerQueueItem wqi) { var result = new WorkerReportItem() { Id = wqi.Id, Ip = wqi.Ip, Rprtcnt = wqi.Rpcnt, Qts = wqi.Qts }; /*nuget System.NET.Ping*/ StringBuilder sb = new StringBuilder(); try { string data = "Hello! This is Reagan Diaz"; var pingSender = new System.Net.NetworkInformation.Ping(); PingOptions options = new PingOptions { DontFragment = true }; byte[] buffer = Encoding.ASCII.GetBytes(data); const int timeout = 1024; PingReply reply = pingSender.Send(wqi.Ip, timeout, buffer, options); if (reply.Status == IPStatus.Success) { sb.Append($"Address:{reply.Address},"); sb.Append($"RoundTrip:{reply.RoundtripTime},"); sb.Append($"TimeTolive:{reply.Options.Ttl},"); sb.Append($"DontFragment:{reply.Options.DontFragment},"); sb.Append($"BufferSize:{reply.Buffer.Length}"); } else { sb.Append(reply.Status); } result.State = "Complete"; } catch (Exception ex) { result.State = "Complete"; sb.Append($"Ping request could not find host: {ex.Message}"); } result.Data = sb.ToString(); result.Ts = DateTime.Now; return(result); }
public override WorkerReportItem Process(WorkerQueueItem wqi) { var result = new WorkerReportItem() { Id = wqi.Id, Ip = wqi.Ip, Rprtcnt = wqi.Rpcnt, Qts = wqi.Qts }; try { System.Net.IPAddress address; if (System.Net.IPAddress.TryParse(wqi.Ip, out address)) { //an ip result.Data = Dns.GetHostEntry(wqi.Ip).HostName; result.State = "Complete"; } else { //domain result.Data = Dns.GetHostAddresses(wqi.Ip)[0].ToString(); result.State = "Complete"; } } catch (System.Exception ex) { if (ex.Message.Contains("No such host is known")) { result.Data = "No such host is known"; result.State = "Complete"; } else { result.Data = $"{ex.Message}:{ex.StackTrace}"; result.State = "Error"; } } result.Ts = DateTime.Now; return(result); }
public override WorkerReportItem Process(WorkerQueueItem wqi) { var result = new WorkerReportItem() { Id = wqi.Id, Ip = wqi.Ip, Rprtcnt = wqi.Rpcnt, Qts = wqi.Qts }; HttpWebResponse response = null; Stream dataStream = null; StreamReader reader = null; try { WebRequest request = WebRequest.Create(string.Format( "http://api.ipstack.com/{0}?access_key=7ac0e3b02aacd365123419fa5fcf8078&format=1", wqi.Ip)); // Get the response. response = (HttpWebResponse)request.GetResponse(); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. var myJObject = JObject.Parse(responseFromServer); StringBuilder sb = new StringBuilder(); if (String.IsNullOrEmpty(myJObject.SelectToken("continent_name").Value <string>())) { sb.Append("Not Found"); } else { //sb.Append(responseFromServer); sb.Append($"continent_code:{myJObject.SelectToken("continent_code").Value<string>()},"); sb.Append($"continent_name:{myJObject.SelectToken("continent_name").Value<string>()},"); sb.Append($"country_code:{myJObject.SelectToken("country_code").Value<string>()},"); sb.Append($"country_name:{myJObject.SelectToken("country_name").Value<string>()},"); sb.Append($"region_code:{myJObject.SelectToken("region_code").Value<string>()},"); sb.Append($"region_name:{myJObject.SelectToken("region_name").Value<string>()},"); sb.Append($"city:{myJObject.SelectToken("city").Value<string>()},"); sb.Append($"zip:{myJObject.SelectToken("zip").Value<string>()},"); sb.Append($"latitude:{myJObject.SelectToken("zip").Value<double>()},"); sb.Append($"longitude:{myJObject.SelectToken("zip").Value<double>()}"); } result.Data = sb.ToString(); result.State = "Complete"; } catch (Exception ex) { result.Data = $"{ex.Message}:{ex.StackTrace}"; result.State = "Error"; } finally { // Cleanup the streams and the response. if (reader != null) { reader.Close(); } if (dataStream != null) { dataStream.Close(); } if (response != null) { response.Close(); } } result.Ts = DateTime.Now; return(result); }