Enable loading plugins on server startup

This commit is contained in:
ChronosX88 2020-07-18 13:34:32 +04:00
parent 394f9ab908
commit 5be00542b8
2 changed files with 23 additions and 13 deletions

View File

@ -24,6 +24,8 @@ namespace Zirconium.Core
Router = new Router(this);
HostModuleAPI = new HostModuleAPI(this, Router);
AuthManager = new AuthManager(this);
ModuleManager = new ModuleManager(HostModuleAPI);
ModuleManager.LoadModules(config.PluginsDirPath, config.EnabledPlugins);
Log.Info("Zirconium is initialized successfully");
}

View File

@ -23,8 +23,13 @@ namespace Zirconium.Core.Modules
_moduleMutex = new Mutex();
}
public void LoadModules(string folderPath) {
public void LoadModules(string folderPath, string[] enabledModules)
{
var loaders = new List<PluginLoader>();
if (folderPath == "") {
Logging.Log.Warning("Plugins folder path is not specified!");
return;
}
// create module loaders
foreach (var dir in Directory.GetDirectories(folderPath))
@ -32,6 +37,8 @@ namespace Zirconium.Core.Modules
var dirName = Path.GetFileName(dir);
var pluginDll = Path.Combine(dir, dirName + ".dll");
if (File.Exists(pluginDll))
{
if (enabledModules.Where(x => x == pluginDll).FirstOrDefault() != null)
{
var loader = PluginLoader.CreateFromAssemblyFile(
pluginDll,
@ -47,6 +54,7 @@ namespace Zirconium.Core.Modules
loaders.Add(loader);
}
}
}
// Create an instance of module types
foreach (var loader in loaders)