Added support for loading runtime-specific libraries
This commit is contained in:
@ -12,6 +12,7 @@ using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Lidgren.Network;
|
||||
using Newtonsoft.Json;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("RageCoop.Server")]
|
||||
[assembly: InternalsVisibleTo("RageCoop.Client")]
|
||||
@ -190,6 +191,23 @@ namespace RageCoop.Core
|
||||
foreach (FileInfo file in source.GetFiles())
|
||||
file.CopyTo(Path.Combine(target.FullName, file.Name), true);
|
||||
}
|
||||
public
|
||||
static string GetInvariantRID()
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
return "win-" + RuntimeInformation.OSArchitecture.ToString().ToLower();
|
||||
}
|
||||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
{
|
||||
return "linux-" + RuntimeInformation.OSArchitecture.ToString().ToLower();
|
||||
}
|
||||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||
{
|
||||
return "osx-" + RuntimeInformation.OSArchitecture.ToString().ToLower();
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
}
|
||||
internal class IpInfo
|
||||
|
@ -144,7 +144,7 @@ namespace RageCoop.Server
|
||||
Thread.Sleep(10 * 60 * 1000);
|
||||
|
||||
API.SendChatMessage("downloading update...");
|
||||
var downloadURL = $"https://github.com/RAGECOOP/RAGECOOP-V/releases/download/nightly/RageCoop.Server-{GetRID()}.zip";
|
||||
var downloadURL = $"https://github.com/RAGECOOP/RAGECOOP-V/releases/download/nightly/RageCoop.Server-{CoreUtils.GetInvariantRID()}.zip";
|
||||
if (Directory.Exists("Update")) { Directory.Delete("Update", true); }
|
||||
HttpHelper.DownloadFile(downloadURL, "Update.zip", null);
|
||||
Logger?.Info("Installing update");
|
||||
@ -161,18 +161,6 @@ namespace RageCoop.Server
|
||||
Logger?.Error("Update",ex);
|
||||
}
|
||||
}
|
||||
static string GetRID()
|
||||
{
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
return "win-"+RuntimeInformation.OSArchitecture.ToString().ToLower();
|
||||
}
|
||||
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||
{
|
||||
return "linux-"+RuntimeInformation.OSArchitecture.ToString().ToLower();
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
private void KickAssholes()
|
||||
{
|
||||
foreach(var c in ClientsByNetHandle.Values.ToArray())
|
||||
|
@ -15,7 +15,7 @@ using System.Resources;
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Version information
|
||||
[assembly: AssemblyVersion("1.5.3.113")]
|
||||
[assembly: AssemblyFileVersion("1.5.3.113")]
|
||||
[assembly: AssemblyVersion("1.5.3.115")]
|
||||
[assembly: AssemblyFileVersion("1.5.3.115")]
|
||||
[assembly: NeutralResourcesLanguageAttribute( "en-US" )]
|
||||
|
||||
|
@ -7,6 +7,7 @@ using McMaster.NETCore.Plugins;
|
||||
using System.IO;
|
||||
using RageCoop.Core.Scripting;
|
||||
using ICSharpCode.SharpZipLib.Zip;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace RageCoop.Server.Scripting
|
||||
{
|
||||
@ -17,8 +18,22 @@ namespace RageCoop.Server.Scripting
|
||||
{
|
||||
|
||||
internal ServerResource(PluginConfig config) : base(config) { }
|
||||
internal static ServerResource LoadFrom(string resDir, string dataFolder, Logger logger = null, bool isTemp = false)
|
||||
internal static ServerResource LoadFrom(string resDir, string dataFolder, Logger logger = null)
|
||||
{
|
||||
var runtimeLibs = Path.Combine(resDir, "RuntimeLibs", CoreUtils.GetInvariantRID());
|
||||
if (Directory.Exists(runtimeLibs))
|
||||
{
|
||||
logger?.Debug("Applying runtime libraries from "+ CoreUtils.GetInvariantRID());
|
||||
CoreUtils.CopyFilesRecursively(new(runtimeLibs), new(resDir));
|
||||
}
|
||||
|
||||
runtimeLibs = Path.Combine(resDir, "RuntimeLibs", RuntimeInformation.RuntimeIdentifier);
|
||||
if (Directory.Exists(runtimeLibs))
|
||||
{
|
||||
logger?.Debug("Applying runtime libraries from " + CoreUtils.GetInvariantRID());
|
||||
CoreUtils.CopyFilesRecursively(new(runtimeLibs), new(resDir));
|
||||
}
|
||||
|
||||
var conf = new PluginConfig(Path.GetFullPath(Path.Combine(resDir, Path.GetFileName(resDir)+".dll")))
|
||||
{
|
||||
PreferSharedTypes = true,
|
||||
@ -85,7 +100,7 @@ namespace RageCoop.Server.Scripting
|
||||
{
|
||||
tmpDir=Path.Combine(tmpDir, name);
|
||||
new FastZip().ExtractZip(input, tmpDir, FastZip.Overwrite.Always,null,null,null,true,true);
|
||||
return LoadFrom(tmpDir, dataFolder, logger, true);
|
||||
return LoadFrom(tmpDir, dataFolder, logger);
|
||||
}
|
||||
/// <summary>
|
||||
/// Name of the resource
|
||||
|
Reference in New Issue
Block a user