diff options
author | Steven Barth <steven@midlink.org> | 2008-08-16 20:18:14 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-08-16 20:18:14 +0000 |
commit | d7b95a555baac0a815bfb8975648f7435c4a0754 (patch) | |
tree | 589eaddf1ed9b7647c7bf29dac9c5e9c104d33ef /libs | |
parent | 5237b79adfeaa49b23f6e95379d4e0861c153217 (diff) |
Added process control page
Minor improvements
Diffstat (limited to 'libs')
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 43 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/button.htm | 17 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/cell_valuefooter.htm | 6 | ||||
-rw-r--r-- | libs/cbi/luasrc/view/cbi/full_valuefooter.htm | 8 | ||||
-rw-r--r-- | libs/sys/luasrc/sys.lua | 47 |
5 files changed, 109 insertions, 12 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 7e2f53c80..bf4bfb80c 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -287,7 +287,7 @@ function SimpleForm.parse(self, ...) or valid and 1 or -1 - self.dorender = self:handle(state, self.data) ~= false + self.dorender = not self.handle or self:handle(state, self.data) ~= false end function SimpleForm.render(self, ...) @@ -487,7 +487,11 @@ function Table.__init__(self, form, data, ...) self.data = data function datasource.get(self, section, option) - return data[section][option] + return data[section] and data[section][option] + end + + function datasource.del(...) + return true end AbstractSection.__init__(self, datasource, "table", ...) @@ -496,10 +500,18 @@ function Table.__init__(self, form, data, ...) self.anonymous = true end +function Table.parse(self) + for i, k in ipairs(self:cfgsections()) do + if luci.http.formvalue("cbi.submit") then + Node.parse(self, k) + end + end +end + function Table.cfgsections(self) local sections = {} - for i, v in pairs(self.data) do + for i, v in luci.util.kspairs(self.data) do table.insert(sections, i) end @@ -685,6 +697,7 @@ function AbstractValue.__init__(self, map, option, ...) self.config = map.config self.tag_invalid = {} self.tag_missing = {} + self.tag_error = {} self.deps = {} self.track_missing = false @@ -700,6 +713,11 @@ function AbstractValue.depends(self, field, value) table.insert(self.deps, {field=field, value=value}) end +-- Generates the unique CBID +function AbstractValue.cbid(self, section) + return "cbid."..self.map.config.."."..section.."."..self.option +end + -- Return whether this object should be created function AbstractValue.formcreated(self, section) local key = "cbi.opt."..self.config.."."..section @@ -708,8 +726,7 @@ end -- Returns the formvalue for this object function AbstractValue.formvalue(self, section) - local key = "cbid."..self.map.config.."."..section.."."..self.option - return luci.http.formvalue(key) + return luci.http.formvalue(self:cbid(section)) end function AbstractValue.additional(self, value) @@ -746,9 +763,7 @@ function AbstractValue.render(self, s, scope) if not self.optional or self:cfgvalue(s) or self:formcreated(s) then scope = scope or {} scope.section = s - scope.cbid = "cbid." .. self.config .. - "." .. s .. - "." .. self.option + scope.cbid = self:cbid(s) scope.ifattr = function(cond,key,val) if cond then @@ -965,3 +980,15 @@ function TextValue.__init__(self, ...) AbstractValue.__init__(self, ...) self.template = "cbi/tvalue" end + +--[[ +Button +]]-- +Button = class(AbstractValue) + +function Button.__init__(self, ...) + AbstractValue.__init__(self, ...) + self.template = "cbi/button" + self.inputstyle = nil + self.rmempty = true +end
\ No newline at end of file diff --git a/libs/cbi/luasrc/view/cbi/button.htm b/libs/cbi/luasrc/view/cbi/button.htm new file mode 100644 index 000000000..2d740f45c --- /dev/null +++ b/libs/cbi/luasrc/view/cbi/button.htm @@ -0,0 +1,17 @@ +<%# +LuCI - Lua Configuration Interface +Copyright 2008 Steven Barth <steven@midlink.org> +Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ + +-%> +<%+cbi/valueheader%> + <input<% if self.inputstyle then %> class="cbi-input-<%=self.inputstyle%>"<% end %> type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.title) %> /> +<%+cbi/valuefooter%> diff --git a/libs/cbi/luasrc/view/cbi/cell_valuefooter.htm b/libs/cbi/luasrc/view/cbi/cell_valuefooter.htm index fbe266ebe..941214246 100644 --- a/libs/cbi/luasrc/view/cbi/cell_valuefooter.htm +++ b/libs/cbi/luasrc/view/cbi/cell_valuefooter.htm @@ -13,8 +13,12 @@ $Id$ -%> - <% if self.tag_invalid[section] then -%> + <% if self.tag_error[section] then -%> + <div class="cbi-error"><%=self.tag_error[section]%></div> + <%- elseif self.tag_invalid[section] then -%> <div class="cbi-error"><%:cbi_invalid%></div> + <%- elseif self.tag_missing[section] then -%> + <div class="cbi-error"><%:cbi_missing%></div> <%- end %> </td> diff --git a/libs/cbi/luasrc/view/cbi/full_valuefooter.htm b/libs/cbi/luasrc/view/cbi/full_valuefooter.htm index a5a6046a5..5a52898d1 100644 --- a/libs/cbi/luasrc/view/cbi/full_valuefooter.htm +++ b/libs/cbi/luasrc/view/cbi/full_valuefooter.htm @@ -21,12 +21,14 @@ $Id$ </div> <%- end -%> - <% if self.tag_invalid[section] then -%> + <% if self.tag_error[section] then -%> + <div class="cbi-error"><%=self.tag_error[section]%></div> + <%- elseif self.tag_invalid[section] then -%> <div class="cbi-error"><%:cbi_invalid%></div> - <%- end %> - <% if self.tag_missing[section] then -%> + <%- elseif self.tag_missing[section] then -%> <div class="cbi-error"><%:cbi_missing%></div> <%- end %> + </div> <% if #self.deps > 0 then -%> diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 7357d4cfb..6b6ea7012 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -298,6 +298,46 @@ process = {} -- @return Number containing the current pid process.info = posix.getpid +--- Retrieve information about currently running processes. +-- @return Table containing process information +function process.list() + local data = {} + local k + local ps = luci.util.execi("top -bn1") + + if not ps then + return + end + + while true do + local line = ps() + if not line then + return + end + + k = luci.util.split(luci.util.trim(line), "%s+", nil, true) + if k[1] == "PID" then + break + end + end + + for line in ps do + local row = {} + + line = luci.util.trim(line) + for i, value in ipairs(luci.util.split(line, "%s+", #k-1, true)) do + row[k[i]] = value + end + + local pid = tonumber(row[k[1]]) + if pid then + data[pid] = row + end + end + + return data +end + --- Set the gid of a process identified by given pid. -- @param pid Number containing the process id -- @param gid Number containing the Unix group id @@ -318,6 +358,13 @@ function process.setuser(pid, uid) return posix.setpid("u", pid, uid) end +--- Send a signal to a process identified by given pid. +-- @param pid Number containing the process id +-- @param sig Signal to send (default: 15 [SIGTERM]) +-- @return Boolean indicating successful operation +-- @return Number containing the error code if failed +process.signal = posix.kill + --- LuCI system utilities / user related functions. -- @class module |