diff --git a/.vscode/launch.json b/.vscode/launch.json
index 17671b1..9a63b8e 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -25,6 +25,18 @@
"cwd": "${workspaceFolder}/MarketDataServer",
"console": "internalConsole",
"stopAtEntry": false
- }
+ },
+ {
+ "name": ".NET Core Launch (ipmonitor)",
+ "type": "coreclr",
+ "request": "launch",
+ "preLaunchTask": "build",
+ "program": "${workspaceFolder}/IPMonitor/bin/Debug/net8.0/ipmonitor.dll",
+ "args": ["IPMONITOR","/FORCE:true"],
+ "cwd": "${workspaceFolder}/IPMonitor",
+ "console": "internalConsole",
+ "stopAtEntry": false
+ },
+
]
}
\ No newline at end of file
diff --git a/IPMonitor/Services/MainService.cs b/IPMonitor/Services/MainService.cs
index 82ca0c2..a537dd9 100755
--- a/IPMonitor/Services/MainService.cs
+++ b/IPMonitor/Services/MainService.cs
@@ -153,13 +153,20 @@ namespace IPMonitor
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
continue;
}
- address = GetHttpRequest(request);
- if(null==address)
+ HttpNetResponse response = HttpNetRequest.GetRequestNoEncodingV7(request);
+ if(!response.Success)
{
- MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Request failed {0}. Will retry after {1} (ms) ",request,TIMEOUT_BETWEEN_ATTEMPTS));
+ MDTrace.WriteLine(LogLevel.DEBUG,$"Request {request} failed with {response.StatusCode}. Will retry after {TIMEOUT_BETWEEN_ATTEMPTS} (ms) ");
try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
continue;
}
+ address = response.ResponseString;
+ if(String.IsNullOrEmpty(address))
+ {
+ MDTrace.WriteLine(LogLevel.DEBUG,$"Request {request} received an empty response. Will retry after {TIMEOUT_BETWEEN_ATTEMPTS} (ms) ");
+ try{Thread.Sleep(TIMEOUT_BETWEEN_ATTEMPTS);}catch{;}
+ continue;
+ }
}
if(null==address)
{
@@ -189,31 +196,6 @@ namespace IPMonitor
}
}
- ///
- /// Sends an HttpRequest and receives the response string. Used by GetPublicIPAddress
- ///
- ///
- 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("Request {strRequest} Failed with {1}",exception.ToString()));
- return null;
- }
- finally
- {
- }
- }
-
///
/// Updates ZoneEdit with the given ipaddress.
///
@@ -342,6 +324,14 @@ namespace IPMonitor
String smsUserName = GlobalConfig.Instance.Configuration["sms_smsusername"];
String smsPassword = GlobalConfig.Instance.Configuration["sms_smspassword"];
String[] smsRecipients = GlobalConfig.Instance.Configuration["sms_smsrecipients"].Split(',');
+ bool sendNotifications = bool.Parse(GlobalConfig.Instance.Configuration["send_notifications"]);
+
+ if(!sendNotifications)
+ {
+ MDTrace.WriteLine(LogLevel.DEBUG,$"Not sending Message '{message}' to {GlobalConfig.Instance.Configuration["sms_smsrecipients"]} because notifications are disabled.");
+ return;
+ }
+
SMSClient.SendSMSEmail(message, smsUserName, smsRecipients, smsSMTPAddress, smsUserName, smsPassword);
}
}
diff --git a/IPMonitor/appsettings.json b/IPMonitor/appsettings.json
index 13fe206..8565848 100644
--- a/IPMonitor/appsettings.json
+++ b/IPMonitor/appsettings.json
@@ -1,4 +1,5 @@
{
+"send_notifications" : "false",
"working_folder" : "/ipaddress",
"sms_smtpaddress" : "smtp.gmail.com",
"sms_smsusername" : "skessler1964@gmail.com",
diff --git a/MarketData/MarketDataLib/MarketDataLib.csproj b/MarketData/MarketDataLib/MarketDataLib.csproj
index f9c09b2..f7acd58 100755
--- a/MarketData/MarketDataLib/MarketDataLib.csproj
+++ b/MarketData/MarketDataLib/MarketDataLib.csproj
@@ -11,8 +11,7 @@
..\assemblies\HtmlAgilityPack.dll
-
-
+
diff --git a/README.md b/README.md
index 07ed61e..663e70c 100644
--- a/README.md
+++ b/README.md
@@ -105,6 +105,6 @@ CRON_DIR_IPMONITOR=/opt/MarketData/IPMonitor
0 0 15 * * cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATEFUNDAMENTALS > /dev/null 2>&1
0 0 15 * * cd $CRON_DIR ; /opt/MarketData/MarketData/mk UPDATEHISTORICAL > /dev/null 2>&1
15 0 15 * * cd $CRON_DIR ; /opt/MarketData/MarketData/mk CALCSTICKER /WAITFORCOMPLETION:UPDATEFINANCIALSTATEMENTS,UPDATEFUNDAMENTALS,UPDATEHISTORICAL > /dev/null 2>&1
-0 * * * * cd $CRON_DIR_IPMONITOR ; /opt/MarketData/IPMonitor/ipmonitor /FORCE:true > /dev/null 2>&1
+0 * * * * cd $CRON_DIR_IPMONITOR ; /opt/MarketData/IPMonitor/ipmonitor IPMONITOR /FORCE:true > /dev/null 2>&1
10,20,30,40,50 * * * * cd $CRON_DIR_IPMONITOR ; /opt/MarketData/IPMonitor/ipmonitor > /dev/null 2>&1