From 7f4466d810ed3d898416cc396db4e275bf808c2f Mon Sep 17 00:00:00 2001 From: Sean Kessler Date: Wed, 13 Mar 2024 18:23:27 -0400 Subject: [PATCH] Initial Commit --- App.config | 14 + IPMonitor.csproj | 65 ++ IPMonitor.sln | 22 + IPMonitor.v12.suo | Bin 0 -> 25600 bytes MDTrace.cs | 158 +++++ Network.cs | 94 +++ Profiler.cs | 47 ++ Program.cs | 127 ++++ Properties/AssemblyInfo.cs | 36 + SMSClient.cs | 93 +++ Utility.cs | 627 ++++++++++++++++++ bin/Debug/IPMonitor.exe | Bin 0 -> 26624 bytes bin/Debug/IPMonitor.exe.config | 14 + bin/Debug/IPMonitor.pdb | Bin 0 -> 71168 bytes bin/Debug/IPMonitor.vshost.exe | Bin 0 -> 24224 bytes bin/Debug/IPMonitor.vshost.exe.config | 14 + bin/Debug/IPMonitor.vshost.exe.manifest | 11 + bin/Debug/ipaddress.txt | 1 + bin/Debug/ipmonitor.log | 1 + bin/Release/20240313061456PMipmonitor.log | 1 + bin/Release/IPMonitor.exe | Bin 0 -> 26624 bytes bin/Release/IPMonitor.exe.config | 14 + bin/Release/IPMonitor.pdb | Bin 0 -> 71168 bytes bin/Release/IPMonitor.vshost.exe | Bin 0 -> 24224 bytes bin/Release/IPMonitor.vshost.exe.config | 13 + bin/Release/IPMonitor.vshost.exe.manifest | 11 + bin/Release/ipaddress.txt | 1 + bin/Release/ipmonitor.log | 1 + ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6652 bytes .../IPMonitor.csproj.FileListAbsolute.txt | 9 + ...nitor.csprojResolveAssemblyReference.cache | Bin 0 -> 1928 bytes obj/Debug/IPMonitor.exe | Bin 0 -> 26624 bytes obj/Debug/IPMonitor.pdb | Bin 0 -> 71168 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 36 files changed, 1374 insertions(+) create mode 100644 App.config create mode 100644 IPMonitor.csproj create mode 100644 IPMonitor.sln create mode 100644 IPMonitor.v12.suo create mode 100644 MDTrace.cs create mode 100644 Network.cs create mode 100644 Profiler.cs create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 SMSClient.cs create mode 100644 Utility.cs create mode 100644 bin/Debug/IPMonitor.exe create mode 100644 bin/Debug/IPMonitor.exe.config create mode 100644 bin/Debug/IPMonitor.pdb create mode 100644 bin/Debug/IPMonitor.vshost.exe create mode 100644 bin/Debug/IPMonitor.vshost.exe.config create mode 100644 bin/Debug/IPMonitor.vshost.exe.manifest create mode 100644 bin/Debug/ipaddress.txt create mode 100644 bin/Debug/ipmonitor.log create mode 100644 bin/Release/20240313061456PMipmonitor.log create mode 100644 bin/Release/IPMonitor.exe create mode 100644 bin/Release/IPMonitor.exe.config create mode 100644 bin/Release/IPMonitor.pdb create mode 100644 bin/Release/IPMonitor.vshost.exe create mode 100644 bin/Release/IPMonitor.vshost.exe.config create mode 100644 bin/Release/IPMonitor.vshost.exe.manifest create mode 100644 bin/Release/ipaddress.txt create mode 100644 bin/Release/ipmonitor.log create mode 100644 obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 obj/Debug/IPMonitor.csproj.FileListAbsolute.txt create mode 100644 obj/Debug/IPMonitor.csprojResolveAssemblyReference.cache create mode 100644 obj/Debug/IPMonitor.exe create mode 100644 obj/Debug/IPMonitor.pdb create mode 100644 obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/App.config b/App.config new file mode 100644 index 0000000..ee8d2ae --- /dev/null +++ b/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/IPMonitor.csproj b/IPMonitor.csproj new file mode 100644 index 0000000..79dc059 --- /dev/null +++ b/IPMonitor.csproj @@ -0,0 +1,65 @@ + + + + + Debug + AnyCPU + {45646B53-1805-4678-AC93-20F87BE46A95} + Exe + Properties + IPMonitor + IPMonitor + v4.6.2 + 512 + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IPMonitor.sln b/IPMonitor.sln new file mode 100644 index 0000000..03082a7 --- /dev/null +++ b/IPMonitor.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IPMonitor", "IPMonitor.csproj", "{45646B53-1805-4678-AC93-20F87BE46A95}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {45646B53-1805-4678-AC93-20F87BE46A95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {45646B53-1805-4678-AC93-20F87BE46A95}.Debug|Any CPU.Build.0 = Debug|Any CPU + {45646B53-1805-4678-AC93-20F87BE46A95}.Release|Any CPU.ActiveCfg = Release|Any CPU + {45646B53-1805-4678-AC93-20F87BE46A95}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/IPMonitor.v12.suo b/IPMonitor.v12.suo new file mode 100644 index 0000000000000000000000000000000000000000..b67d60911090ed6354d906add66dd2995c20174c GIT binary patch literal 25600 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 literal 0 HcmV?d00001 diff --git a/MDTrace.cs b/MDTrace.cs new file mode 100644 index 0000000..5fef20c --- /dev/null +++ b/MDTrace.cs @@ -0,0 +1,158 @@ +using System; +using System.Diagnostics; +using System.Threading; +using System.Text; +using System.Reflection; +using System.Runtime.Remoting.Messaging; + +// Filename: MarketDataTrace.cs +// Author:Sean Kessler +// Date:11/2005 + +namespace IPMonitor +{ + public enum LogLevel : uint + { + NONE=0x0000, + INFO=0x0002, + DEBUG=0x0004, + VERBOSE=0x0008 + }; +/// MarketDataTrace - Utility for . + public class MDTrace + { + private static LogLevel logLevel=LogLevel.DEBUG; + +/// MarketDataTrace - Private constructor prevents instantiation. +/// none + private MDTrace() + { + } + +/// LogLevel - Get/Set Log level. +/// The log level. +/// LogLevel + public static LogLevel LogLevel + { + get{return logLevel;} + set{logLevel=value;} + } +/// WriteLine - Writes a line of text to trace log. +/// string content of message to write. +/// void +// [Conditional("TRACE")] + public static void Write(LogLevel logLevel,string message) + { + if(MDTrace.logLevelWriteLine - Writes a line of text to trace log. +/// string content of message to write. +/// void +// [Conditional("TRACE")] + public static void WriteLine(string message) + { + WriteLine(LogLevel.DEBUG,GetCallerIP()+GetThreadRep()+GetLogLevelRep()+"["+DateTime.Now.ToString()+"]"+" "+GetMethodInfo()+message); + Console.WriteLine(message); + } +/// WriteLine - Writes a line of text to trace log. +/// string content of message to write. +/// void +// [Conditional("TRACE")] + public static void WriteLine(LogLevel logLevel,Exception exception) + { + if(MDTrace.logLevelWriteLine - Writes a line of text to trace log. +/// string content of message to write. +/// void +// [Conditional("TRACE")] + public static void WriteLine(LogLevel logLevel,string message) + { + if(MDTrace.logLevelIndent - set trace log indentation. +/// void +// [Conditional("TRACE")] + public static void Indent() + { + Trace.Indent(); + } +/// Unindent - set trace log indentation back. +/// void +// [Conditional("TRACE")] + public static void Unindent() + { + Trace.Unindent(); + } +/// Flush - Flush trace log buffers to disk. +/// void +// [Conditional("TRACE")] + public static void Flush() + { + Trace.Flush(); + } +/// GetLogLevel - Return current log level. +/// LogLevel + public static LogLevel GetLogLevel(String strLogLevel) + { + if(strLogLevel.Equals("debug"))return LogLevel.DEBUG; + else if(strLogLevel.Equals("verbose"))return LogLevel.VERBOSE; + else if(strLogLevel.Equals("info"))return LogLevel.INFO; + else return LogLevel.NONE; + } + +/// GetLogLevel - Return current log level. +/// LogLevel + private static string GetLogLevelRep() + { + if (MDTrace.logLevel == LogLevel.DEBUG) return "[TRACE.DEBUG]"; + else if (MDTrace.logLevel == LogLevel.VERBOSE) return "[TRACE.VERBOSE]"; + else if (MDTrace.logLevel == LogLevel.INFO) return "[TRACE.INFO]"; + else return "[TRACE.NONE]"; + } +/// GetThreadRep - Return threading information. +/// LogLevel + private static string GetThreadRep() + { + return "[Thread="+Thread.CurrentThread.GetHashCode()+"]"; + } +/// GetMethodInfo - Returns information about the calling method 2 frames up. +/// String + private static String GetMethodInfo() + { + StringBuilder sb=new StringBuilder(); + StackFrame frame=new StackFrame(2,true); + MethodBase methodBase=frame.GetMethod(); + ParameterInfo[] parameters=methodBase.GetParameters(); + sb.Append("[").Append(methodBase.DeclaringType.FullName).Append("::").Append(methodBase.Name).Append("("); + for(int index=0;indexGetCallerIP - Returns the calling methods IP address. +/// String + private static String GetCallerIP() + { + String hostName=(String)CallContext.GetData("HostName"); + String hostAddress=(String)CallContext.GetData("HostAddress"); + if(null!=hostName)hostName=hostName.Split('.')[0]; + if(null==hostName && null==hostAddress)return "[LOCAL]"; + return "["+hostAddress+"->"+hostName+"]"; + } + } +} diff --git a/Network.cs b/Network.cs new file mode 100644 index 0000000..81925c9 --- /dev/null +++ b/Network.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.NetworkInformation; +using System.Text; +using System.Threading.Tasks; + +namespace IPMonitor +{ + public class NetworkStatus + { + private NetworkStatus() + { + } + /// + /// Indicates whether any network connection is available + /// Filter connections below a specified speed, as well as virtual network cards. + /// + /// + /// true if a network connection is available; otherwise, false. + /// + public static bool IsNetworkAvailable() + { + return IsNetworkAvailable(0); + } + public static bool IsInternetConnected() + { + try + { + Ping myPing = new Ping(); + String host = "google.com"; + byte[] buffer = new byte[32]; + int timeout = 1000; + PingOptions pingOptions = new PingOptions(); + PingReply reply = myPing.Send(host, timeout, buffer, pingOptions); + if (reply.Status == IPStatus.Success) + { + return true; + } + else if (reply.Status == IPStatus.TimedOut) + { + return true; + } + else + { + return false; + } + } + catch (Exception) + { + return false; + } + } + /// + /// Indicates whether any network connection is available. + /// Filter connections below a specified speed, as well as virtual network cards. + /// + /// The minimum speed required. Passing 0 will not filter connection using speed. + /// + /// true if a network connection is available; otherwise, false. + /// + public static bool IsNetworkAvailable(long minimumSpeed) + { + if (!NetworkInterface.GetIsNetworkAvailable()) + return false; + + foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) + { + // discard because of standard reasons + if ((ni.OperationalStatus != OperationalStatus.Up) || + (ni.NetworkInterfaceType == NetworkInterfaceType.Loopback) || + (ni.NetworkInterfaceType == NetworkInterfaceType.Tunnel)) + continue; + + // this allow to filter modems, serial, etc. + // I use 10000000 as a minimum speed for most cases + if (ni.Speed < minimumSpeed) + continue; + + // discard virtual cards (virtual box, virtual pc, etc.) + if ((ni.Description.IndexOf("virtual", StringComparison.OrdinalIgnoreCase) >= 0) || + (ni.Name.IndexOf("virtual", StringComparison.OrdinalIgnoreCase) >= 0)) + continue; + + // discard "Microsoft Loopback Adapter", it will not show as NetworkInterfaceType.Loopback but as Ethernet Card. + if (ni.Description.Equals("Microsoft Loopback Adapter", StringComparison.OrdinalIgnoreCase)) + continue; + + return true; + } + return false; + } + } +} diff --git a/Profiler.cs b/Profiler.cs new file mode 100644 index 0000000..6affa0f --- /dev/null +++ b/Profiler.cs @@ -0,0 +1,47 @@ +using System; +using System.Runtime.InteropServices; +using System.Collections; +using System.Text; + +// Filename: Profiler.cs +// Author:Sean Kessler + +namespace IPMonitor +{ + /// Profiler - Profiler utility class + public class Profiler + { + [DllImport("kernel32.dll")] + static extern uint GetTickCount(); + private uint elapsedTime; + private uint totalTime; + + public Profiler() + { + totalTime = GetTickCount(); + Start(); + } + public void Reset() + { + totalTime = GetTickCount(); + Start(); + } + public void Start() + { + elapsedTime = GetTickCount(); + } + public uint Split() + { + return GetTickCount() - elapsedTime; + } + public uint Stop() + { + return elapsedTime = GetTickCount() - elapsedTime; + } + public uint End() + { + return totalTime = GetTickCount() - totalTime; + } + } +} + diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..91690ff --- /dev/null +++ b/Program.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Configuration; +using System.Net; +using System.IO; +using System.Diagnostics; +using System.Threading; + +namespace IPMonitor +{ + class Program + { + public static String GetPublicIPAddress() + { + String address = ""; + WebRequest request = WebRequest.Create("http://checkip.dyndns.org/"); + using (WebResponse response = request.GetResponse()) + using (StreamReader stream = new StreamReader(response.GetResponseStream())) + { + address = stream.ReadToEnd(); + } + + int first = address.IndexOf("Address: ") + 9; + int last = address.LastIndexOf(""); + address = address.Substring(first, last - first); + + return address; + } + + public static void UpdateIPAddress(String ipAddress) + { + + + String strPathFileName="ipaddress.txt"; + if(!File.Exists(strPathFileName)) + { + WriteFile(strPathFileName, ipAddress); + SendSMSEmail(String.Format("IPMonitor IPAddress {0}",ipAddress)); + } + else + { + String currentIPAddress=ReadFile(strPathFileName); + if(null!=currentIPAddress && !currentIPAddress.Equals(ipAddress)) + { + WriteFile(strPathFileName,ipAddress); + SendSMSEmail(String.Format("IPMonitor IPAddress {0}",ipAddress)); + } + } + } + + public static void WriteFile(String strPathFileName,String ipAddress) + { + if(File.Exists(strPathFileName))File.Delete(strPathFileName); + FileStream fileStream=new FileStream(strPathFileName,FileMode.Create,FileAccess.Write,FileShare.Read); + StreamWriter streamWriter=new StreamWriter(fileStream); + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Creating address file:{0}",strPathFileName)); + streamWriter.WriteLine(ipAddress); + streamWriter.Flush(); + streamWriter.Close(); + streamWriter.Dispose(); + } + + public static String ReadFile(String strPathFileName) + { + try + { + FileStream fileStream=new FileStream(strPathFileName,FileMode.Open,FileAccess.ReadWrite,FileShare.Read); + StreamReader streamReader=new StreamReader(fileStream); + String item=null; + item=streamReader.ReadLine(); + streamReader.Close(); + streamReader.Dispose(); + return item; + } + catch(Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::ReadFile] Exception:{0}",exception.ToString())); + return null; + } + } + + public static void SendSMSEmail(string message) + { + String smsSMTPAddress = ConfigurationManager.AppSettings["sms_smtpaddress"]; + String smsUserName = ConfigurationManager.AppSettings["sms_smsusername"]; + String smsPassword = ConfigurationManager.AppSettings["sms_smspassword"]; + String[] smsRecipients = ConfigurationManager.AppSettings["sms_smsrecipients"].Split(','); + SMSClient.SendSMSEmail(message, smsUserName, smsRecipients, smsSMTPAddress, smsUserName, smsPassword); + } + + static void Main(string[] args) + { + int interval_ms = int.Parse(ConfigurationManager.AppSettings["poll_time_ms"]); + int notify_ms = int.Parse(ConfigurationManager.AppSettings["notify_time_ms"]); + + try + { + MDTrace.LogLevel = LogLevel.DEBUG; + String strLogFile = "ipmonitor.log"; + Utility.CopyFile(strLogFile,Utility.DateTimeToStringYYYYMMDDMMSSTT(DateTime.Now)+strLogFile); + Utility.DeleteFile(strLogFile); + Trace.Listeners.Add(new TextWriterTraceListener(strLogFile)); + + Profiler profiler=new Profiler(); + profiler.Start(); + while(true) + { + String ipAddress=GetPublicIPAddress(); + UpdateIPAddress(ipAddress); + try{Thread.Sleep(interval_ms);}catch{;} + if(profiler.Split()>=notify_ms) + { + SendSMSEmail(String.Format("IPMonitor IPAddress {0}",ipAddress)); + profiler.Start(); + } + } + } + catch(Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor] Exception:{0}",exception.ToString())); + } + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..67582d7 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("IPMonitor")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("IPMonitor")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7c9aa068-2aeb-4b6e-81e1-e5e34fd0e8a8")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SMSClient.cs b/SMSClient.cs new file mode 100644 index 0000000..3743876 --- /dev/null +++ b/SMSClient.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Mail; +using System.Text; +using System.Threading.Tasks; + +namespace IPMonitor +{ + public class SMSClient + { + private SMSClient() + { + } + +// +// +// +// + public static void SendSMSEmail(string message, String from, String[] recipients,String smtpAddress,String userName,String password,int port=587) + { + String subject = string.Format("{0} {1}", message, DateTime.Now); + + try + { + if (!NetworkStatus.IsInternetConnected()) + { + MDTrace.WriteLine(LogLevel.DEBUG,"The internet is not connected. Cannot send SMSEmail."); + return; + } + MailMessage mailMessage = new MailMessage(); + mailMessage.From = new MailAddress(from); + mailMessage.Body = message; + mailMessage.Subject = subject; + mailMessage.IsBodyHtml = false; + foreach (String recipient in recipients) + { + mailMessage.To.Add(new MailAddress(recipient)); + } + SmtpClient smtpClient = new SmtpClient(smtpAddress,port); // smtp.gmail.com + smtpClient.UseDefaultCredentials = false; + smtpClient.Credentials = new System.Net.NetworkCredential(userName,password); // skessler1964@gmail.com MN5191306B + smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; + smtpClient.EnableSsl = true; + + smtpClient.Send(mailMessage); + smtpClient.Dispose(); + } + catch (System.Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,exception.ToString()); + } + } + + public static void SendEmail(string message, String from, String[] recipients,String smtpAddress,String userName,String password,int port=587) + { + String subject = string.Format("{0} {1}", message, DateTime.Now); + + try + { + if (!NetworkStatus.IsInternetConnected()) + { + MDTrace.WriteLine(LogLevel.DEBUG,"The internet is not connected. Cannot send Email."); + return; + } + MailMessage mailMessage = new MailMessage(); + mailMessage.From = new MailAddress(from); + mailMessage.Body = message; + mailMessage.Subject = subject; + mailMessage.IsBodyHtml = false; + foreach (String recipient in recipients) + { + mailMessage.To.Add(new MailAddress(recipient)); + } + SmtpClient smtpClient = new SmtpClient(smtpAddress,port); // smtp.gmail.com + smtpClient.UseDefaultCredentials = false; + smtpClient.Credentials = new System.Net.NetworkCredential(userName,password); // skessler1964@gmail.com MN5191306B + smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; + smtpClient.EnableSsl = true; + + smtpClient.Send(mailMessage); + smtpClient.Dispose(); + } + catch (System.Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,exception.ToString()); + } + } + + + + } +} diff --git a/Utility.cs b/Utility.cs new file mode 100644 index 0000000..3521ef2 --- /dev/null +++ b/Utility.cs @@ -0,0 +1,627 @@ +using System; +using System.Text; +using System.IO.Compression; +using System.IO; +using System.Globalization; +using System.Linq; +using System.Collections.Generic; +using Microsoft.Win32; +using System.Diagnostics; +using System.Security.Principal; +using System.Threading; +using ThreadState=System.Threading.ThreadState; + +namespace IPMonitor +{ + public class Utility + { + private static DateTime epoch = DateTime.Parse("01-01-0001"); + private static TimeSpan oneDay=new TimeSpan(1,0,0,0); + + + public static String ThreadStateToString(Thread thread) + { + switch(thread.ThreadState) + { + case ThreadState.Running : + return "Running"; + case ThreadState.StopRequested : + return "StopRequested"; + case ThreadState.SuspendRequested : + return "SuspendRequested"; + case ThreadState.Background : + return "Background"; + case ThreadState.Unstarted : + return "Unstarted"; + case ThreadState.Stopped : + return "Stopped"; + case ThreadState.WaitSleepJoin : + return "WaitSleepJoin"; + case ThreadState.Suspended : + return "Suspended"; + case ThreadState.AbortRequested : + return "AbortRequested"; + case ThreadState.Aborted : + return "Aborted"; + default : + return "Unknown"; + } + } + public static long DateToUnixDate(DateTime dateTime) + { + DateTime javascriptEpoch=DateTime.Parse("01-01-1970 00:00:00"); + DateTime eod=new DateTime(dateTime.Year,dateTime.Month,dateTime.Day,23,0,0); // request end of day + TimeSpan ts=eod-javascriptEpoch; + long longDate=(long)ts.TotalSeconds; + return longDate; + } + public static DateTime UnixDateToDate(long yahooDate) + { + DateTime javascriptEpoch=DateTime.Parse("01-01-1970 00:00:00"); + TimeSpan timespan=TimeSpan.FromSeconds((double)yahooDate); + DateTime date=javascriptEpoch+timespan; + return date; + } + public static void RemoveLogFiles(String strFolder=null) + { + if(null==strFolder)strFolder=Directory.GetCurrentDirectory(); + String[] logFiles=Directory.GetFiles(strFolder); + if(null==logFiles || 0==logFiles.Length)return; + logFiles=logFiles.Where(x => x.EndsWith(".log",StringComparison.InvariantCultureIgnoreCase)).ToArray(); + if(null==logFiles || 0==logFiles.Length)return; + foreach(String logFile in logFiles) + { + try + { + MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Removing {0}",logFile)); + File.Delete(logFile); + } + catch(Exception){;} + } + } + public static String Pad(string str, char filler, int length) + { + int stringLength = str.Length; + if (stringLength >= length) return str; + StringBuilder sb = new StringBuilder(); + + while (stringLength < length) + { + sb.Append(filler); + stringLength++; + } + return sb.ToString() + str; + } + public static bool Is64Bit() + { + if(IntPtr.Size.Equals(8))return true; + return false; + } + public static bool IsAdministrator() + { + return (new WindowsPrincipal(WindowsIdentity.GetCurrent())).IsInRole(WindowsBuiltInRole.Administrator); + } + public static String RemoveHtml(String strItem) + { + if(null==strItem)return null; + String[] codes = { "'","»" }; + if(null==strItem)return strItem; + foreach (String code in codes) + { + strItem = strItem.Replace(code,"'"); + } + strItem=strItem.Replace("&","&"); + strItem=strItem.Replace("‘","'"); + strItem=strItem.Replace("’","'"); + strItem=strItem.Replace("—","-"); + strItem=strItem.Replace("“",@""""); + strItem=strItem.Replace("“",@""""); + strItem=strItem.Replace("”",@""""); + strItem=strItem.Replace("”",@""""); + strItem=strItem.Replace("–","-"); + return strItem; + } + public static String RemoveDivs(String strItem) + { + StringBuilder sb=new StringBuilder(); + bool inDiv=false; + if(null==strItem)return strItem; + for(int index=0;index'))inDiv=false; + else if(!inDiv)sb.Append(ch); + } + return sb.ToString(); + } + public static int CharToNum(char ch) + { + return (int)ch-48; + } + public static String RemoveCC(String item) + { + StringBuilder sb=new StringBuilder(); + foreach(char ch in item) + { + if(!Char.IsControl(ch)) sb.Append(ch); + } + return sb.ToString(); + } + public static Stream StreamFromString(string s) + { + var stream=new MemoryStream(); + var writer=new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position=0; + return stream; + } + public static String RemoveQuotes(String strItem) + { + if (String.IsNullOrEmpty(strItem)) return null; + if(strItem.StartsWith("\""))strItem=strItem.Substring(1); + if(strItem.EndsWith("\""))strItem=strItem.Substring(0,strItem.Length-1); + return strItem; + } + public static String BetweenString(String strItem, String strBegin, String strEnd) + { + if (null == strItem) return null; + int index=-1; + if(null==strBegin)index=0; + else index = strItem.IndexOf(strBegin); + if (-1 == index) return null; + String str = null; + if(null!=strBegin)str=strItem.Substring(index + strBegin.Length); + else str=strItem; + if(null==strEnd)return str; + index = str.IndexOf(strEnd); + if (-1 == index) return null; + StringBuilder sb = new StringBuilder(); + for (int strIndex = 0; strIndex < str.Length; strIndex++) + { + if (index == strIndex) break; + sb.Append(str[strIndex]); + } + return sb.ToString(); + } + public static String RemoveAfter(String strItem, char charItem) + { + StringBuilder sb = new StringBuilder(); + for (int index = 0; index < strItem.Length; index++) + { + char ch = strItem[index]; + if (ch.Equals(charItem)) break; + sb.Append(ch); + } + return sb.ToString(); + } + public static bool OutOfRange(double value) + { + return value > 100000000000000000000.00 || value< -99999999999999999999.99; + } + public static String RemoveControlChars(String strItem) + { + StringBuilder sb=new StringBuilder(); + for(int index=0;index=1000.00) formatString.Append("{0:0,0."); + else formatString.Append("{0:0."); + for(int index=0;index list,char separator=',') + { + StringBuilder sb=new StringBuilder(); + if (null == list || 0 == list.Count) return null; + for(int index=0;index ToList(String items,char separator=',') + { + List list = items.Split(separator).ToList(); + list=(from String str in list where !String.IsNullOrEmpty(str) select str.Trim()).ToList(); + return list; + } + public static String FromList(List items,String postFix=",") + { + StringBuilder sb=new StringBuilder(); + for(int index=0;index 0) outputStream.Write(decompressedBytesBuffer, 0, count); + else break; + } + decompressionStream.Close(); + compressedStream.Close(); + String strDecompressed = System.Text.Encoding.UTF8.GetString(outputStream.ToArray()); + outputStream.Close(); + outputStream = null; + compressedStream = null; + decompressionStream = null; + return strDecompressed; + } + catch (Exception exception) + { + MDTrace.WriteLine(LogLevel.DEBUG,exception); + return null; + } + finally + { + if (null != outputStream) + { + outputStream.Close(); + outputStream = null; + } + if (null != decompressionStream) + { + decompressionStream.Close(); + decompressionStream = null; + } + if (null != compressedStream) + { + compressedStream.Close(); + compressedStream = null; + } + } + } + public static void LaunchBrowserSearch(String searchTerm) + { + Process.Start("https://www.google.com/search?q="+Uri.EscapeDataString(searchTerm)+"/"); + } + public static bool IsZeroOrNaN(double value) + { + return IsNaN(value)||IsZero(value); + } + private static bool IsZero(double value) + { + if(value==0.00)return true; + return false; + } + private static bool IsNaN(double value) + { + return double.IsNaN(value); + } + public static bool DeleteFile(String pathFileName) + { + if(!File.Exists(pathFileName))return false; + try{File.Delete(pathFileName);}catch(Exception){return false;} + return true; + } + + public static bool CopyFile(String pathSrcFileName,String pathDstFileName) + { + if(!File.Exists(pathSrcFileName))return false; + try{File.Copy(pathSrcFileName,pathDstFileName);}catch(Exception){return false;} + return true; + } + } +} \ No newline at end of file diff --git a/bin/Debug/IPMonitor.exe b/bin/Debug/IPMonitor.exe new file mode 100644 index 0000000000000000000000000000000000000000..1dc6c13b278f5dcd1a1cee1f9768b93f69b999b0 GIT binary patch literal 26624 zcmeHw4Rl=9b?&}*X6~JTX-2Xn|HvNO*o-}vEdKzuvB9z=V}WH0OU4+Rnvv#O8hbQX zzB4j*z(j)l-~dUSG?0HVg$9SVF%7JQ1e%19l~9_Jv`qqei634`+d%0{6Vg7?7W2Nn z&z&Dx3ZZmmb*=V|Jm;Lf&p!L?v(G;J>~rpw+;iOr$wNe5eBXG3=!?ktvr*DFPsULl zo%f|EJsSA-{4Z)-zdgTyI9o`JI`)v09!U(Q^Le|N7_bt~SU!=>Cpx$HB}VLw)f$Ne zFK}7+b`fpWJalgUFRfBv=Gtn0pnNLb2lST;5&{lOP4^VE4fi3gA@LI6<^@_ z;v z+EfKf@kQ1vJ}jF~K04A#^xDO&JDuiNsa1&HLb6m(#)yKTTuOCq8etYmBZ|>25ZoI~ zk+F0E>EjG6t!wkpG1Nm;w_ZQzYdEI`jTSw1VD4SB(KKW>Bx@kY{bpk_B6(91V+1_Y z0pHR4%~{DfIt<74a}8cJucUCafraNde2|G8Knx#9b^RP|9l(#`FQs!T$ zUgWSE*A{1;(-c#`a}inwQx}T~&#j=Z7W6zpH&xJw1nqb3kQ@fjdc6R=Ve~O_9t1i$ z7b4s9klcxqCbpVP02FbU{!5^TwZy1^RTvC5H5L{i51IBtWMRJze!++#OTb=)vfo~e z)V`1thMg~<8@DD|Mm||WE^esvrY@mC%=_^=pAqxfOG-40W8T2~vyHpYX?14IYzZ6A z*UF73=54&T&MOq>yi)&!;e4Z9Z-|Z687YbxSX8{GK7w(;g=5^$f-DJau*mB===^vR z9I7|YX^}w7Or!BGj6~yJ8s@crD(1B@Z^4F-!zl#nP0?~nYb22Roqq<4aO#rT;wkEU zF<*o72{B)zd4J5;TQZ9cjYb#NN+afM|l1)UJO2+d2}1tn|Y#LwVAB83*z)Oigv;D`9F3_vz}ISQ~S z{1eR?)L3VnS?X3KbPV(S$_O=p#9S;HI)zd-Y-i|+4(7;2UmDxWcYq18OvyHM5%#y3 z4WTtpFkNy55E0Dvnoj`Y*$$FnuLQDj)f~fKg~Gh1*0?GqZUc?0;06L4JvCt1t3jim z^FnID^cpr+L(rLzVb8X)Q3M;7HyHLM=i$zIQ<}?TuG?aTv{=I}TwdPB(3z%5CKdLt z+x5m9Z#0CU40EYd+DmkH+Qu>1kylT`Utl3E-2p#(K6dHFB_x&(?=L!GZ{R%r!Rbkp-FINFnprS!N^If##U) zW+;q3l|jz`Mund21fJa#^q;zzj3gYG5i*wrOkI31uS+zW{U*)Id+jyo6Q<01=iZb_ zn0m4c0O?KecbicP8igy6g=RT5dRYL>i~-}fw=k(`cdP75m0iUdybR9;{4+Y>fBMXs zWrnQzP<`06x1xZoM>X8WnZM3^W^ROLIUVROAl^(3TKcR_eD41aP58YPENTQ9a-WJ0p3cjpYj1v@t=*ZA=&I8^%equ-%Bt zM0D1ctT(l1G}709NcC*1|8aeQ_kUx3un&9`y21_te`I4BW3uNZ+AcP`5C+gfe6b(V zDtrt0!i`JLW&U>HYtE}}-HbM^-KimS-p1A|&BQp+oU?tlUYY83jzWn+CEP0c&Lh@Q?yX1anpX3r>nzR|cVQIp?ZJ?7`j3F4; zYAAUCC1eLxmP0nLv7sS3f&!UFGLIZ*r=*SiKqP>uP&qi($pY|fJddZIOOApxWSGfA z+|(aQQ2=X__eeNeiJNri9>_4$hH_Lu3q0H07m>qn#He1EFavvqnJj{+7Q4V06C2Ay z4ZJEiNOA)R-{+xlK8HK~39%odFq$bHuAPHxXnvRE_>VVVYkhhIv zAhet1oP>yGm2WZC)>C#|lVe?o`i-S(9oQl-hs-+M&q@JzZAvGrYu!me6B>J(4kHV@SDZ_k~g6RPL^|%H>05TM{i^K z$ilRsQ*mnY7)T1YAW0;k1N)sQRmV6`&g?3^Lq4-Uyv6{!NrlcFY&&0uM(#&A<~*Yc zL3f&%To14L0eWK>iI6lk2VsT*J?f_O0}$Ke=#Y1F43NEi%*UP$?Vi`2|Al(z?<+*Q z^AC)vYNk7{Pr=j}pqY=vWvx4l7;{NA=F%yco++4pQ!s}ZQ_Z=edp0y|Eu}M8L&#Nt zxM-ga^V#1JPIZ&+w*NZd1Teezb6FgrqnfHt)V*vlqk5zf|_Lf|(7$`Z)mcx~9P zY{uOK9&%4lY6bHA!mSf_RoK?Nwo1&Z6QT>6TalA=G3`Y#ZILTPX7V;j<@RX0J(dG) zF;utHXH};a9pF$y2}O@`J9JcU!9%xWu5DE#S~d^edo&JS7yc?`QJo{=c1Iq_k^`xN() zMAz+A(z;zw%SL?p?}N_;=i94T%qU}`8*uY@R0&B4f}oNERuKf4DdCw zn&TGGz&2tyz)Gl7igiMOIoJssiP{T^t~2LluDjNM?E!Zw$ULt=+r?ssLUUkGHmGOk zW%d}L-5t{Pc^RNkKCn9*#?h;A7x-1$YlKLIz#BFhGP_IwxLD!KY;oLt@xU823|)fo z)EehDj3S8qgye0`Ny(GWW0EJFZ%W?ed{6RP=kF!=tD6KhWU(vsS@N~lK|{*dmdI*q z$oXe9OuoOYD4y%z+UAY7(Z)3Y(dOT# zw!uXm``^;uqIQcA!kSvciTDw3VKD_4OLSsli(=pYcjxV@pqpYoF4Wp#S;gJ7(> z+W3Ku=X|_RiFi@dX{mG*Hk}P+h=*l5-DOyYJ0NY^jF?{ z-|kq3-o{u8ztgdJDGl8r#)Z#Tw`^g5!@R_&{PK_?h@0`a$55qw@Ec{h;dGe4i{ufq6Rd3eo>e65*V!p#wJ- z(D|~|NNzylh5@oCUX1$Xl{JBj>rPOJi&3XN@oR>sf?izZd3dgL8U&BFsNoa0)`!SB2Ty9$3f9%E1W=E3;Wll`bxiEs24)42_5O8K1Q$g1OS4kIL9uc2Fz zdy^l9{>t%>dcKZ02G1w3R{3fiE|?S#2l;sr2>m!Wso2v!dk7~!`F}$V*7YGeKNC@RL#5;4d1K%> zPuW~)3|_fhTg|do)~d%{s!6Y0^(1}BZV6+Aay4`SQ?9Ot7=^1L&g5$7mPm=_Ak%yb zqZnrtXgEuv`;^O5tzP!wS5MZ}TUCfy8oil9z?Yv-+=cui9$$U1K19iTA(U?4hcxUS zz8f10Cjo{`e}n)1S^IvJaRmPZ&gw&k{QwFP!-a!^I^UVg)Fm(v$Dn#3T8N*S%FR2j z1xihcAGW&4a(lufr=QjMpE(7qV+FyD=sAPmp81VO|OkLIk`f;mRpu zhbh5NcI1JmTudw@Gthu%%Jv_EnAcRpIh{}A{+Pcd;tw?7+CoN_(o_6Q)Sr6J71R|? z6yulC+Mi(-KEFGVFe@(Rt258^)fu?`HcA6G&upT49I2#_5S8hbHn`&{+EB>J+Q4~G zJ!@#Bu{%q;Xr%XiO1(#On4A+>u6ptzNag%BigG$ho&vZSisW^O`%blf^`wPKY4Phx zY~M!tl+AtzcR7T(4EkJ%l6+(}@(oJm#!vBsMVI(}7Tw5VnT>wJ1xNB}G{1HPC!n?Hec!oChUAal)t8sjIOovyuwzaNmTeV^>V|?PL_+i>Y z+-l~KZ>>YQujpj+L%3GPdumu^|AY<}?(Cz7;P_#2wD5|Z-SGPKMZgd9gRUn8o}~AD(MT7{!(L%rgOSL$Bh9!u73{csE0B4_-^(Y6!*Vo8nnTm@*C7I z=^;r!DCsFlpOW;)lD;M>F0=y%bxOJ;z-em`fzxBUL)xZ zl8zva(kCPDjRfgCkw=hvqPK(d5=q-7%|>@egES`TpCC2p<><4({9nP$sbLvfCB3?a zYu{bN^Af6MIoH;*#;&jZoF1o7)_$7_SBWuEK zpie=t^Aw-}_;GD5_Hu?yI1h%}U1$b))Y6p#1#qX$bvs;Wp+I|GXfYYaIC{Qj{C2E? zYsT-A^h1(<6lsj^L#mOjv3=i!G)DiX9Y-3}??M`{ebf`9?l`B%;_vhICRqN7rc=0; z(P*zgcl$pF-=a~$g`PmfsL{;|qGxC|R+xW2n$g|#93HQE>E<%D5hD*TDAldTNI&92 zKfybT0s6EHy)4jYTrX)7rG3z^Fa@@YFT-i!;?3-tRgG+&^-7bwc*0==%F zrq0k7wDZC5l*SjNT7mASOSL_yTjoOB1o~>ZZXfFSGfpQG16l^Y<&%pUevfD=M2{dLiY%C0blCSd+3t_Z58Nlx(`x^Jyr;<7DERNePMSwl|nR+fz;f_=%)hRP2bm! z!47_vQe1ups0rbif|lqf@HF9R7uulTLkViaae-yos(%VLIP5}u^hkjCD zfK$PpE|k~z;GT}XI@cW*=tUQLkM5w(j}VyaP5`=)KI%fB)IW=T@w5y5A?lV;7(p>p zepUY*?io5==)0&((L*kDMt=-v#1A4&X3AIeCvdWO#f4tepQ05s2Vp7Kc{~oSq)``Y z0JMr8aG|-LZ^E*lccCSKE~Z+9d)#gnpfz-@3$=T`jXUSpTxc_(4fIhy(15ZRJU7x4 zE_9ve9;|VGKbPw)4+kP^c#8t`4$t4ZG5#&`CgD)U-xXJ_cwrZFQl) z0CWY7yU^bQ+Cq=Ikl*`5ylwe27g`ADN}3}(^xbqBpsT3Yh4um3O7C)^TLJaZ7hUKi zpl$Su3w_D!;0adSIwi|rcwfX_$(?2BZxMC(^AmQA=mpgE)9Etw3hkuCdR6x`)a|01 z%g`%yExqDG|AHQ_qrEsHG8f(VOWH&0FH=z1_Zsb`2V7{T??t+vo_3*?zSr>@w*PWP zd700l8|a7&UFq{_Y5JrK?ehh-0eV6~{vltjHb{TtLWg`a0KMW;e%dz+&__2ao)7yj z&@5_dSJ0pOTD2iM;zD2ct!D-XOD)DNoS)c&ApN zaTgkmJBVp|rQHefgJYo5sM+B3K9qG@C}ou@41)RdYA+H@yQJGBy%woXm9pmY8J1e+ zrqc*g4>?G^bPTDFjw3bbLq=__NuNMjwR&rm_X+)HBs~od8huI1Pb1aoTSz_hoM66R zm7bCESxNt{3ePk;{R}DIFe>A9dQHkoKZ*~JR3k;NAvP_QYkos{4)7jYSXEn%QIfPs z?Mg{6l~j%EKa;W^H0ly=oa(gItgZD>Um2rnbv#m;O39c(!K?IO70qFkbvi1Tn2XO3C-5i+UG-iD6KscT7~kfp>;^-hBqR;B)l1Edzi;E5WW&+ z=FAfA&?mrWP&=;O7arA*Yo8C_sGrcj5c5Dc&HC$mU9K2s5$7F4|#qGdpKEhTANRwmGn_bPtg(7K2dY4X9+!9a|hBN)qEV7 zpVi#wNsDYRP=DXccOu;p8}^=*zRqgTKuc>W z8@mxShhsc1?}~i_XrW^ zEzPdGz&NWX>XsS5)?4cw(mZ!)n~hUC?~9LUSJdSY1D>KC2F?Rms{usA4M=NgHqv@T zr+&l(yEQ*f@4K})@i|AQ9_{xu57y2NNI!-&3LCsZYej_m1)~*lBd52~T(cF?-$N*e z=sKizQl2ff9g_A*TA(l}FQq3za}&)#c@KRL<%9Hwk=8!!dD1f>=}Acw5yotk^ae?f zXz$fNpxvkaq4s6%jP`~W)aUEh=|lQK{lofa^*__UrN5*HJ=b{-c|PDd<+oIeyT-TIm-8L+-Rk?H zFKnzddT^(sK_@!)_$GPBr`Fi6;Y~xMAGd-!b|?*B{#~&>*q3!gRwf+_FZF!ObJ+K% zII^Z_K-0)O&K|h>GarDr3ZYR(pvkzADY)y;EzDPTZ*<7}WyPm?J?c}lp)OWN{v__~aKQ=~gY2izMBe&0ExUWY8KdX6-z6=QAQrKC23wb7O^Jy22`!8C8{cSfgCkKkQiPj0^Nw z#bG1GV^E2e zOOF<;On-L7qM}_)=cKg5!cYhbb&!riXDHjF(37<89UI7H2fKUQGa1J!6lmvYCS9~D zu#9;#=74rUW-0Vp`3&ZvYXpK(Pdb|?#wf58jipy>)E*orF7}P4^JM3(&h$}tj#`xh zaHB}7#9-_cQ$u6sK)gc*XhNw(RsM_ic{>D6O) z5q)lgsajTkQdRqY%n)rKD{kMvBb^^&t+AY#u%ctHOjlXf=q78w?O0M& zO&KYrt?5FMHp8kU*_?F%Vv^jxm2$S)P$4I-QlR4P`*&H^K`75HO;#tSqlD&dx2B@qb}HMIfLvAFxi;Y5i!$VOgJnb z_A8|l$>jFCvc+L{UR4D*C{VwX9l>mkvRm9_+c_(p@3(hbg>9u3(p~71RW<}yRVi(s zwA4CmIFvzlRfX0otULxaNL#TqZdf5%$r`BNW-PI-OQFLa85M`nX$_W&Thn9t!QoAg zePh9L`mD5r72aLA&T{PS&bIV6w~UN|PAg{>EpZqf_UKV5C?Q<|#W~XmoK70+#43B# zLeVMvPF}_%VJenT1m3u)Co9$c%Q;ibs&$3shoRuHKx&@}2cN&Zy zyTS;bmIAZM8iFH4f&J=9-zlWt`;9c2qtGWJ`}2#r?jn}I%Ou&jTEJDG($A8IRZ-GNOBgKNFUatbg& z@%NZ2tGF3kxy9Rjdl4cIjA7uVCf0t}T(JZT*2qBaXn(etvnqrobf;Aqbh5GuPp#x7 zm>n9!7}4)^)g#!Hj!vyWn2{M9EKaRp6Lzvg!_!nDZpm09>FU9hWb7Er6~~+^;Y*`* z6(jq(J=$kEhqFAnSajE93t4RT6$!2w%VsK2iLv^uFx&xw5sDR8tt?61&wu4X zvD`G4m6eR}V(_4t9;u*fQ@UU=2L-W*hFM}MmV&V|qCoAVqlj_Pj@P2p_a7a#L?AfG zT$&$`mNA>hayjufGC1%o2~}DU926AMqP0i7A1@3J{4iSi;}j67GhIweh(fJ{5}Ue{ zfuOL}4GdWd-jX;9?PV6cW~H=URt170U=d~J5O=Zg-Mwy9&0@L5GA|5!KWiL)PZN3q z+m11**j%iZi3_xS)KY6KovY$K6?=ZmvZ{V#g>v~UY1Kk^CsZs7yR#d9AKAX2I&-=1 z5%%d713So}a&Fbi)=Vx}ngDc1yR3m7)}b*Aey{^k9&{#{!YFJ_#*ct`N*R_^2?#k7 zhDT--bBmny+wA(gJF{qAkbqqkaoj;D$L9nVv~O&npxiRAR2(GWj|*-9;qI9T_;Qxp zAs2Zy3a)(+ItMXVV~2rRiBuAzD{i&kq?_C5)C)H>#ff@6>Knw8K6QKgby)_tjB za%&EMsV|2Bxg;m1vlRyrIfdlZTC(^=k}C%aupbU-u#*+{ZL%{*rGPn*;~^uv3yhY- zK~=-^1nsv=Jyt3Tt?H1;vy+21OJNoQt3E^??kSbK*og?x+MmW=0DI%pBGg$Z9ds)w z>aLUvn~rXQqZVnau)-OERravu9Cf`G_b?5rE6*m_SICh%V)61+{_1>qHv$ovMV!zP z-N=%|QOzFR2R-2kCBdVh`}s`Shj=ibffe$p$Ss2w8qbO=TCYw#rIXoZ1N-*1(Gl8= z(D8qq60rhPwF6?26*yp~ z&MbmGobQgZ&vJK#NjP37naJ01-n*gHEbdGl6*oGjvTP7QK6cqtWRa0nrlY*1j z!MhzF^rgVgo1HRusm_kw1>PiZl;o`lV|U#I8$qvKP%{AkjSXnK(={@RzA^Dm(bbrZ z!#*z%Xs>;stePwEvJNkBwUxLri|ldOg(NUmrxHQ2D3j4VI&2OlWN*5Ny(EvDggoy| ze2AfL#Q@RO;VgU35^Z1cs5-pkkkoYqmZnB3ml^BTiG=OvEt<`0s%o?9t(n?IrCF>j z-~x45>;d~SmSGD&QKLv z{5d;kZjNf^xYNl}S79(c%7?|Yi-f+!;dAhbhf;g+y&jL@uE%XDg);c-5d$cug&fCz1OB(d<2Vj=O`}sRK`;Tk%}F3(u{0;;A$E%$rD%`ffZ)-i+F*HQRvQrrN}~%`jxanG83J8zAjE{;e(#UVQK@1GI$O$F_*1MYKxe z2`VIREMeNwDkJT2`oPHc;Mw+eNZ*beEqyI?8EG?y(B8(#b7XqF!?VI|@Thw>b6~wxM%ap;j^InnyYV!> z2ef(gQxv`lyaCWF@>S>)xVdiQzumQ}13j~ri=fX#hQxWC6Buz;G_`s#uv%e~a>zzniP%FbwZALQjV#8z_% zbr#0OBgM?k?~~acb)}w$V#X$L=G8QWd9{Tz+STm@f98?~*5y@G>W8_3X7(>Y&|o%7q%?+Luy63Yc;~ZX>kPaD_w%8PbAO^yoDr?=R(p#i!m}>v2d+t zG5lkRo_k-z*h!eRQ!uNgWeaJO=sE_;{I?%ca@ z-7c9YwrJc>DVi8t=osd-jEQUplr7iyfsQ>kuD?`^2+t&2yz~+1fz|U5nQo4~V+&?r z1V8J*6`o)Q*DObi4AP_S4_!DNHUVjdr)k|Hty{{iwHYNoEz-NH*Djn6JC&!_^491Q z7+-YRS_=sDtGPt=0wp${*uvz+|13~Per=AVRMsIeMKlyyoq zrBSp9wbpn(2ljth=QF3rqozD7%Y}oQbBgsqstmp*{@M)Ypn9pof{u6Z)-oLlU90e_ z#S@2+_wjtZp)Qi-l8rDNZOr`y46UC_k<6Y*V9?<(Ny}tsVHjVY(cCa|5)B zxM4=MpJDI9u!cvc)`Oq^^tUd$s^@O!Umtv*^W+5izwnN|*UVh~;&I&wc#N3e3nKhk zHcq(c<(KI(Pa1%jACG{w7~Unr52kF~njlMTCWq#_(Yx)M`2xNhLD^sGJdBq(wa_ zNkK{q#{+2gaT;y*u>>p(q~U?bIGN$)KkTKEzKpyH=!p~Eha{HfqTg#mS5Sj9PZ z-V9mr%bT2mqc#V0U~B3zzwR~lD0E5jnP>w2d!lpZ%<({ZzJ#t}UiqxAu%~7z^!wGME{8ZH6?2C^- z2o|yNKaPRL_@^*RWDlZJ*YQRfm^~uZk4gGCqzak|-5-sOKZzV#9e*-xg2^Mg&a{3o z4`2`hyoImD$G@S(d&UbPn^`IGW(?NPqlx>QtoN!KF@ zFD7^VY;62*W8*IcOiz6L$MNxh)TK9+z8#H6qW;sD?|WzLd%<-+sBHY#;2n(yOdm$d zW5)Q=71z8DE%@UTJb{`&WSZzKUJnKsBKn#$2i019BEq_yi1}y4CuS&6)9Q#dAN5Ph z%0$I{&SDdb6cmtQOa!9wiJ9Qo%(N7nSb`ajA`2u8&96SB$7ZkEmK-Mlk4u zoz95hT@4pudKu4v-+(ABY!SSoL5CG&x+oTCPSea<4JJFWL7PjJtVN%TU;PPUJ=9|H zm203Fv{wScay+K#h0#QHtXe-br~9FJofi+3(51%4nI4VaENionzb-bnpz22>c-j zsz9WxI!62bK_lT|O|sa2KYRx3cfMi(auy|mI*cg7mXAMG&2mXE5uu8r0&2$)nt2V% zWMhp|bF^tXEwWA{gt@?I;}ceFA{&9Q6W8;yjm4Uyu<{5*g^Vyc^dt)KvA$xw<|Uco z6Mq719kJjdO=(u6c!^cx`tl6%e7VyYpBQmxIy$RXcjvfNDJC$N=4##`&x`4iULEU-W^Y$# z1{4)iV0pb^y}&umVshvw7 z-G-~+dTx~{*Cd2Gs!^c)whxS+EuR`SikBauC7wE!NUUsIi5K*jXmr6PgKN|2wu{%a ztV~-2EvpAEwp!M#uvWBK7g?)T@6WVZYtncPKCF?s0>7z-ADBA;;fn%qd-$tN{7X6g zdc!U!J-W@#m*3C9WhXA;gcek#zjdyoJO{`-Z^HL_q8)vmeNX-C%U{`Y*YWKidEZwb z`|+BU4{)2ob$jtV4v(G^eZ{d%*4|ql*j{_!z+QP?R>8H7W(LsczuD(IH&+Jqf4H2e zz}2PF-!re^_TkR8>xhMG^}KpZ%d+HI3{$+Zh!Ptsr2pefI^Kj7)s8nIhrN$aRtcLo z;WlV`{O~k*Za>b+qz`i;`XIjdjT7GZWk`K`ZzFnHRSV*@&c8r&4Wj*hNcnEC54T5r z)3*<~x(j5&C%r#E$MKW;GDb0xU&8?8En~P&eL9h8;L7oE>CUMerwh5WMBN3_svos{ z7gE4^U)^)@jfwi4_Tr^=@ZdWFK2P#_dn%__Ac`h2wTi4)<3<4PgVy8s!n87dCn9sa zSRs5Ww_V)N)H^x;I|cr#w%4F7pKjF+8Mj#>=P*8t@t6CGf}TfLx((vn$@0zTG<~#! z=Mj7fC*3&OZbf+r8o*N~oGeChe&G=h;T(ap;WW4e-m^{MXC?YyiQj}G>J%BayX{z8 z%&nxa^1a-f%CcH?)(akdpE)MCR+UjqudCIftI2K7*Vy^`S|e@Rp;JCFjbO%d7;ysD zGFj8-xBK~*zq0=FBO|#4o{jP4`-TPBE*2#4ewN(XZ&-i}`<68e5`|(qpGo6A8*9UY zqgG+T<(EZ*>(lPLCJ8Xe7d9*ybMos7ctV9&ZCXaMgN|LW_ZM3R?U8lq!bt1k6$=t0 z>3nuSo*|dEO6d)(5{WXi(&L{=67dGMAd$!JxnV)iQ9L-s+n4g-r8PY|x?s8DP;|!l ziSd5>Ey}ZUfwV*41@~c;3j^b*XWdo?kDLzUiP(@;c#B+DmAEGGsqleI9~|RHeew!# zBF8WCZdj1UGpoZkp1ChbjAhk>>J1C_<3Xq84oa9TpGKOJ=*uU`zJ7UG2_RU%yfi}q XV9@^^KBMmc8G?&||Nr@)r-A + + + + + + + + + + + + + diff --git a/bin/Debug/IPMonitor.pdb b/bin/Debug/IPMonitor.pdb new file mode 100644 index 0000000000000000000000000000000000000000..70502bf86a2ae0bdc41e00503441347d8a83b4d1 GIT binary patch literal 71168 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 M;=Cux|F8xAKfM#eXaE2J literal 0 HcmV?d00001 diff --git a/bin/Debug/IPMonitor.vshost.exe b/bin/Debug/IPMonitor.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..c0dfecc9d7dea88e869ba6880671b1e73d600030 GIT binary patch literal 24224 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 OJz7^ literal 0 HcmV?d00001 diff --git a/bin/Debug/IPMonitor.vshost.exe.config b/bin/Debug/IPMonitor.vshost.exe.config new file mode 100644 index 0000000..ee8d2ae --- /dev/null +++ b/bin/Debug/IPMonitor.vshost.exe.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bin/Debug/IPMonitor.vshost.exe.manifest b/bin/Debug/IPMonitor.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/bin/Debug/IPMonitor.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bin/Debug/ipaddress.txt b/bin/Debug/ipaddress.txt new file mode 100644 index 0000000..0a3593b --- /dev/null +++ b/bin/Debug/ipaddress.txt @@ -0,0 +1 @@ +67.191.114.201 diff --git a/bin/Debug/ipmonitor.log b/bin/Debug/ipmonitor.log new file mode 100644 index 0000000..922fcd2 --- /dev/null +++ b/bin/Debug/ipmonitor.log @@ -0,0 +1 @@ +[LOCAL][Thread=9][TRACE.DEBUG][3/13/2024 04:32:56 PM] [IPMonitor.Program::WriteFile(strPathFileName,ipAddress)]Creating address file:ipaddress.txt diff --git a/bin/Release/20240313061456PMipmonitor.log b/bin/Release/20240313061456PMipmonitor.log new file mode 100644 index 0000000..40200af --- /dev/null +++ b/bin/Release/20240313061456PMipmonitor.log @@ -0,0 +1 @@ +[LOCAL][Thread=1][TRACE.DEBUG][3/13/2024 6:10:56 PM] [IPMonitor.Program::WriteFile(strPathFileName,ipAddress)]Creating address file:ipaddress.txt diff --git a/bin/Release/IPMonitor.exe b/bin/Release/IPMonitor.exe new file mode 100644 index 0000000000000000000000000000000000000000..1dc6c13b278f5dcd1a1cee1f9768b93f69b999b0 GIT binary patch literal 26624 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 XV9@^^KBMmc8G?&||Nr@)r-A + + + + + + + + + + + + + diff --git a/bin/Release/IPMonitor.pdb b/bin/Release/IPMonitor.pdb new file mode 100644 index 0000000000000000000000000000000000000000..70502bf86a2ae0bdc41e00503441347d8a83b4d1 GIT binary patch literal 71168 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 M;=Cux|F8xAKfM#eXaE2J literal 0 HcmV?d00001 diff --git a/bin/Release/IPMonitor.vshost.exe b/bin/Release/IPMonitor.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..c0dfecc9d7dea88e869ba6880671b1e73d600030 GIT binary patch literal 24224 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 OJz7^ literal 0 HcmV?d00001 diff --git a/bin/Release/IPMonitor.vshost.exe.config b/bin/Release/IPMonitor.vshost.exe.config new file mode 100644 index 0000000..06058de --- /dev/null +++ b/bin/Release/IPMonitor.vshost.exe.config @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bin/Release/IPMonitor.vshost.exe.manifest b/bin/Release/IPMonitor.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/bin/Release/IPMonitor.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bin/Release/ipaddress.txt b/bin/Release/ipaddress.txt new file mode 100644 index 0000000..0a3593b --- /dev/null +++ b/bin/Release/ipaddress.txt @@ -0,0 +1 @@ +67.191.114.201 diff --git a/bin/Release/ipmonitor.log b/bin/Release/ipmonitor.log new file mode 100644 index 0000000..680bcce --- /dev/null +++ b/bin/Release/ipmonitor.log @@ -0,0 +1 @@ +[LOCAL][Thread=1][TRACE.DEBUG][3/13/2024 6:14:56 PM] [IPMonitor.Program::WriteFile(strPathFileName,ipAddress)]Creating address file:ipaddress.txt diff --git a/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..1dfb5e85933cdd0e51ea26d31062f9ff3862f5e3 GIT binary patch literal 6652 zcmeHMZBrXJ5VpZ67($CFB?%fYGAlNmlx8@HY&8OC;LXRwFJcd}8rJGqh$ z<1+k~{(??_V!L~`&%C!Ed^3Eo7}kfh+Gn-elOHXycq|tC2O552dpHKde$Oo_lxS#k zpDUj_W$oKsm^tCP!Yk%?)5boNiVJT$yKH9gCvD_>NBfd(d(798I%#9iuRGlOiFGRC zn0edv%t~XevC+t8?X?VDp%VzXc?;6_K6h-yD|(tq(fUQwR*OlqL}k%y`C2`K$xo=` zh&Ho#lwxk(>Fl0r=Al<=2DEd+Yw%`)J8Z$Cp3QBlSzi--)l$QEoPwk-YYTbYAF9wg zjLlyfD+tGi^*+bW3YAT!!)ax|u9*G+M$}8*^n_%2)}RoIqNgZ4@i>8Bkbh2;J4!Pbk`8vw(wIi( z56okdTjo0m!N=^u!5u1)=lj(0*&gNc<8r84){=Y8wBagCNQc)4Z_eufesMN7=$f^* zp50nmWtq*bTKX2eEgvTDd+ ztLBH@N=OXTC#&YVxt#9v${vT@Jv}F%fTd#YZM7~u)}hj_7Wa@I0X?gV`ft@dtNTrm z3aDZQ=uC+z;hcorwZs}sG7o5wX;JHlB|k;)W_DHQcO4-q(3nRJBlOV-TqJX7 zpr`d2JSSYm9WoD3Q_!0+S28Qvt>owMcM4;NzhnW0+2)>W6XfCv({>#4ICx^GEQR64 z5RxY#jGGs`(`uPkz|zSgXmQX2e%Ay>ZUh9~cy+qD{<<12*yzO)NbH5EhpV|9|7v$Z z14T1eKBBS}__+jdG!nQz&kJCl0*o68Oh`oWj^j&;bTxo{29S2Nkdg&R&jINqN~Ap1 z)I?EcdT_N1u)m0Ul>s(pv;jzmQLYj}UI2&{CCIO?6U6OH06K~q=pFZdN3;ZSrui+t4fEr~SX>7o4FFF%PUVE)Kg)9wQ z3dt_|OTGc|_$+s0(e#|Wg3-CNAGxQodRUN9qlK5}oVn&CM~L)R@Vv(CL9rA{GJ#w!5%4n#D&K};}Ri)5n<)S@;}-xM-&Y!8Cn Y#jVFS{@3WR`mcXMj1H@?h+Lcg7x literal 0 HcmV?d00001 diff --git a/obj/Debug/IPMonitor.csproj.FileListAbsolute.txt b/obj/Debug/IPMonitor.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..88e7acc --- /dev/null +++ b/obj/Debug/IPMonitor.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +C:\Visual Studio\IPMonitor\bin\Debug\IPMonitor.exe.config +C:\Visual Studio\IPMonitor\bin\Debug\IPMonitor.exe +C:\Visual Studio\IPMonitor\bin\Debug\IPMonitor.pdb +C:\Visual Studio\IPMonitor\obj\Debug\IPMonitor.csprojResolveAssemblyReference.cache +C:\Visual Studio\IPMonitor\obj\Debug\IPMonitor.exe +C:\Visual Studio\IPMonitor\obj\Debug\IPMonitor.pdb +C:\boneyard\IPMonitor\bin\Debug\IPMonitor.exe.config +C:\boneyard\IPMonitor\obj\Debug\IPMonitor.exe +C:\boneyard\IPMonitor\obj\Debug\IPMonitor.pdb diff --git a/obj/Debug/IPMonitor.csprojResolveAssemblyReference.cache b/obj/Debug/IPMonitor.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..d7696cb67ba3809033a211c29374e58c2c010173 GIT binary patch literal 1928 zcmcIk?M@Rx6kS?c+NEIq!Y|Y{@rMMmX{jKZ5Th#uA`r9<@kbLf-MtGFW_NIAwt~;( zd-wpphVP*FE>Orw{I}cWbf$Yc=YGsR&Y0skfAFDidKx8!{cRp9sby^Z_Zb(F-(&hn z`@{C4-&*kYKxr=1Roc;K!3#2BG6kzCWJWQu;O%Au!NZSm+LK3+t`1tAcqx7rx7*QD zi*;Cq)Sg{0(mmA%lCEI}h*gidfP7b;J$vN`QV0kQhM@forVkAp2%xa*WrT5p|57KA z;BHA4t+UWbHF2I#Es)7EQ=po3XdollRdUE9P&N9Y%fG`oW~8foOk|)Pr(AX_mC4$5 zTALSVJ-;UA&414S{b}XxBt_-kM68b!R1li^3K!KXLKwX1V@L;zCEhw#MSCw!R+i`b zpCJYXX$amsts%k6gYJ)t+h0dMe3R;^@9(VjE_cJ1{<6Q=KM(LrBK$~*DiwznB9!P* zD!~W2ObunCLS#k-SCA{!QE6DD(g$XkPtXOkc48o<;n2CZi`x4|YE#GP;_yO5Mt8^$ zx`#|1=Q%Y{E-6HA)VVa~2bp3t;ko1#N)~!q@)lApr%~y!$mD3uws`uL@@mqE)Ag+1 zAZQZg^M8w0w+ZeL+$ESHxQ9?7^896Mt{U`N1#`EYCx^&aWE~B`wAq#sk2ypQc4iZ& zJ7^4z2#z6*&_2*L8aiagfXdxvT4kx>37p&GRD9th^f#weDvgz<$aS4y?&r*pUmLFL zR`281MPq6ComQv)+8v{$DB!E42R4b4wn-0d5*5WJJ+etuG@CSQlc=aR>9I|sqT8e= THi?>Ilb+fnYMM>*EYjp({l+&% literal 0 HcmV?d00001 diff --git a/obj/Debug/IPMonitor.exe b/obj/Debug/IPMonitor.exe new file mode 100644 index 0000000000000000000000000000000000000000..1dc6c13b278f5dcd1a1cee1f9768b93f69b999b0 GIT binary patch literal 26624 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 M;=Cux|F8xAKfM#eXaE2J literal 0 HcmV?d00001 diff --git a/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29