summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--health-model.lua4
-rw-r--r--modules-model.lua2
-rw-r--r--rc-controller.lua4
-rw-r--r--rc-edit-html.lsp2
-rw-r--r--rc-model.lua72
-rw-r--r--rc-status-html.lsp32
-rw-r--r--rc.menu2
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 %>
- <H1>Command Result</H1>
- <% if session.editresult.errtxt then io.write('<P CLASS="error">' .. string.gsub(html.html_escape(session.editresult.errtxt), "\n", "<BR>") .. "</P>\n") end
- if session.editresult.descr then io.write('<P CLASS="descr">' .. string.gsub(html.html_escape(session.editresult.descr), "\n", "<BR>") .. "</P>\n") end
- for name,val in pairs(session.editresult.value) do
- if val.errtxt then io.write('<P CLASS="error">' .. string.gsub(html.html_escape(val.errtxt), "\n", "<BR>") .. "</P>\n") end
- end
- session.editresult = nil
-end %>
+<% displaycommandresults({"edit"}, session) %>
<H1><%= html.html_escape(view.label) %></H1>
<TABLE>
<TR>
<% if session.permissions.rc.edit then %>
-<TD class='header'>Update</TD>
+<TD class='header'>Action</TD>
<% end %>
-<TD class='header'>Service Name</TD><TD class='header'>Sequence</TD>
-<TD class='header'>Kill on shutdown</TD><TD class='header'>System init service</TD>
+<TD class='header'>Service Name</TD><TD class='header'>Runlevels</TD>
</TR>
<%
for i,item in ipairs(view.value) do %>
<TR>
- <% 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 %>
- <form action="<%= html.html_escape(page_info.script .. page_info.prefix .. page_info.controller .. "/edit") %>" method="POST">
- <TD><input class="submit" type="submit" name="<%= html.html_escape(result.option) %>" value="<%= html.html_escape(result.submit or result.option) %>"></TD>
- <TD><%= html.html_escape(item.servicename) %><%= html.form.hidden(result.value.servicename) %></TD><TD><%= html.form.text(result.value.sequence) %></TD>
- <TD><%= html.form.checkbox(result.value.kill) %></TD><TD><%= html.form.checkbox(result.value.system) %></TD>
- </form></TR>
- <% else %>
- <TD><%= html.html_escape(item.servicename) %></TD><TD><%= html.html_escape(item.sequence) %></TD>
- <TD><%= html.html_escape(item.kill) %></TD><TD><%= html.html_escape(item.system) %></TD></TR>
+ <% if session.permissions.rc.edit then %>
+ <TD><%= html.link{value="edit?servicename="..item.servicename.."&redir="..page_info.orig_action, label="Edit " } %>
<% end %>
+ <TD><%= html.html_escape(item.servicename) %></TD><TD><%= html.html_escape(table.concat(item.runlevels, ", ")) %></TD>
+ </TR>
<% end %>
</TABLE>
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