From fc6f309178181bd959157ebe317353062b2c136b Mon Sep 17 00:00:00 2001 From: Brett Hewitson Date: Mon, 20 Dec 2021 12:14:19 +1000 Subject: [PATCH] added back the server call home --- src/ARKServerManager/App.config | 9 ++++++ src/ARKServerManager/App.xaml.cs | 25 ++++++++++++++-- src/ARKServerManager/Config.Designer.cs | 30 +++++++++++++++++++ src/ARKServerManager/Config.settings | 9 ++++++ src/ARKServerManager/Lib/ServerApp.cs | 4 +++ src/ConanServerManager/App.config | 9 ++++++ src/ConanServerManager/App.xaml.cs | 25 ++++++++++++++-- src/ConanServerManager/Config.Designer.cs | 30 +++++++++++++++++++ src/ConanServerManager/Config.settings | 9 ++++++ src/ConanServerManager/Lib/ServerApp.cs | 4 +++ .../Utils/NetworkUtils.cs | 4 +-- 11 files changed, 152 insertions(+), 6 deletions(-) diff --git a/src/ARKServerManager/App.config b/src/ARKServerManager/App.config index 0bd56321..f5c3098e 100644 --- a/src/ARKServerManager/App.config +++ b/src/ARKServerManager/App.config @@ -350,6 +350,12 @@ 10 + + http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/ + + + 12 + @@ -861,6 +867,9 @@ 30 + + 2000-01-01 + diff --git a/src/ARKServerManager/App.xaml.cs b/src/ARKServerManager/App.xaml.cs index 55804c4d..0b72a1f0 100644 --- a/src/ARKServerManager/App.xaml.cs +++ b/src/ARKServerManager/App.xaml.cs @@ -196,6 +196,20 @@ namespace ServerManagerTool } } + private async Task CallHomeAsync() + { + try + { + var publicIP = await NetworkUtils.DiscoverPublicIPAsync(); + var url = new Uri(string.Format(Config.Default.ServerCallUrlFormat, Config.Default.ServerManagerCode, publicIP)); + await NetworkUtils.PerformCallToAPIAsync(url); + } + catch (Exception ex) + { + Debug.WriteLine($"Failed calling home to API.\r\n{ex.Message}"); + } + } + public static void DiscoverMachinePublicIP(bool forceOverride) { if (forceOverride || string.IsNullOrWhiteSpace(Config.Default.MachinePublicIP)) @@ -509,6 +523,14 @@ namespace ServerManagerTool { StartDiscordBot(); } + + if (Config.Default.ServerCallUrlLast.AddHours(Config.Default.ServerCallUrlDelay) < DateTime.Now) + { + CallHomeAsync().DoNotWait(); + + Config.Default.ServerCallUrlLast = DateTime.Now; + Config.Default.Save(); + } } protected override void OnExit(ExitEventArgs e) @@ -538,8 +560,7 @@ namespace ServerManagerTool LogManager.Configuration.Variables["logDir"] = logDir; - var fileTargets = LogManager.Configuration.AllTargets.OfType(); - foreach (var fileTarget in fileTargets) + foreach (var fileTarget in LogManager.Configuration.AllTargets.OfType()) { var fileName = Path.GetFileNameWithoutExtension(fileTarget.FileName.ToString()); fileTarget.FileName = Path.Combine(logDir, $"{fileName}.log"); diff --git a/src/ARKServerManager/Config.Designer.cs b/src/ARKServerManager/Config.Designer.cs index b5f70642..0da6fab5 100644 --- a/src/ARKServerManager/Config.Designer.cs +++ b/src/ARKServerManager/Config.Designer.cs @@ -3048,5 +3048,35 @@ namespace ServerManagerTool { this["LoggingMaxArchiveDays"] = value; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/")] + public string ServerCallUrlFormat { + get { + return ((string)(this["ServerCallUrlFormat"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("12")] + public int ServerCallUrlDelay { + get { + return ((int)(this["ServerCallUrlDelay"])); + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("2000-01-01")] + public global::System.DateTime ServerCallUrlLast { + get { + return ((global::System.DateTime)(this["ServerCallUrlLast"])); + } + set { + this["ServerCallUrlLast"] = value; + } + } } } diff --git a/src/ARKServerManager/Config.settings b/src/ARKServerManager/Config.settings index fdc3cb7d..5ee0c640 100644 --- a/src/ARKServerManager/Config.settings +++ b/src/ARKServerManager/Config.settings @@ -839,5 +839,14 @@ 30 + + http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/ + + + 12 + + + 2000-01-01 + \ No newline at end of file diff --git a/src/ARKServerManager/Lib/ServerApp.cs b/src/ARKServerManager/Lib/ServerApp.cs index c47f3610..978e81bd 100644 --- a/src/ARKServerManager/Lib/ServerApp.cs +++ b/src/ARKServerManager/Lib/ServerApp.cs @@ -2212,7 +2212,11 @@ namespace ServerManagerTool.Lib private static Logger GetLogger(string logFilePath, string logType, string logName) { +#if DEBUG return GetLogger(logFilePath, logType, logName ?? string.Empty, LogLevel.Debug, LogLevel.Fatal); +#else + return GetLogger(logFilePath, logType, logName ?? string.Empty, LogLevel.Info, LogLevel.Fatal); +#endif } private static Logger GetLogger(string logFilePath, string logType, string logName, LogLevel minLevel, LogLevel maxLevel) diff --git a/src/ConanServerManager/App.config b/src/ConanServerManager/App.config index 1cbc5bc0..9f915195 100644 --- a/src/ConanServerManager/App.config +++ b/src/ConanServerManager/App.config @@ -266,6 +266,12 @@ 10 + + http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/ + + + 12 + @@ -636,6 +642,9 @@ 30 + + 2000-01-01 + \ No newline at end of file diff --git a/src/ConanServerManager/App.xaml.cs b/src/ConanServerManager/App.xaml.cs index c572e4af..c4601da4 100644 --- a/src/ConanServerManager/App.xaml.cs +++ b/src/ConanServerManager/App.xaml.cs @@ -195,6 +195,20 @@ namespace ServerManagerTool } } + private async Task CallHomeAsync() + { + try + { + var publicIP = await NetworkUtils.DiscoverPublicIPAsync(); + var url = new Uri(string.Format(Config.Default.ServerCallUrlFormat, Config.Default.ServerManagerCode, publicIP)); + await NetworkUtils.PerformCallToAPIAsync(url); + } + catch (Exception ex) + { + Debug.WriteLine($"Failed calling home to API.\r\n{ex.Message}"); + } + } + public static void DiscoverMachinePublicIP(bool forceOverride) { if (forceOverride || string.IsNullOrWhiteSpace(Config.Default.MachinePublicIP)) @@ -498,6 +512,14 @@ namespace ServerManagerTool { StartDiscordBot(); } + + if (Config.Default.ServerCallUrlLast.AddHours(Config.Default.ServerCallUrlDelay) < DateTime.Now) + { + CallHomeAsync().DoNotWait(); + + Config.Default.ServerCallUrlLast = DateTime.Now; + Config.Default.Save(); + } } protected override void OnExit(ExitEventArgs e) @@ -527,8 +549,7 @@ namespace ServerManagerTool LogManager.Configuration.Variables["logDir"] = logDir; - var fileTargets = LogManager.Configuration.AllTargets.OfType(); - foreach (var fileTarget in fileTargets) + foreach (var fileTarget in LogManager.Configuration.AllTargets.OfType()) { var fileName = Path.GetFileNameWithoutExtension(fileTarget.FileName.ToString()); fileTarget.FileName = Path.Combine(logDir, $"{fileName}.log"); diff --git a/src/ConanServerManager/Config.Designer.cs b/src/ConanServerManager/Config.Designer.cs index fecd8dcd..2910a4ef 100644 --- a/src/ConanServerManager/Config.Designer.cs +++ b/src/ConanServerManager/Config.Designer.cs @@ -2231,5 +2231,35 @@ namespace ServerManagerTool { this["LoggingMaxArchiveDays"] = value; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/")] + public string ServerCallUrlFormat { + get { + return ((string)(this["ServerCallUrlFormat"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("12")] + public int ServerCallUrlDelay { + get { + return ((int)(this["ServerCallUrlDelay"])); + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("2000-01-01")] + public global::System.DateTime ServerCallUrlLast { + get { + return ((global::System.DateTime)(this["ServerCallUrlLast"])); + } + set { + this["ServerCallUrlLast"] = value; + } + } } } diff --git a/src/ConanServerManager/Config.settings b/src/ConanServerManager/Config.settings index feee7ee3..51d5263c 100644 --- a/src/ConanServerManager/Config.settings +++ b/src/ConanServerManager/Config.settings @@ -614,5 +614,14 @@ 30 + + http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/ + + + 12 + + + 2000-01-01 + \ No newline at end of file diff --git a/src/ConanServerManager/Lib/ServerApp.cs b/src/ConanServerManager/Lib/ServerApp.cs index 36d76723..c8e104a6 100644 --- a/src/ConanServerManager/Lib/ServerApp.cs +++ b/src/ConanServerManager/Lib/ServerApp.cs @@ -2109,7 +2109,11 @@ namespace ServerManagerTool.Lib private static Logger GetLogger(string logFilePath, string logType, string logName) { +#if DEBUG return GetLogger(logFilePath, logType, logName ?? string.Empty, LogLevel.Debug, LogLevel.Fatal); +#else + return GetLogger(logFilePath, logType, logName ?? string.Empty, LogLevel.Info, LogLevel.Fatal); +#endif } private static Logger GetLogger(string logFilePath, string logType, string logName, LogLevel minLevel, LogLevel maxLevel) diff --git a/src/ServerManager.Common/Utils/NetworkUtils.cs b/src/ServerManager.Common/Utils/NetworkUtils.cs index a0e255bb..7f7cd7fc 100644 --- a/src/ServerManager.Common/Utils/NetworkUtils.cs +++ b/src/ServerManager.Common/Utils/NetworkUtils.cs @@ -168,7 +168,7 @@ namespace ServerManagerTool.Common.Utils } } - public static async Task PerformServerCallToAPI(Uri uri, IPEndPoint endpoint) + public static async Task PerformCallToAPIAsync(Uri uri) { try { @@ -179,7 +179,7 @@ namespace ServerManagerTool.Common.Utils } catch (Exception ex) { - _logger.Debug($"{nameof(PerformServerCallToAPI)} - Failed calling API for: {endpoint.Address}:{endpoint.Port}. {ex.Message}"); + _logger.Debug($"{nameof(PerformCallToAPIAsync)} - Failed calling API.\r\n{ex.Message}"); } } }