private void addServerPlugin_Click(object sender, EventArgs e) { OpenFileDialog fd = new OpenFileDialog(); fd.Title = "Import server plugin"; fd.Filter = "Plugin|*.js"; DialogResult dr = fd.ShowDialog(); if (dr == DialogResult.OK) { string target = serverPluginsLocation + fd.SafeFileName; //Check if plugin already exists if (File.Exists(target)) { File.Delete(target); } //Copy plugin file File.Copy(fd.FileName, target); //Create settings PluginSystem.SavePluginSettings( target.Substring(0, target.LastIndexOf('.')) + ".settings.js", true, PluginSystem.ReadPlugin(target).properties ); //Refresh client plugins ReloadServerPlugins(); } }
private void ReloadServerPlugins() { try { //Read all server plugins string[] serverFiles = Directory.GetFiles(serverPluginsLocation) .Where(name => name.IndexOf(".settings.js") == -1).ToArray(); //Clear plugin list serverPlugins.Items.Clear(); //Create new server plugin array serverPluginsArray = new Plugin[serverFiles.Length]; //Handle all plugins foreach (string file in serverFiles) { //Read plugin Plugin plugin = PluginSystem.ReadPlugin(file); if (plugin == null) { continue; } //Create settings location string settingsLoc = file.Substring(0, file.LastIndexOf('.')) + ".settings.js"; //Check if settings exist if (!File.Exists(settingsLoc)) { if (!File.Exists(settingsLoc)) { PluginSystem.SavePluginSettings( settingsLoc, true, plugin.properties ); } } //Read if enabled or not bool enabled = ReadEnabledSettings(settingsLoc); //Add plugin serverPlugins.Items.Add(plugin.name, enabled); serverPluginsArray[serverPlugins.Items.Count - 1] = plugin; } } catch (Exception exc) { Logger.Error("Could not reload server plugins: ", exc); } }