Refactor.

This commit is contained in:
2024-03-14 20:17:42 -04:00
parent 041caaa136
commit 5dfe2842ff
17 changed files with 124 additions and 37 deletions

View File

@@ -2,7 +2,7 @@
<configuration>
<appSettings>
<add key="poll_time_ms" value="300000"/>
<add key="notify_time_ms" value="4320000"/>
<add key="notify_time_ms" value="10800000"/>
<add key="sms_smtpaddress" value="smtp.gmail.com"/>
<add key="sms_smsusername" value="skessler1964@gmail.com"/>
<add key="sms_smspassword" value="xjfo isnf gmyi zovr"/>

View File

@@ -22,6 +22,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>

Binary file not shown.

View File

@@ -13,54 +13,133 @@ namespace IPMonitor
{
class Program
{
//public static String GetPublicIPAddress()
//{
// try
// {
// 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;
// }
// catch(Exception exception)
// {
// String message = String.Format("[IPMonitor::GetPublicIPAddress] Exception:{0}",exception.ToString());
// MDTrace.WriteLine(LogLevel.DEBUG,message);
// SendSMSEmail("IPMonitor encountered an issue retrieving.");
// return null;
// }
//}
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 MAX_RETRIES=5;
int TIMEOUT_BETWEEN_ATTEMPTS=30000;
try
{
String address = null;
String request="http://checkip.dyndns.org/";
for(int index=0;index<MAX_RETRIES && null==address;index++)
{
address = GetHttpRequest(request);
if(null==address)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::GetPublicIPAddress] Request failed {0}. Will retry after {1} (ms) ",request,TIMEOUT_BETWEEN_ATTEMPTS));
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
}
}
int first = address.IndexOf("Address: ") + 9;
int last = address.LastIndexOf("</body>");
address = address.Substring(first, last - first);
int first = address.IndexOf("Address: ") + 9;
int last = address.LastIndexOf("</body>");
address = address.Substring(first, last - first);
return address;
return address;
}
catch(Exception exception)
{
String message = String.Format("[IPMonitor::GetPublicIPAddress] Exception:{0}",exception.ToString());
MDTrace.WriteLine(LogLevel.DEBUG,message);
SendSMSEmail("IPMonitor encountered an issue retrieving.");
return null;
}
}
public static String GetHttpRequest(String strRequest)
{
try
{
WebRequest request = WebRequest.Create(strRequest);
using (WebResponse response = request.GetResponse())
using (StreamReader stream = new StreamReader(response.GetResponseStream()))
{
return stream.ReadToEnd();
}
}
catch(Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor:GetHttpRequest] failed with {0}",exception.ToString()));
return null;
}
}
public static void UpdateIPAddress(String ipAddress)
{
String strPathFileName="ipaddress.txt";
if(!File.Exists(strPathFileName))
try
{
WriteFile(strPathFileName, ipAddress);
SendSMSEmail(String.Format("IPMonitor IPAddress {0}",ipAddress));
}
else
{
String currentIPAddress=ReadFile(strPathFileName);
if(null!=currentIPAddress && !currentIPAddress.Equals(ipAddress))
String strPathFileName="ipaddress.txt";
if(!File.Exists(strPathFileName))
{
WriteFile(strPathFileName,ipAddress);
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));
}
else if(null==currentIPAddress)
{
SendSMSEmail("IPMonitor "+ipAddress+ ". IPMonitor encountered an issue reading the IPAddress file.");
}
}
}
catch(Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::UpdateIPAddress] Exception:{0}",exception.ToString()));
}
}
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();
try
{
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();
}
catch(Exception exception)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::WriteFile] Exception:{0}",exception.ToString()));
return;
}
}
public static String ReadFile(String strPathFileName)
@@ -106,16 +185,17 @@ namespace IPMonitor
Profiler profiler=new Profiler();
profiler.Start();
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("[IPMonitor::Start] {0}",Directory.GetCurrentDirectory()));
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();
}
try{Thread.Sleep(interval_ms);}catch{;}
}
}
catch(Exception exception)

Binary file not shown.

View File

@@ -2,7 +2,7 @@
<configuration>
<appSettings>
<add key="poll_time_ms" value="300000"/>
<add key="notify_time_ms" value="4320000"/>
<add key="notify_time_ms" value="10800000"/>
<add key="sms_smtpaddress" value="smtp.gmail.com"/>
<add key="sms_smsusername" value="skessler1964@gmail.com"/>
<add key="sms_smspassword" value="xjfo isnf gmyi zovr"/>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -2,7 +2,7 @@
<configuration>
<appSettings>
<add key="poll_time_ms" value="300000"/>
<add key="notify_time_ms" value="4320000"/>
<add key="notify_time_ms" value="10800000"/>
<add key="sms_smtpaddress" value="smtp.gmail.com"/>
<add key="sms_smsusername" value="skessler1964@gmail.com"/>
<add key="sms_smspassword" value="xjfo isnf gmyi zovr"/>

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1,5 @@
[LOCAL][Thread=1][TRACE.DEBUG][3/13/2024 6:14:56 PM] [IPMonitor.Program::WriteFile(strPathFileName,ipAddress)]Creating address file:ipaddress.txt
[LOCAL][Thread=1][TRACE.DEBUG][3/14/2024 7:08:13 AM] [IPMonitor.Program::Main(args)][IPMonitor::Start] C:\boneyard\IPMonitor\bin\Release
[LOCAL][Thread=1][TRACE.DEBUG][3/14/2024 10:18:48 AM] [IPMonitor.Program::GetHttpRequest(strRequest)][IPMonitor:GetHttpRequest] failed with System.Net.WebException: The remote server returned an error: (502) Bad Gateway.
at System.Net.HttpWebRequest.GetResponse()
at IPMonitor.Program.GetHttpRequest(String strRequest) in c:\boneyard\IPMonitor\Program.cs:line 82
[LOCAL][Thread=1][TRACE.DEBUG][3/14/2024 10:18:48 AM] [IPMonitor.Program::GetPublicIPAddress()][IPMonitor::GetPublicIPAddress] Request failed http://checkip.dyndns.org/. Will retry after 30000 (ms)

View File

@@ -5,5 +5,7 @@ C:\Visual Studio\IPMonitor\obj\Debug\IPMonitor.csprojResolveAssemblyReference.ca
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\bin\Debug\IPMonitor.exe
C:\boneyard\IPMonitor\bin\Debug\IPMonitor.pdb
C:\boneyard\IPMonitor\obj\Debug\IPMonitor.exe
C:\boneyard\IPMonitor\obj\Debug\IPMonitor.pdb

Binary file not shown.

Binary file not shown.