ServerManagers/src/ConanServerManager/Lib/ServerProfileSnapshot.cs
2021-01-07 16:23:23 +10:00

100 lines
3.8 KiB
C#

using ServerManagerTool.Utils;
using System;
using System.Collections.Generic;
using System.Net;
namespace ServerManagerTool.Lib
{
public class ServerProfileSnapshot
{
public string ProfileId;
public string ProfileName;
public string ServerName;
public string InstallDirectory;
public string GameFile;
public string AdminPassword;
public string ServerIP;
public int ServerPort;
public int ServerPeerPort;
public int QueryPort;
public string ServerMap;
public List<string> ServerModIds;
public bool RconEnabled;
public int RconPort;
public string RconPassword;
public int MaxPlayerCount;
public string MOTD;
public bool MOTDIntervalEnabled;
public int MOTDInterval;
public string BranchName;
public string BranchPassword;
public string SchedulerKey;
public bool EnableAutoBackup;
public bool EnableAutoUpdate;
public bool EnableAutoShutdown1;
public bool RestartAfterShutdown1;
public bool UpdateAfterShutdown1;
public bool EnableAutoShutdown2;
public bool RestartAfterShutdown2;
public bool UpdateAfterShutdown2;
public bool AutoRestartIfShutdown;
public bool ServerUpdated;
public string LastInstalledVersion;
public DateTime LastStarted;
public static ServerProfileSnapshot Create(ServerProfile profile)
{
return new ServerProfileSnapshot
{
ProfileId = profile.ProfileID,
ProfileName = profile.ProfileName,
ServerName = profile.ServerName,
InstallDirectory = profile.InstallDirectory,
GameFile = profile.GetServerWorldFile(),
AdminPassword = profile.AdminPassword,
ServerIP = string.IsNullOrWhiteSpace(profile.ServerIP) ? IPAddress.Loopback.ToString() : profile.ServerIP.Trim(),
ServerPort = profile.ServerPort,
ServerPeerPort = profile.ServerPeerPort,
QueryPort = profile.QueryPort,
ServerMap = ServerProfile.GetProfileMapName(profile),
ServerModIds = ModUtils.GetModIdList(profile.ServerModIds),
RconEnabled = profile.RconEnabled,
RconPort = profile.RconPort,
RconPassword = profile.RconPassword,
MaxPlayerCount = profile.MaxPlayers,
MOTD = profile.MOTD,
MOTDIntervalEnabled = profile.MOTDIntervalEnabled && !string.IsNullOrWhiteSpace(profile.MOTD),
MOTDInterval = Math.Max(1, Math.Min(int.MaxValue, profile.MOTDInterval)),
BranchName = profile.BranchName,
BranchPassword = profile.BranchPassword,
SchedulerKey = profile.GetProfileKey(),
EnableAutoBackup = profile.EnableAutoBackup,
EnableAutoUpdate = profile.EnableAutoUpdate,
EnableAutoShutdown1 = profile.EnableAutoShutdown1,
RestartAfterShutdown1 = profile.RestartAfterShutdown1,
UpdateAfterShutdown1 = profile.UpdateAfterShutdown1,
EnableAutoShutdown2 = profile.EnableAutoShutdown2,
RestartAfterShutdown2 = profile.RestartAfterShutdown2,
UpdateAfterShutdown2 = profile.UpdateAfterShutdown2,
AutoRestartIfShutdown = profile.AutoRestartIfShutdown,
ServerUpdated = false,
LastInstalledVersion = profile.LastInstalledVersion ?? new Version(0, 0).ToString(),
LastStarted = profile.LastStarted,
};
}
public void Update(ServerProfile profile)
{
profile.LastInstalledVersion = LastInstalledVersion;
profile.LastStarted = LastStarted;
}
}
}