public IPluginAPI LoadPlugin(string pluginName) { PluginLoader loader; var pluginDll = Path.Combine(_currentPluginFolderPath, pluginName, pluginName + ".dll"); if (File.Exists(pluginDll)) { Log.Debug("Found plugin " + pluginName); Log.Debug("Trying to initialize plugin " + pluginName); loader = PluginLoader.CreateFromAssemblyFile( pluginDll, sharedTypes: new[] { typeof(Log), typeof(IPluginAPI), typeof(IPluginHostAPI), typeof(IPluginManager), typeof(IAuthProvider), typeof(IExposedSessionManager), typeof(IC2SMessageHandler), typeof(ICoreEventHandler), typeof(BaseMessage), typeof(CoreEvent), typeof(ExportedIPCMethodAttribute), typeof(IMongoDatabase), typeof(AuthorizationRequest), typeof(AuthorizationResponse) }, config => config.PreferSharedTypes = true ); } else { throw new Exception("specified plugin is not found"); } var pluginTypes = loader.LoadDefaultAssembly().GetTypes(); IPluginAPI plugin = null; foreach (var pluginType in pluginTypes .Where(t => typeof(IPluginAPI).IsAssignableFrom(t) && !t.IsAbstract)) { // This assumes the implementation of IPlugin has a parameterless constructor plugin = (IPluginAPI)Activator.CreateInstance(pluginType); Log.Info($"Plugin '{plugin.GetPluginUniqueName()}' initialized successfully"); plugin.PreInitialize(this); plugin.Initialize(_pluginHostAPI); } return(plugin); }
public void RegisterIPCService(IPluginAPI plugin, dynamic service) { _ipcRouter.RegisterIPCService(plugin.GetPluginUniqueName(), service); }
public dynamic GetSettings(IPluginAPI plugin) { return(_app.Config.Plugins.GetValueOrDefault(plugin.GetPluginUniqueName(), null)); }