1dc0f5a240
refactor some of the main application code to have a cleaner code flow add enviroment flag to opt out of .net core telemetry in start script fixed "a moment" missing the "ago" fixed case sensitive client searches on postgresql clean up command code flow Add missing map "mp_cairo" to default settings
91 lines
3.2 KiB
C#
91 lines
3.2 KiB
C#
using SharedLibraryCore;
|
|
using SharedLibraryCore.Interfaces;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace IW4MAdmin.Application.Migration
|
|
{
|
|
/// <summary>
|
|
/// helps facilitate the migration of configs from one version and or location
|
|
/// to another
|
|
/// </summary>
|
|
class ConfigurationMigration
|
|
{
|
|
/// <summary>
|
|
/// ensures required directories are created
|
|
/// </summary>
|
|
public static void CheckDirectories()
|
|
{
|
|
if (!Directory.Exists(Path.Join(Utilities.OperatingDirectory, "Plugins")))
|
|
{
|
|
Directory.CreateDirectory(Path.Join(Utilities.OperatingDirectory, "Plugins"));
|
|
}
|
|
|
|
if (!Directory.Exists(Path.Join(Utilities.OperatingDirectory, "Database")))
|
|
{
|
|
Directory.CreateDirectory(Path.Join(Utilities.OperatingDirectory, "Database"));
|
|
}
|
|
|
|
if (!Directory.Exists(Path.Join(Utilities.OperatingDirectory, "Log")))
|
|
{
|
|
Directory.CreateDirectory(Path.Join(Utilities.OperatingDirectory, "Log"));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// moves existing configs from the root folder into a configs folder
|
|
/// </summary>
|
|
public static void MoveConfigFolder10518(ILogger log)
|
|
{
|
|
string currentDirectory = Utilities.OperatingDirectory;
|
|
|
|
// we don't want to do this for migrations or tests where the
|
|
// property isn't initialized or it's wrong
|
|
if (currentDirectory != null)
|
|
{
|
|
string configDirectory = Path.Join(currentDirectory, "Configuration");
|
|
|
|
if (!Directory.Exists(configDirectory))
|
|
{
|
|
log?.WriteDebug($"Creating directory for configs {configDirectory}");
|
|
Directory.CreateDirectory(configDirectory);
|
|
}
|
|
|
|
var configurationFiles = Directory.EnumerateFiles(currentDirectory, "*.json")
|
|
.Select(f => f.Split(Path.DirectorySeparatorChar).Last())
|
|
.Where(f => f.Count(c => c == '.') == 1);
|
|
|
|
foreach (var configFile in configurationFiles)
|
|
{
|
|
log?.WriteDebug($"Moving config file {configFile}");
|
|
string destinationPath = Path.Join("Configuration", configFile);
|
|
if (!File.Exists(destinationPath))
|
|
{
|
|
File.Move(configFile, destinationPath);
|
|
}
|
|
}
|
|
|
|
if (!File.Exists(Path.Join("Database", "Database.db")) &&
|
|
File.Exists("Database.db"))
|
|
{
|
|
log?.WriteDebug("Moving database file");
|
|
File.Move("Database.db", Path.Join("Database", "Database.db"));
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void ModifyLogPath020919(SharedLibraryCore.Configuration.ServerConfiguration config)
|
|
{
|
|
if (config.ManualLogPath.IsRemoteLog())
|
|
{
|
|
config.GameLogServerUrl = new Uri(config.ManualLogPath);
|
|
config.ManualLogPath = null;
|
|
}
|
|
}
|
|
}
|
|
}
|