internal static void RemoveModule(GrooveModule p_Module) { if (p_Module.Default) { return; } using (var s_Db = Database.GetConnection()) s_Db.Delete(p_Module); }
internal static void CompileModule(GrooveModule p_Module) { if (m_LoadedModules.ContainsKey(p_Module.Name) || !p_Module.Enabled) { return; } try { var s_Scope = m_ScriptEngine.CreateScope(); s_Scope.ImportModule("clr"); m_ScriptEngine.Execute("import clr", s_Scope); m_ScriptEngine.Execute("from clr import Convert", s_Scope); m_ScriptEngine.Execute("clr.AddReference('System.Core')", s_Scope); m_ScriptEngine.Execute("from System import Action", s_Scope); m_ScriptEngine.Execute("from System.Collections.Generic import List", s_Scope); m_ScriptEngine.Execute("clr.AddReference('GS.Lib')", s_Scope); m_ScriptEngine.Execute("from GS.Lib import *", s_Scope); m_ScriptEngine.Execute("clr.AddReference('GrooveCasterServer')", s_Scope); m_ScriptEngine.Execute("from GrooveCaster import *", s_Scope); m_ScriptEngine.Execute("from GrooveCaster.Managers import BroadcastManager, ChatManager, QueueManager, SettingsManager, UserManager, SuggestionManager, PlaylistManager", s_Scope); m_ScriptEngine.Execute("from GrooveCaster.Application import Library as SharpShark", s_Scope); m_ScriptEngine.Execute("from GrooveCaster.Util import ModuleTimer as Timer", s_Scope); var s_ScriptSource = m_ScriptEngine.CreateScriptSourceFromString(p_Module.Script.Trim(), SourceCodeKind.File); var s_Script = s_ScriptSource.Execute(s_Scope); m_LoadedModules.Add(p_Module.Name, new ModuleScript() { Source = s_ScriptSource, Script = s_Script, Scope = s_Scope }); } catch (Exception s_Exception) { Console.WriteLine(s_Exception); LoadExceptions.Add(p_Module.Name, s_Exception.Message); } }
internal static void UpdateModule(GrooveModule p_Module) { using (var s_Db = Database.GetConnection()) s_Db.Update(p_Module); }
internal static void EnableModule(GrooveModule p_Module) { p_Module.Enabled = true; UpdateModule(p_Module); }
internal static void DisableModule(GrooveModule p_Module) { p_Module.Enabled = false; UpdateModule(p_Module); }
public ModulesModule() { this.RequiresAuthentication(); Get["/modules"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } return(View["Modules", new { SuperUser = Context.CurrentUser.Claims.Contains("super"), Modules = ModuleManager.GetModules(), Errors = ModuleManager.LoadExceptions }]); }; Get["/modules/edit/{module}"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } String s_ModuleName = p_Parameters.module; var s_Module = ModuleManager.GetModule(s_ModuleName); if (s_Module == null) { return(new RedirectResponse("/modules")); } return(View["EditModule", new { SuperUser = Context.CurrentUser.Claims.Contains("super"), Data = s_Module, HasError = false, Error = "" }]); }; Post["/modules/edit/{module}"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } String s_ModuleName = p_Parameters.module; var s_Module = ModuleManager.GetModule(s_ModuleName); if (s_Module == null) { return(new RedirectResponse("/modules")); } var s_Request = this.Bind <EditModuleRequest>(); s_Module.DisplayName = s_Request.Display; s_Module.Description = s_Request.Description; s_Module.Script = s_Request.Script; if (String.IsNullOrWhiteSpace(s_Request.Display) || String.IsNullOrWhiteSpace(s_Request.Script)) { return(View["EditModule", new { SuperUser = Context.CurrentUser.Claims.Contains("super"), Data = s_Module, HasError = true, Error = "Please fill in all the required fields." }]); } ModuleManager.UpdateModule(s_Module); ModuleManager.ReloadModules(); return(new RedirectResponse("/modules")); }; Get["/modules/add"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } return(View["AddModule", new { HasError = false, SuperUser = Context.CurrentUser.Claims.Contains("super"), Data = new AddModuleRequest() { Name = "", Display = "", Description = "", Script = "" }, Error = "" }]); }; Post["/modules/add"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } var s_Request = this.Bind <AddModuleRequest>(); if (String.IsNullOrWhiteSpace(s_Request.Name.Trim()) || String.IsNullOrWhiteSpace(s_Request.Display) || String.IsNullOrWhiteSpace(s_Request.Script)) { return(View["AddModule", new { SuperUser = Context.CurrentUser.Claims.Contains("super"), Data = s_Request, HasError = true, Error = "Please fill in all the required fields." }]); } var s_ID = s_Request.Name.Trim().ToLowerInvariant(); if (ModuleManager.GetModule(s_ID) != null) { return(View["AddModule", new { SuperUser = Context.CurrentUser.Claims.Contains("super"), Data = s_Request, HasError = true, Error = "A module with that name already exists." }]); } var s_Module = new GrooveModule { Name = s_ID, DisplayName = s_Request.Display, Description = s_Request.Description, Script = s_Request.Script, Enabled = true, Default = false }; using (var s_Db = Database.GetConnection()) s_Db.Insert(s_Module); ModuleManager.ReloadModules(); return(new RedirectResponse("/modules")); }; Get["/modules/delete/{module}"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } String s_ModuleName = p_Parameters.module; var s_Module = ModuleManager.GetModule(s_ModuleName); if (s_Module == null || s_Module.Default) { return(new RedirectResponse("/modules")); } ModuleManager.RemoveModule(s_Module); ModuleManager.ReloadModules(); return(new RedirectResponse("/modules")); }; Get["/modules/disable/{module}"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } String s_ModuleName = p_Parameters.module; var s_Module = ModuleManager.GetModule(s_ModuleName); if (s_Module == null) { return(new RedirectResponse("/modules")); } ModuleManager.DisableModule(s_Module); ModuleManager.ReloadModules(); return(new RedirectResponse("/modules")); }; Get["/modules/enable/{module}"] = p_Parameters => { if (!Context.CurrentUser.Claims.Contains("super")) { return(new RedirectResponse("/")); } String s_ModuleName = p_Parameters.module; var s_Module = ModuleManager.GetModule(s_ModuleName); if (s_Module == null) { return(new RedirectResponse("/modules")); } ModuleManager.EnableModule(s_Module); ModuleManager.ReloadModules(); return(new RedirectResponse("/modules")); }; }