示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
 public abstract WorkerReportItem Process(WorkerQueueItem wqi);
示例#4
0
        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);
        }