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