From 4943770cd49f3fae629b91913c54cdecad0ae398 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Tue, 26 May 2009 16:03:44 +0000 Subject: Update for alpine 1.9 openrc and minor changes for RAM disk and modules. --- health-model.lua | 4 +-- modules-model.lua | 2 +- rc-controller.lua | 4 +-- rc-edit-html.lsp | 2 +- rc-model.lua | 72 +++++++++++++++++++++++++++++++++--------------------- rc-status-html.lsp | 32 ++++++------------------ rc.menu | 2 +- 7 files changed, 58 insertions(+), 60 deletions(-) diff --git a/health-model.lua b/health-model.lua index 52b4fa9..7f38f83 100644 --- a/health-model.lua +++ b/health-model.lua @@ -55,11 +55,11 @@ get_storage = function (self) local name = string.match(line, "^(/dev/fd%d+)") storage.floppy.value[name] = cfe({ value=string.match(disk, "[^\n]*\n")..line, label="Floppy Capacity" }) storage.floppy.value[name].used = string.match(line, name.."%s*%S*%s*%S*%s*%S*%s*(%S*)%%") - elseif string.match(line, "^/dev/none") then + elseif string.match(line, "^/dev/none") or string.match(line, "^tmpfs") then if not storage.ramdisk then storage.ramdisk = cfe({ type="group", value={}, label="RAM disks" }) end - local name = "/dev/none" + local name = string.match(line, "^%S+") storage.ramdisk.value[name] = cfe({ value=string.match(disk, "[^\n]*\n")..line, label="RAM Disk Capacity" }) storage.ramdisk.value[name].used = string.match(line, name.."%s*%S*%s*%S*%s*%S*%s*(%S*)%%") elseif string.match(line, "^/dev/[hs]d%a%d+") then diff --git a/modules-model.lua b/modules-model.lua index e3e70d0..a4c7b38 100644 --- a/modules-model.lua +++ b/modules-model.lua @@ -21,5 +21,5 @@ function write_file(filedetails) end function reloadmodules() - return modelfunctions.startstop_service("modutils", "start") + return modelfunctions.startstop_service("modules", "restart") end diff --git a/rc-controller.lua b/rc-controller.lua index 3c00c41..69fd183 100644 --- a/rc-controller.lua +++ b/rc-controller.lua @@ -10,6 +10,6 @@ end edit = function(self) return controllerfunctions.handle_form(self, - function() return self.model.read_sequence(self.clientdata.servicename) end, - self.model.update_sequence, self.clientdata, "Save", "Edit Startup Sequence") + function() return self.model.read_runlevels(self.clientdata.servicename) end, + self.model.update_runlevels, self.clientdata, "Save", "Edit Service Runlevels") end diff --git a/rc-edit-html.lsp b/rc-edit-html.lsp index 5f18a14..fe792d1 100644 --- a/rc-edit-html.lsp +++ b/rc-edit-html.lsp @@ -6,6 +6,6 @@ require("viewfunctions") <% form.action = page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action form.value.servicename.readonly = true - local order = {"servicename", "sequence", "kill", "system"} + local order = {"servicename", "runlevels"} displayform(form, order) %> diff --git a/rc-model.lua b/rc-model.lua index 189d381..c213e1f 100644 --- a/rc-model.lua +++ b/rc-model.lua @@ -1,59 +1,75 @@ module (..., package.seeall) require("processinfo") -require("validator") +require("modelfunctions") +require("fs") +require("posix") + +local configpath = "/etc/runlevels/" +local runlevels = {} +for f in posix.files(configpath) do + if f~="." and f~=".." and fs.is_dir(configpath..f) then + runlevels[#runlevels+1] = f + end +end +table.sort(runlevels) local config status = function() - config = config or processinfo.read_startupsequence() - return cfe({ type="structure", value=config, label="Startup Sequence Status" }) + config = config or processinfo.read_initrunlevels() + return cfe({ type="structure", value=config, label="Init Runlevels" }) end -read_sequence = function(servicename) +read_runlevels = function(servicename) local value = {} value.servicename = cfe({ value=servicename or "", label="Service Name" }) - value.sequence = cfe({ label="Startup Sequence" }) - value.kill = cfe({ type="boolean", value=false, label="Add kill link for shutdown" }) - value.system = cfe({ type="boolean", value=false, label="System init service" }) + value.runlevels = cfe({ type="multi", value={}, label="Service Runlevels", option=runlevels }) -- read in the value for the servicename - config = config or processinfo.read_startupsequence() + config = config or processinfo.read_initrunlevels() for i,conf in ipairs(config) do if conf.servicename == servicename then - value.sequence.value = conf.sequence - value.kill.value = conf.kill - value.system.value = conf.system + value.runlevels.value = conf.runlevels break end end - return cfe({ type="group", value=value, label="Service Startup Sequence"}) + return cfe({ type="group", value=value, label="Service Runlevels"}) end - -update_sequence = function(sequence) - local success = false - sequence.value.servicename.errtxt = "Invalid service" +update_runlevels = function(service) + local success = modelfunctions.validatemulti(service.value.runlevels) + service.value.servicename.errtxt = "Invalid service" for name in posix.files("/etc/init.d") do - if name == sequence.value.servicename.value then + if name == service.value.servicename.value then success = true - sequence.value.servicename.errtxt = nil + service.value.servicename.errtxt = nil end end - if sequence.value.sequence.value ~= "" and not validator.is_integer_in_range(sequence.value.sequence.value, 1, 99) then - success = false - sequence.value.sequence.errtxt = "Invalid sequence number" - end if success then - if sequence.value.sequence.value == "" then - sequence.descr, sequence.errtxt = processinfo.delete_startupsequence(sequence.value.servicename.value) - else - sequence.descr, sequence.errtxt = processinfo.add_startupsequence(sequence.value.servicename.value, sequence.value.sequence.value, sequence.value.kill.value, sequence.value.system.value) + local reverserunlevels = {} + for i,lev in ipairs(service.value.runlevels.value) do + reverserunlevels[lev] = i + end + local delrunlevels = {} + for i,lev in ipairs(runlevels) do + if not reverserunlevels[lev] then + delrunlevels[#delrunlevels+1] = lev + end + end + service.descr = {} + service.errtxt = {} + service.descr[#service.descr+1], service.errtxt[#service.errtxt+1] = processinfo.delete_runlevels(service.value.servicename.value, delrunlevels) + service.descr[#service.descr+1], service.errtxt[#service.errtxt+1] = processinfo.add_runlevels(service.value.servicename.value, service.value.runlevels.value) + service.descr = table.concat(service.descr, "\n") + service.errtxt = table.concat(service.errtxt, "\n") + if service.errtxt and string.find(service.errtxt, "^%s*$") then + service.errtxt = nil end else - sequence.errtxt = "Failed to set sequence" + service.errtxt = "Failed to set runlevels" end - return sequence + return service end diff --git a/rc-status-html.lsp b/rc-status-html.lsp index a234798..b366c07 100644 --- a/rc-status-html.lsp +++ b/rc-status-html.lsp @@ -1,41 +1,23 @@ <% local view, viewlibrary, page_info, session = ... %> <% require("viewfunctions") %> -<% if session.editresult then %> -

Command Result

- <% if session.editresult.errtxt then io.write('

' .. string.gsub(html.html_escape(session.editresult.errtxt), "\n", "
") .. "

\n") end - if session.editresult.descr then io.write('

' .. string.gsub(html.html_escape(session.editresult.descr), "\n", "
") .. "

\n") end - for name,val in pairs(session.editresult.value) do - if val.errtxt then io.write('

' .. string.gsub(html.html_escape(val.errtxt), "\n", "
") .. "

\n") end - end - session.editresult = nil -end %> +<% displaycommandresults({"edit"}, session) %>

<%= html.html_escape(view.label) %>

<% if session.permissions.rc.edit then %> - + <% end %> - - + <% for i,item in ipairs(view.value) do %> - <% if session.permissions[page_info.controller].edit then - local result = viewlibrary.dispatch_component(page_info.controller.."/edit", {servicename=item.servicename}, true) - for name,val in pairs(result.value) do val.name=name end - if result.value.kill.value then result.value.kill.checked = "" end - if result.value.system.value then result.value.system.checked = "" end %> - " method="POST"> - - - - - <% else %> - - + <% if session.permissions.rc.edit then %> + + <% end %>
UpdateActionService NameSequenceKill on shutdownSystem init serviceService NameRunlevels
<%= html.html_escape(item.servicename) %><%= html.form.hidden(result.value.servicename) %><%= html.form.text(result.value.sequence) %><%= html.form.checkbox(result.value.kill) %><%= html.form.checkbox(result.value.system) %>
<%= html.html_escape(item.servicename) %><%= html.html_escape(item.sequence) %><%= html.html_escape(item.kill) %><%= html.html_escape(item.system) %>
<%= html.link{value="edit?servicename="..item.servicename.."&redir="..page_info.orig_action, label="Edit " } %> <% end %> + <%= html.html_escape(item.servicename) %><%= html.html_escape(table.concat(item.runlevels, ", ")) %>
diff --git a/rc.menu b/rc.menu index 753dd14..5611a21 100644 --- a/rc.menu +++ b/rc.menu @@ -1,2 +1,2 @@ #CAT GROUP/DESC TAB ACTION -System 50Startup Status status +System 50Init Status status -- cgit v1.2.3