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}");
}
}
}