Initial Commit
This commit is contained in:
127
Program.cs
Normal file
127
Program.cs
Normal file
@@ -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("</body>");
|
||||
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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user