diff options
author | ttrask <ttrask@ab2d0c66-481e-0410-8bed-d214d4d58bed> | 2009-03-17 20:39:56 +0000 |
---|---|---|
committer | ttrask <ttrask@ab2d0c66-481e-0410-8bed-d214d4d58bed> | 2009-03-17 20:39:56 +0000 |
commit | c700c97cb992cdc3eb62d93a52e1bf56ed5ea585 (patch) | |
tree | fb6446b8fbe31833808ab1319d845b0614047fee /lib | |
parent | 5dc15abba740eae84b4202a6a7319cad163fe87c (diff) | |
download | acf-core-c700c97cb992cdc3eb62d93a52e1bf56ed5ea585.tar.bz2 acf-core-c700c97cb992cdc3eb62d93a52e1bf56ed5ea585.tar.xz |
Changed the way startstop works in core to add a list of allowed actions. Modified all ACFs that don't use the standard functions to work with new library method.
git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@1730 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'lib')
-rw-r--r-- | lib/controllerfunctions.lua | 10 | ||||
-rw-r--r-- | lib/modelfunctions.lua | 13 | ||||
-rw-r--r-- | lib/processinfo.lua | 12 |
3 files changed, 21 insertions, 14 deletions
diff --git a/lib/controllerfunctions.lua b/lib/controllerfunctions.lua index 90d31a4..dbdfd19 100644 --- a/lib/controllerfunctions.lua +++ b/lib/controllerfunctions.lua @@ -78,15 +78,13 @@ function handle_form(self, getFunction, setFunction, clientdata, option, label, end function handle_startstop(self, startstopfunction, getstatusfunction, clientdata) - local result - if clientdata.action then - result = startstopfunction(clientdata.action) - end - result = self:redirect_to_referrer(result) + local result = startstopfunction(clientdata.action) + result.value.result = self:redirect_to_referrer(result.value.result) local status = getstatusfunction() if status.value.status then status = status.value.status end + result.value.status = status - return cfe({ type="group", value={status=status, result=result} }) + return result end diff --git a/lib/modelfunctions.lua b/lib/modelfunctions.lua index 076d1bb..d7be73d 100644 --- a/lib/modelfunctions.lua +++ b/lib/modelfunctions.lua @@ -16,10 +16,15 @@ function getenabled(processname) return result end -function startstop_service(servicename, action) - -- action is validated in daemoncontrol - local cmdmessage,cmderror = processinfo.daemoncontrol(servicename, action) - return cfe({ value=cmdmessage or "", errtxt=cmderror, label="Start/Stop result" }) +function startstop_service(servicename, action, actions) + -- action is validated against actions in daemoncontrol + local result = {} + result.actions = cfe({ type="list", value=actions or {"start", "stop", "restart"}, label="Start/Stop actions" }) + if action then + local cmdmessage,cmderror = processinfo.daemoncontrol(servicename, action, result.actions.value) + result.result = cfe({ value=cmdmessage or "", errtxt=cmderror, label="Start/Stop result" }) + end + return cfe({ type="group", value=result, label="Start/Stop result" }) end function getstatus(processname, packagename, label, servicename) diff --git a/lib/processinfo.lua b/lib/processinfo.lua index f41e62f..35ea42f 100644 --- a/lib/processinfo.lua +++ b/lib/processinfo.lua @@ -112,14 +112,18 @@ function delete_startupsequence(servicename) return cmdresult,cmderrors end -function daemoncontrol (process, action) +function daemoncontrol (process, action, actions) + actions = actions or {"start", "stop", "restart"} + local reverseactions = {} + for i,act in ipairs(actions) do reverseactions[string.lower(act)] = i end + local cmdresult = "" local cmderrors if not process then cmderrors = "Invalid service name" - elseif (string.lower(action) == "start") or (string.lower(action) == "stop") or (string.lower(action) == "restart") then + elseif reverseactions[string.lower(action)] then local file = io.popen( "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin /etc/init.d/" .. - format.escapespecialcharacters(process) .. " " .. string.lower(action) .. " 2>&1" ) + format.escapespecialcharacters(process) .. " " .. format.escapespecialcharacters(string.lower(action)) .. " 2>&1" ) if file ~= nil then cmdresult = file:read( "*a" ) file:close() @@ -128,7 +132,7 @@ function daemoncontrol (process, action) else cmderrors = "Unknown command!" end - return cmdresult,cmderrors + return cmdresult,cmderrors,actions end -- the following methods are available: |