diff options
Diffstat (limited to 'MCServer/Plugins/Core/web_manageplugins.lua')
-rw-r--r-- | MCServer/Plugins/Core/web_manageplugins.lua | 312 |
1 files changed, 156 insertions, 156 deletions
diff --git a/MCServer/Plugins/Core/web_manageplugins.lua b/MCServer/Plugins/Core/web_manageplugins.lua index bf1f04ff5..543638183 100644 --- a/MCServer/Plugins/Core/web_manageplugins.lua +++ b/MCServer/Plugins/Core/web_manageplugins.lua @@ -1,157 +1,157 @@ -local function Button_RemovePlugin( Name, Index )
- return "<form method='POST'><input type='hidden' name='PluginName' value='"..Name.."'><input type='hidden' name='PluginIndex' value='"..Index.."'><input type='submit' name='RemovePlugin' value='Remove'></form>"
-end
-
-local function Button_EnablePlugin( Name )
- return [[<form method="POST"><input type="hidden" name="PluginName", value="]].. Name ..[["><input type="submit" name="EnablePlugin" value="Enable"></form>]]
-end
-
-local function Button_DisablePlugin( Name )
- return [[<form method="POST"><input type="hidden" name="PluginName", value="]].. Name ..[["><input type="submit" name="DisablePlugin" value="Disable"></form>]]
-end
-
-local function FindPluginID( SettingsIni, PluginName )
- local KeyIdx = SettingsIni:FindKey("Plugins")
- local NumValues = SettingsIni:GetNumValues( KeyIdx )
-
- for i = 0, NumValues-1 do
- LOGINFO( SettingsIni:GetValue(KeyIdx, i) )
- if( SettingsIni:GetValue(KeyIdx, i) == PluginName ) then
- return i
- end
- end
-
- return nil
-end
-
-local function RemovePluginFromIni( SettingsIni, PluginName )
- local KeyIdx = SettingsIni:FindKey("Plugins")
- local PluginIdx = FindPluginID( SettingsIni, PluginName )
-
- if( PluginIdx == nil ) then
- LOGINFO("Got nil! NOOOO")
- return false
- end
-
- local Name = SettingsIni:GetValue( KeyIdx, PluginIdx )
- if( Name ~= PluginName ) then
- LOGINFO("not the same name T_T '" .. Name .. "' '" .. PluginName .. "'")
- end
- if( (Name == PluginName) and (SettingsIni:DeleteValueByID( KeyIdx, PluginIdx ) == true) ) then
- return SettingsIni:WriteFile()
- end
-
- return false
-end
-
-local function AddPluginToIni( SettingsIni, PluginName )
- RemovePluginFromIni( SettingsIni, PluginName ) -- Make sure there are no duplicates
-
- if( SettingsIni:SetValue("Plugins", "Plugin", PluginName, true ) == true ) then
- return SettingsIni:WriteFile()
- end
-
- return false
-end
-
-local function HandlePluginListChanges( Request, SettingsIni )
- local Content = ""
-
- if( Request.PostParams["EnablePlugin"] ~= nil
- and Request.PostParams["PluginName"] ~= nil ) then
-
- local PluginName = Request.PostParams["PluginName"]
-
- local PM = cRoot:Get():GetPluginManager()
- if( PM:LoadPlugin( PluginName ) == false ) then
- Content = "Could not enable '".. PluginName .."'!"
- end
-
- if( AddPluginToIni( SettingsIni, PluginName ) == true ) then
- Content = "Enabled plugin '".. PluginName .."'"
- else
- Content = "Enabled plugin '".. PluginName .."' but could not add it to settings.ini"
- end
-
-
- elseif( Request.PostParams["DisablePlugin"] ~= nil
- and Request.PostParams["PluginName"] ~= nil ) then
-
- local PluginName = Request.PostParams["PluginName"]
-
- local PM = cRoot:Get():GetPluginManager()
- PM:DisablePlugin( PluginName )
-
- if( RemovePluginFromIni( SettingsIni, PluginName ) == true ) then
- Content = "Disabled plugin '".. PluginName .."'"
- else
- Content = "Disabled plugin '".. PluginName .."' but could not remove it from settings.ini"
- end
-
-
-
- end
-
- if( #Content > 0 ) then
- return "<p><font color='red'><strong>INFO: " .. Content .. "</strong></font></p>"
- else
- return ""
- end
-end
-
-function HandleRequest_ManagePlugins( Request )
- local Content = ""
-
- if( Request.PostParams["reload"] ~= nil ) then
- Content = Content .. "<head><meta http-equiv=\"refresh\" content=\"2;\"></head>"
- Content = Content .. "<p>Reloading plugins... This can take a while depending on the plugins you're using.</p>"
- cRoot:Get():GetPluginManager():ReloadPlugins()
- return Content
- end
-
- local SettingsIni = cIniFile("settings.ini")
- if( SettingsIni:ReadFile() == true ) then
- Content = Content .. HandlePluginListChanges( Request, SettingsIni )
- else
- Content = Content .. "Cannot find/modify settings.ini"
- end
-
- local PluginManager = cRoot:Get():GetPluginManager()
- PluginManager:FindPlugins() -- Refreshes the plugin list
- local PluginList = PluginManager:GetAllPlugins()
-
- Content = Content .. "<h4>Currently installed plugins</h4>"
- Content = Content .. "<table>"
- ActivePluginsName = {}
- ActivePluginVersion = {}
- InactivePlugins = {}
- for k, Plugin in pairs(PluginList) do
- if( Plugin ) then
- table.insert( ActivePluginsName, k )
- table.insert( ActivePluginVersion, Plugin:GetVersion() )
- else
- table.insert( InactivePlugins, k )
- end
- end
- table.sort( ActivePluginsName )
- table.sort( InactivePlugins )
- for i = 1, #ActivePluginsName do
- Content = Content .. "<tr><td>".. ActivePluginsName[i] .."</td>"
- Content = Content .. "<td>" .. ActivePluginsName[i] .. " V. " .. ActivePluginVersion[i] .. "</td><td>" .. Button_DisablePlugin(ActivePluginsName[i]) .. "</td>"
- Content = Content .. "</tr>"
- end
- for i = 1, #InactivePlugins do
- Content = Content .. "<tr><td>".. InactivePlugins[i] .."</td>"
- Content = Content .. "<td></td><td>" .. Button_EnablePlugin(InactivePlugins[i]) .. "</td>"
- Content = Content .. "</tr>"
- end
- Content = Content .. "</table>"
-
- Content = Content .. "<h4>Reload</h4>"
- Content = Content .. "<form method='POST'>"
- Content = Content .. "<p>Click the reload button to reload all plugins according to <strong>settings.ini</strong>!"
- Content = Content .. "<input type='submit' name='reload' value='Reload!'></p>"
- Content = Content .. "</form>"
-
- return Content
+local function Button_RemovePlugin( Name, Index ) + return "<form method='POST'><input type='hidden' name='PluginName' value='"..Name.."'><input type='hidden' name='PluginIndex' value='"..Index.."'><input type='submit' name='RemovePlugin' value='Remove'></form>" +end + +local function Button_EnablePlugin( Name ) + return [[<form method="POST"><input type="hidden" name="PluginName", value="]].. Name ..[["><input type="submit" name="EnablePlugin" value="Enable"></form>]] +end + +local function Button_DisablePlugin( Name ) + return [[<form method="POST"><input type="hidden" name="PluginName", value="]].. Name ..[["><input type="submit" name="DisablePlugin" value="Disable"></form>]] +end + +local function FindPluginID( SettingsIni, PluginName ) + local KeyIdx = SettingsIni:FindKey("Plugins") + local NumValues = SettingsIni:GetNumValues( KeyIdx ) + + for i = 0, NumValues-1 do + LOGINFO( SettingsIni:GetValue(KeyIdx, i) ) + if( SettingsIni:GetValue(KeyIdx, i) == PluginName ) then + return i + end + end + + return nil +end + +local function RemovePluginFromIni( SettingsIni, PluginName ) + local KeyIdx = SettingsIni:FindKey("Plugins") + local PluginIdx = FindPluginID( SettingsIni, PluginName ) + + if( PluginIdx == nil ) then + LOGINFO("Got nil! NOOOO") + return false + end + + local Name = SettingsIni:GetValue( KeyIdx, PluginIdx ) + if( Name ~= PluginName ) then + LOGINFO("not the same name T_T '" .. Name .. "' '" .. PluginName .. "'") + end + if( (Name == PluginName) and (SettingsIni:DeleteValueByID( KeyIdx, PluginIdx ) == true) ) then + return SettingsIni:WriteFile() + end + + return false +end + +local function AddPluginToIni( SettingsIni, PluginName ) + RemovePluginFromIni( SettingsIni, PluginName ) -- Make sure there are no duplicates + + if( SettingsIni:SetValue("Plugins", "Plugin", PluginName, true ) == true ) then + return SettingsIni:WriteFile() + end + + return false +end + +local function HandlePluginListChanges( Request, SettingsIni ) + local Content = "" + + if( Request.PostParams["EnablePlugin"] ~= nil + and Request.PostParams["PluginName"] ~= nil ) then + + local PluginName = Request.PostParams["PluginName"] + + local PM = cRoot:Get():GetPluginManager() + if( PM:LoadPlugin( PluginName ) == false ) then + Content = "Could not enable '".. PluginName .."'!" + end + + if( AddPluginToIni( SettingsIni, PluginName ) == true ) then + Content = "Enabled plugin '".. PluginName .."'" + else + Content = "Enabled plugin '".. PluginName .."' but could not add it to settings.ini" + end + + + elseif( Request.PostParams["DisablePlugin"] ~= nil + and Request.PostParams["PluginName"] ~= nil ) then + + local PluginName = Request.PostParams["PluginName"] + + local PM = cRoot:Get():GetPluginManager() + PM:DisablePlugin( PluginName ) + + if( RemovePluginFromIni( SettingsIni, PluginName ) == true ) then + Content = "Disabled plugin '".. PluginName .."'" + else + Content = "Disabled plugin '".. PluginName .."' but could not remove it from settings.ini" + end + + + + end + + if( #Content > 0 ) then + return "<p><font color='red'><strong>INFO: " .. Content .. "</strong></font></p>" + else + return "" + end +end + +function HandleRequest_ManagePlugins( Request ) + local Content = "" + + if( Request.PostParams["reload"] ~= nil ) then + Content = Content .. "<head><meta http-equiv=\"refresh\" content=\"2;\"></head>" + Content = Content .. "<p>Reloading plugins... This can take a while depending on the plugins you're using.</p>" + cRoot:Get():GetPluginManager():ReloadPlugins() + return Content + end + + local SettingsIni = cIniFile("settings.ini") + if( SettingsIni:ReadFile() == true ) then + Content = Content .. HandlePluginListChanges( Request, SettingsIni ) + else + Content = Content .. "Cannot find/modify settings.ini" + end + + local PluginManager = cRoot:Get():GetPluginManager() + PluginManager:FindPlugins() -- Refreshes the plugin list + local PluginList = PluginManager:GetAllPlugins() + + Content = Content .. "<h4>Currently installed plugins</h4>" + Content = Content .. "<table>" + ActivePluginsName = {} + ActivePluginVersion = {} + InactivePlugins = {} + for k, Plugin in pairs(PluginList) do + if( Plugin ) then + table.insert( ActivePluginsName, k ) + table.insert( ActivePluginVersion, Plugin:GetVersion() ) + else + table.insert( InactivePlugins, k ) + end + end + table.sort( ActivePluginsName ) + table.sort( InactivePlugins ) + for i = 1, #ActivePluginsName do + Content = Content .. "<tr><td>".. ActivePluginsName[i] .."</td>" + Content = Content .. "<td>" .. ActivePluginsName[i] .. " V. " .. ActivePluginVersion[i] .. "</td><td>" .. Button_DisablePlugin(ActivePluginsName[i]) .. "</td>" + Content = Content .. "</tr>" + end + for i = 1, #InactivePlugins do + Content = Content .. "<tr><td>".. InactivePlugins[i] .."</td>" + Content = Content .. "<td></td><td>" .. Button_EnablePlugin(InactivePlugins[i]) .. "</td>" + Content = Content .. "</tr>" + end + Content = Content .. "</table>" + + Content = Content .. "<h4>Reload</h4>" + Content = Content .. "<form method='POST'>" + Content = Content .. "<p>Click the reload button to reload all plugins according to <strong>settings.ini</strong>!" + Content = Content .. "<input type='submit' name='reload' value='Reload!'></p>" + Content = Content .. "</form>" + + return Content end
\ No newline at end of file |