added back the server call home

This commit is contained in:
Brett Hewitson 2021-12-20 12:14:19 +10:00
parent 93d273c133
commit fc6f309178
11 changed files with 152 additions and 6 deletions

View file

@ -266,6 +266,12 @@
<setting name="DiscordBotStatusCheckTime" serializeAs="String">
<value>10</value>
</setting>
<setting name="ServerCallUrlFormat" serializeAs="String">
<value>http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/</value>
</setting>
<setting name="ServerCallUrlDelay" serializeAs="String">
<value>12</value>
</setting>
</ServerManagerTool.Config>
<ServerManagerTool.Common.CommonConfig>
<setting name="DefaultSteamAPIKey" serializeAs="String">
@ -636,6 +642,9 @@
<setting name="LoggingMaxArchiveDays" serializeAs="String">
<value>30</value>
</setting>
<setting name="ServerCallUrlLast" serializeAs="String">
<value>2000-01-01</value>
</setting>
</ServerManagerTool.Config>
</userSettings>
</configuration>

View file

@ -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<FileTarget>();
foreach (var fileTarget in fileTargets)
foreach (var fileTarget in LogManager.Configuration.AllTargets.OfType<FileTarget>())
{
var fileName = Path.GetFileNameWithoutExtension(fileTarget.FileName.ToString());
fileTarget.FileName = Path.Combine(logDir, $"{fileName}.log");

View file

@ -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;
}
}
}
}

View file

@ -614,5 +614,14 @@
<Setting Name="LoggingMaxArchiveDays" Type="System.Int32" Scope="User">
<Value Profile="(Default)">30</Value>
</Setting>
<Setting Name="ServerCallUrlFormat" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://servermanagers.azurewebsites.net/api/server/call/{0}/{1}/</Value>
</Setting>
<Setting Name="ServerCallUrlDelay" Type="System.Int32" Scope="Application">
<Value Profile="(Default)">12</Value>
</Setting>
<Setting Name="ServerCallUrlLast" Type="System.DateTime" Scope="User">
<Value Profile="(Default)">2000-01-01</Value>
</Setting>
</Settings>
</SettingsFile>

View file

@ -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)