mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-06 15:17:34 +00:00
Auto Process Tweaks
This commit is contained in:
parent
e6f750c17c
commit
aa265bfbb6
11 changed files with 321 additions and 181 deletions
|
|
@ -221,7 +221,7 @@ namespace ServerManagerTool.Lib
|
|||
ExitCode = EXITCODE_NORMALEXIT;
|
||||
}
|
||||
|
||||
private void ShutdownServer(bool restartServer, bool updateServer, CancellationToken cancellationToken)
|
||||
private void ShutdownServer(bool restartServer, bool updateServer, bool steamCmdRemoveQuit, CancellationToken cancellationToken)
|
||||
{
|
||||
if (_profile == null)
|
||||
{
|
||||
|
|
@ -274,7 +274,7 @@ namespace ServerManagerTool.Lib
|
|||
try
|
||||
{
|
||||
ServerStatusChangeCallback?.Invoke(ServerStatus.Updating);
|
||||
UpgradeLocal(true, true, cancellationToken);
|
||||
UpgradeLocal(true, true, steamCmdRemoveQuit, cancellationToken);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
@ -729,7 +729,7 @@ namespace ServerManagerTool.Lib
|
|||
ExitCode = EXITCODE_SHUTDOWN_TIMEOUT;
|
||||
}
|
||||
|
||||
private void UpgradeLocal(bool validate, bool updateMods, CancellationToken cancellationToken)
|
||||
private void UpgradeLocal(bool validate, bool updateMods, bool steamCmdRemoveQuit, CancellationToken cancellationToken)
|
||||
{
|
||||
if (_profile == null)
|
||||
{
|
||||
|
|
@ -777,10 +777,12 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
}
|
||||
|
||||
var steamCmdInstallServerArgsFormat = _profile.SotFEnabled ? Config.Default.SteamCmdInstallServerArgsFormat_SotF : Config.Default.SteamCmdInstallServerArgsFormat;
|
||||
var steamCmdArgs = String.Format(steamCmdInstallServerArgsFormat, _profile.InstallDirectory, string.Empty, validate ? "validate" : string.Empty);
|
||||
var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, _profile.InstallDirectory, string.Empty, _profile.SotFEnabled ? Config.Default.AppIdServer_SotF : Config.Default.AppIdServer, string.Empty, validate ? "validate" : string.Empty);
|
||||
var workingDirectory = Config.Default.DataDir;
|
||||
|
||||
if (steamCmdRemoveQuit)
|
||||
SteamCMDProcessWindowStyle = ProcessWindowStyle.Normal;
|
||||
|
||||
success = ServerUpdater.UpgradeServerAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, _profile.InstallDirectory, Config.Default.SteamCmdRedirectOutput ? (DataReceivedEventHandler)serverOutputHandler : null, cancellationToken, SteamCMDProcessWindowStyle).Result;
|
||||
if (success && downloadSuccessful)
|
||||
{
|
||||
|
|
@ -942,20 +944,10 @@ namespace ServerManagerTool.Lib
|
|||
LogProfileMessage("Starting mod download.\r\n");
|
||||
|
||||
steamCmdArgs = string.Empty;
|
||||
if (_profile.SotFEnabled)
|
||||
{
|
||||
if (Config.Default.SteamCmd_UseAnonymousCredentials)
|
||||
steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat_SotF, Config.Default.SteamCmd_AnonymousUsername, modId);
|
||||
else
|
||||
steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat_SotF, Config.Default.SteamCmd_Username, modId);
|
||||
}
|
||||
if (Config.Default.SteamCmd_UseAnonymousCredentials)
|
||||
steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, _profile.SotFEnabled ? Config.Default.AppId_SotF : Config.Default.AppId, modId);
|
||||
else
|
||||
{
|
||||
if (Config.Default.SteamCmd_UseAnonymousCredentials)
|
||||
steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, modId);
|
||||
else
|
||||
steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, modId);
|
||||
}
|
||||
steamCmdArgs = SteamUtils.BuildSteamCmdArguments(steamCmdRemoveQuit, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, _profile.SotFEnabled ? Config.Default.AppId_SotF : Config.Default.AppId, modId);
|
||||
|
||||
modSuccess = ServerUpdater.UpgradeModsAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, Config.Default.SteamCmdRedirectOutput ? modOutputHandler : null, cancellationToken, SteamCMDProcessWindowStyle).Result;
|
||||
if (modSuccess && downloadSuccessful)
|
||||
|
|
@ -1259,7 +1251,7 @@ namespace ServerManagerTool.Lib
|
|||
{
|
||||
// perform a steamcmd validate to confirm all the files
|
||||
LogProfileMessage("Validating server files (*new*).");
|
||||
UpgradeLocal(true, false, CancellationToken.None);
|
||||
UpgradeLocal(true, false, false, CancellationToken.None);
|
||||
LogProfileMessage("Validated server files (*new*).");
|
||||
}
|
||||
|
||||
|
|
@ -1606,9 +1598,9 @@ namespace ServerManagerTool.Lib
|
|||
// update the mod cache
|
||||
var steamCmdArgs = string.Empty;
|
||||
if (Config.Default.SteamCmd_UseAnonymousCredentials)
|
||||
steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, modId);
|
||||
steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_AnonymousUsername, Config.Default.AppId, modId);
|
||||
else
|
||||
steamCmdArgs = string.Format(Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, modId);
|
||||
steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallModArgsFormat, Config.Default.SteamCmd_Username, Config.Default.AppId, modId);
|
||||
var workingDirectory = Config.Default.DataDir;
|
||||
|
||||
var success = ServerUpdater.UpgradeModsAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, Config.Default.SteamCmdRedirectOutput ? modOutputHandler : null, CancellationToken.None, SteamCMDProcessWindowStyle).Result;
|
||||
|
|
@ -1727,8 +1719,7 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
// update the server cache
|
||||
var validate = Config.Default.AutoUpdate_ValidateServerFiles;
|
||||
var steamCmdInstallServerArgsFormat = Config.Default.SteamCmdInstallServerArgsFormat;
|
||||
var steamCmdArgs = String.Format(steamCmdInstallServerArgsFormat, cacheFolder, steamCmdInstallServerBetaArgs, validate ? "validate" : string.Empty);
|
||||
var steamCmdArgs = SteamUtils.BuildSteamCmdArguments(false, Config.Default.SteamCmdInstallServerArgsFormat, Config.Default.SteamCmd_AnonymousUsername, cacheFolder, Config.Default.AppIdServer, steamCmdInstallServerBetaArgs.ToString(), validate ? "validate" : string.Empty);
|
||||
var workingDirectory = Config.Default.DataDir;
|
||||
|
||||
var success = ServerUpdater.UpgradeServerAsync(steamCmdFile, steamCmdArgs, workingDirectory, null, null, cacheFolder, Config.Default.SteamCmdRedirectOutput ? serverOutputHandler : null, CancellationToken.None, SteamCMDProcessWindowStyle).Result;
|
||||
|
|
@ -1905,20 +1896,23 @@ namespace ServerManagerTool.Lib
|
|||
LogProfileMessage("Delete old profile backup files started...");
|
||||
|
||||
var backupFolder = GetProfileBackupFolder(_profile);
|
||||
var backupFileFilter = $"*{Config.Default.BackupExtension}";
|
||||
var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
|
||||
|
||||
var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
|
||||
foreach (var backupFile in backupFiles)
|
||||
if (Directory.Exists(backupFolder))
|
||||
{
|
||||
try
|
||||
var backupFileFilter = $"*{Config.Default.BackupExtension}";
|
||||
var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
|
||||
|
||||
var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
|
||||
foreach (var backupFile in backupFiles)
|
||||
{
|
||||
LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
|
||||
backupFile.Delete();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// if unable to delete, do not bother
|
||||
try
|
||||
{
|
||||
LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
|
||||
backupFile.Delete();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// if unable to delete, do not bother
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1935,11 +1929,13 @@ namespace ServerManagerTool.Lib
|
|||
try
|
||||
{
|
||||
var backupFolder = GetProfileBackupFolder(_profile);
|
||||
|
||||
var oldBackupFolders = new DirectoryInfo(backupFolder).GetDirectories();
|
||||
foreach (var oldBackupFolder in oldBackupFolders)
|
||||
if (Directory.Exists(backupFolder))
|
||||
{
|
||||
oldBackupFolder.Delete(true);
|
||||
var oldBackupFolders = new DirectoryInfo(backupFolder).GetDirectories();
|
||||
foreach (var oldBackupFolder in oldBackupFolders)
|
||||
{
|
||||
oldBackupFolder.Delete(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
|
|
@ -2100,21 +2096,24 @@ namespace ServerManagerTool.Lib
|
|||
LogProfileMessage("Delete old server backup files started...");
|
||||
|
||||
var backupFolder = GetServerBackupFolder(_profile);
|
||||
var mapName = ServerProfile.GetProfileMapFileName(_profile.ServerMap, _profile.PGM_Enabled, _profile.PGM_Name);
|
||||
var backupFileFilter = $"{mapName}_*{Config.Default.BackupExtension}";
|
||||
var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
|
||||
|
||||
var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
|
||||
foreach (var backupFile in backupFiles)
|
||||
if (Directory.Exists(backupFolder))
|
||||
{
|
||||
try
|
||||
var mapName = ServerProfile.GetProfileMapFileName(_profile.ServerMap, _profile.PGM_Enabled, _profile.PGM_Name);
|
||||
var backupFileFilter = $"{mapName}_*{Config.Default.BackupExtension}";
|
||||
var backupDateFilter = DateTime.Now.AddDays(-deleteInterval);
|
||||
|
||||
var backupFiles = new DirectoryInfo(backupFolder).GetFiles(backupFileFilter).Where(f => f.LastWriteTime < backupDateFilter);
|
||||
foreach (var backupFile in backupFiles)
|
||||
{
|
||||
LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
|
||||
backupFile.Delete();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// if unable to delete, do not bother
|
||||
try
|
||||
{
|
||||
LogProfileMessage($"{backupFile.Name} was deleted, last updated {backupFile.CreationTime}.");
|
||||
backupFile.Delete();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// if unable to delete, do not bother
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2449,6 +2448,9 @@ namespace ServerManagerTool.Lib
|
|||
|
||||
var profiles = new Dictionary<ServerProfileSnapshot, ServerProfile>();
|
||||
|
||||
ServerRuntime.EnableUpdateModStatus = false;
|
||||
ServerProfile.EnableServerFilesWatcher = false;
|
||||
|
||||
foreach (var profileFile in Directory.EnumerateFiles(Config.Default.ConfigDirectory, "*" + Config.Default.ProfileExtension))
|
||||
{
|
||||
try
|
||||
|
|
@ -2784,7 +2786,7 @@ namespace ServerManagerTool.Lib
|
|||
return ExitCode;
|
||||
}
|
||||
|
||||
public int PerformProfileShutdown(ServerProfileSnapshot profile, bool performRestart, bool performUpdate, bool checkGracePeriod, CancellationToken cancellationToken)
|
||||
public int PerformProfileShutdown(ServerProfileSnapshot profile, bool performRestart, bool performUpdate, bool checkGracePeriod, bool steamCmdRemoveQuit, CancellationToken cancellationToken)
|
||||
{
|
||||
_profile = profile;
|
||||
|
||||
|
|
@ -2817,7 +2819,7 @@ namespace ServerManagerTool.Lib
|
|||
// check if the mutex was established
|
||||
if (createdNew)
|
||||
{
|
||||
ShutdownServer(performRestart, performUpdate, cancellationToken);
|
||||
ShutdownServer(performRestart, performUpdate, steamCmdRemoveQuit, cancellationToken);
|
||||
|
||||
if (ExitCode != EXITCODE_NORMALEXIT)
|
||||
{
|
||||
|
|
@ -2893,7 +2895,10 @@ namespace ServerManagerTool.Lib
|
|||
var createdNew = false;
|
||||
|
||||
if (OutputLogs)
|
||||
{
|
||||
_loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}", $"BranchUpdate_{GetBranchName(branch.BranchName)}");
|
||||
_loggerProfile = GetLogger(GetProfileLogFolder(profile.ProfileId, LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}_{profile.ProfileId}", "Update");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -2952,6 +2957,7 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
}
|
||||
|
||||
LogProfileMessage("");
|
||||
LogProfileMessage($"Exitcode = {ExitCode}");
|
||||
return ExitCode;
|
||||
}
|
||||
|
|
@ -2967,11 +2973,11 @@ namespace ServerManagerTool.Lib
|
|||
var createdNew = false;
|
||||
|
||||
if (OutputLogs)
|
||||
_loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}_{GetBranchName(branch.BranchName)}", $"Update_{GetBranchName(branch.BranchName)}");
|
||||
_loggerBranch = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), $"{LOGPREFIX_AUTOUPDATE}", $"BranchUpdate_{GetBranchName(branch.BranchName)}");
|
||||
|
||||
try
|
||||
{
|
||||
LogBranchMessage(branch.BranchName, $"Started branch update process.");
|
||||
LogMessage($"[{GetBranchName(branch.BranchName)}] Started branch update process.");
|
||||
|
||||
var cacheFolder = GetServerCacheFolder(branch.BranchName);
|
||||
|
||||
|
|
@ -3017,7 +3023,7 @@ namespace ServerManagerTool.Lib
|
|||
else
|
||||
{
|
||||
var delay = 0;
|
||||
foreach (var profile in _profiles.Keys.Where(p => p.EnableAutoUpdate))
|
||||
foreach (var profile in profiles)
|
||||
{
|
||||
if (delay > 0)
|
||||
Task.Delay(delay * 1000).Wait();
|
||||
|
|
@ -3039,12 +3045,12 @@ namespace ServerManagerTool.Lib
|
|||
ExitCode = EXITCODE_EXITWITHERRORS;
|
||||
}
|
||||
|
||||
LogBranchMessage(branch.BranchName, $"Finished branch update process.");
|
||||
LogMessage($"[{GetBranchName(branch.BranchName)}] Finished branch update process.");
|
||||
}
|
||||
else
|
||||
{
|
||||
ExitCode = EXITCODE_PROCESSALREADYRUNNING;
|
||||
LogBranchMessage(branch.BranchName, "Cancelled branch update process, could not lock branch folder.");
|
||||
LogMessage($"[{GetBranchName(branch.BranchName)}] Cancelled branch update process, could not lock branch folder.");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -3076,6 +3082,7 @@ namespace ServerManagerTool.Lib
|
|||
}
|
||||
}
|
||||
|
||||
LogBranchMessage(branch.BranchName, "");
|
||||
LogBranchMessage(branch.BranchName, $"Exitcode = {ExitCode}");
|
||||
return ExitCode;
|
||||
}
|
||||
|
|
@ -3084,7 +3091,7 @@ namespace ServerManagerTool.Lib
|
|||
{
|
||||
int exitCode = EXITCODE_NORMALEXIT;
|
||||
|
||||
_loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOBACKUP), LOGPREFIX_AUTOBACKUP, "Backup");
|
||||
_loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOBACKUP), LOGPREFIX_AUTOBACKUP, "AutoBackup");
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -3133,7 +3140,7 @@ namespace ServerManagerTool.Lib
|
|||
{
|
||||
int exitCode = EXITCODE_NORMALEXIT;
|
||||
|
||||
_loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOSHUTDOWN), LOGPREFIX_AUTOSHUTDOWN, "Shutdown");
|
||||
_loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOSHUTDOWN), LOGPREFIX_AUTOSHUTDOWN, "AutoShutdown");
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -3194,7 +3201,7 @@ namespace ServerManagerTool.Lib
|
|||
ServerProcess = type,
|
||||
SteamCMDProcessWindowStyle = ProcessWindowStyle.Hidden
|
||||
};
|
||||
exitCode = app.PerformProfileShutdown(profile, performRestart, performUpdate, true, CancellationToken.None);
|
||||
exitCode = app.PerformProfileShutdown(profile, performRestart, performUpdate, true, false, CancellationToken.None);
|
||||
|
||||
if (profile.ServerUpdated)
|
||||
{
|
||||
|
|
@ -3217,7 +3224,7 @@ namespace ServerManagerTool.Lib
|
|||
Mutex mutex = null;
|
||||
bool createdNew = false;
|
||||
|
||||
_loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), LOGPREFIX_AUTOUPDATE, "Update");
|
||||
_loggerManager = GetLogger(GetLogFolder(LOGPREFIX_AUTOUPDATE), LOGPREFIX_AUTOUPDATE, "AutoUpdate");
|
||||
|
||||
try
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue