diff options
-rw-r--r-- | app/startstop-html.lsp | 14 | ||||
-rw-r--r-- | lib/controllerfunctions.lua | 7 | ||||
-rw-r--r-- | lib/modelfunctions.lua | 27 | ||||
-rw-r--r-- | lib/processinfo.lua | 11 |
4 files changed, 26 insertions, 33 deletions
diff --git a/app/startstop-html.lsp b/app/startstop-html.lsp index 924f14d..c98208b 100644 --- a/app/startstop-html.lsp +++ b/app/startstop-html.lsp @@ -1,12 +1,5 @@ <% local data, viewlibrary, page_info = ... %> -<% local reverseactions = {} -data.value.actions = data.value.actions or {} -local actions = data.value.actions.value or {"start", "stop", "restart"} -for i,act in ipairs(actions) do - reverseactions[act] = i -end %> - <H1>Management</H1> <% if data.value.result then %> @@ -21,10 +14,9 @@ end %> <form action="<%= html.html_escape(page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action) %>" method="POST"> <DT>Program control-panel</DT> <DD> -<% if reverseactions.start then %><input class="submit" type="submit" name="action" value="Start" <% if data.value.status.value== "Running" then io.write("disabled") end %>><% end %> -<% if reverseactions.stop then %><input class="submit" type="submit" name="action" value="Stop" <% if data.value.status.value== "Stopped" then io.write("disabled") end %>><% end %> -<% if reverseactions.restart then %><input class="submit" type="submit" name="action" value="Restart" <% if data.value.status.value== "Stopped" then io.write("disabled") end %>><% end %> -<% if reverseactions.reload then %><input class="submit" type="submit" name="action" value="Reload" <% if data.value.status.value== "Stopped" then io.write("disabled") end %>><% end %> +<% for i,act in ipairs(data.value.actions.value) do %> + <input class="submit" type="submit" name="action" value="<%= act %>"> +<% end %> </DD> </form> </DL> diff --git a/lib/controllerfunctions.lua b/lib/controllerfunctions.lua index dbdfd19..ef910d2 100644 --- a/lib/controllerfunctions.lua +++ b/lib/controllerfunctions.lua @@ -77,14 +77,9 @@ function handle_form(self, getFunction, setFunction, clientdata, option, label, return form end -function handle_startstop(self, startstopfunction, getstatusfunction, clientdata) +function handle_startstop(self, startstopfunction, clientdata) 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 result end diff --git a/lib/modelfunctions.lua b/lib/modelfunctions.lua index 1314b42..70f1412 100644 --- a/lib/modelfunctions.lua +++ b/lib/modelfunctions.lua @@ -7,22 +7,33 @@ require("processinfo") function getenabled(processname) local result = cfe({ label = "Program status", name=processname }) - local t = processinfo.pidof(processname) - if (t) and (#t > 0) then - result.value = "Running" + result.value, result.errtxt = processinfo.daemoncontrol(processname, "status") + if string.find(result.value, ": not found") then + result.value = "" + result.errtxt = "Program not installed" else - result.value = "Stopped" + result.value = string.gsub(result.value, "* status: ", "") + result.value = string.gsub(result.value, "^%l", string.upper) end return result end 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" }) + actions = actions or {"Start", "Stop", "Restart"} + result.actions = cfe({ type="list", value=actions, 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" }) + local reverseactions = {} + for i,act in ipairs(actions) do reverseactions[string.lower(act)] = i end + result.result = cfe({ label="Start/Stop result" }) + if reverseactions[string.lower(action)] then + local cmdresult, errtxt = processinfo.daemoncontrol(servicename, action) + result.result.value = cmdresult + result.result.errtxt = errtxt + else + result.result.errtxt = "Unknown command!" + end end return cfe({ type="group", value=result, label="Start/Stop result" }) end diff --git a/lib/processinfo.lua b/lib/processinfo.lua index edf5ab6..b75f55f 100644 --- a/lib/processinfo.lua +++ b/lib/processinfo.lua @@ -106,16 +106,13 @@ function delete_runlevels(servicename, runlevels) return cmdresult,cmderrors end -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 +function daemoncontrol (process, action) local cmdresult = "" local cmderrors if not process then cmderrors = "Invalid service name" - elseif reverseactions[string.lower(action)] then + else local file = io.popen( "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin /etc/init.d/" .. format.escapespecialcharacters(process) .. " " .. format.escapespecialcharacters(string.lower(action)) .. " 2>&1" ) if file ~= nil then @@ -123,10 +120,8 @@ function daemoncontrol (process, action, actions) file:close() end posix.sleep(2) -- Wait for the process to start|stop - else - cmderrors = "Unknown command!" end - return cmdresult,cmderrors,actions + return cmdresult,cmderrors end -- the following methods are available: |