diff options
Diffstat (limited to 'src/ffluci')
-rw-r--r-- | src/ffluci/fs.lua | 22 | ||||
-rw-r--r-- | src/ffluci/i18n/example-simpleview.de | 6 | ||||
-rw-r--r-- | src/ffluci/i18n/index.en | 1 | ||||
-rw-r--r-- | src/ffluci/model/uci.lua | 2 | ||||
-rw-r--r-- | src/ffluci/sys.lua | 39 | ||||
-rw-r--r-- | src/ffluci/util.lua | 54 | ||||
-rw-r--r-- | src/ffluci/view/header.htm | 6 |
7 files changed, 105 insertions, 25 deletions
diff --git a/src/ffluci/fs.lua b/src/ffluci/fs.lua index 5a1cc6b351..55da9b8dce 100644 --- a/src/ffluci/fs.lua +++ b/src/ffluci/fs.lua @@ -31,14 +31,36 @@ require("lfs") -- Returns the content of file function readfile(filename) local fp = io.open(filename) + if fp == nil then error("Unable to open file for reading: " .. filename) end + local data = fp:read("*a") fp:close() return data end +-- Returns the content of file as array of lines +function readfilel(filename) + local fp = io.open(filename) + local line = "" + local data = {} + + if fp == nil then + error("Unable to open file for reading: " .. filename) + end + + while true do + line = fp:read() + if (line == nil) then break end + table.insert(data, line) + end + + fp:close() + return data +end + -- Writes given data to a file function writefile(filename, data) local fp = io.open(filename, "w") diff --git a/src/ffluci/i18n/example-simpleview.de b/src/ffluci/i18n/example-simpleview.de deleted file mode 100644 index db2bee0cf7..0000000000 --- a/src/ffluci/i18n/example-simpleview.de +++ /dev/null @@ -1,6 +0,0 @@ -descr = [[Dies ist das Simple View-Beispiel.<br /> -Dieses Template ist: ffluci/view/example-simpleview/index.htm und gehoert -zur Aktion "index".<br /> -Diese Uebersetzung ist: ffluci/i18n/example-simpleview.de]] - -lan = "Die LAN IP-Adresse des Routers lautet:"
\ No newline at end of file diff --git a/src/ffluci/i18n/index.en b/src/ffluci/i18n/index.en new file mode 100644 index 0000000000..71255873ab --- /dev/null +++ b/src/ffluci/i18n/index.en @@ -0,0 +1 @@ +hello = "Hello"
\ No newline at end of file diff --git a/src/ffluci/model/uci.lua b/src/ffluci/model/uci.lua index 492367ce28..9b9fcb0935 100644 --- a/src/ffluci/model/uci.lua +++ b/src/ffluci/model/uci.lua @@ -96,7 +96,7 @@ function _uci2(cmd) end function _uci3(cmd) - local res = ffluci.util.exec(ucicmd .. " 2>&1 " .. cmd, true) + local res = ffluci.util.execl(ucicmd .. " 2>&1 " .. cmd) if res[1]:sub(1, ucicmd:len() + 1) == ucicmd .. ":" then return nil, res[1] end diff --git a/src/ffluci/sys.lua b/src/ffluci/sys.lua new file mode 100644 index 0000000000..048f6d3751 --- /dev/null +++ b/src/ffluci/sys.lua @@ -0,0 +1,39 @@ +--[[ +FFLuCI - System library + +Description: +Utilities for interaction with the Linux system + +FileId: +$Id$ + +License: +Copyright 2008 Steven Barth <steven@midlink.org> + +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 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +]]-- + +module("ffluci.sys", package.seeall) +require("ffluci.fs") + +-- Returns the hostname +function hostname() + return ffluci.fs.readfilel("/proc/sys/kernel/hostname")[1] +end + +-- Returns the load average +function loadavg() + local loadavg = ffluci.fs.readfilel("/proc/loadavg")[1] + return loadavg:match("^(.-) (.-) (.-) (.-) (.-)$") +end
\ No newline at end of file diff --git a/src/ffluci/util.lua b/src/ffluci/util.lua index 07cbb8000c..3004f552e6 100644 --- a/src/ffluci/util.lua +++ b/src/ffluci/util.lua @@ -26,6 +26,26 @@ limitations under the License. module("ffluci.util", package.seeall) + +-- Lua OO class support emulation +function class(base) + local clsobj = {} + local metatable = {__index = clsobj} + + function clsobj.new() + local inst = {} + setmetatable(inst, metatable) + return inst + end + + if base then + setmetatable(clsobj, {__index = base}) + end + + return clsobj +end + + -- Checks whether a table has an object "value" in it function contains(table, value) for k,v in pairs(table) do @@ -57,24 +77,26 @@ end -- Runs "command" and returns its output -function exec(command, return_array) +function exec(command) local pp = io.popen(command) - local data = nil + local data = pp:read("*a") + pp:close() - if return_array then - local line = "" - data = {} - - while true do - line = pp:read() - if (line == nil) then break end - table.insert(data, line) - end - pp:close() - else - data = pp:read("*a") - pp:close() - end + return data +end + +-- Runs "command" and returns its output as a array of lines +function execl(command) + local pp = io.popen(command) + local line = "" + local data = {} + + while true do + line = pp:read() + if (line == nil) then break end + table.insert(data, line) + end + pp:close() return data end diff --git a/src/ffluci/view/header.htm b/src/ffluci/view/header.htm index 2c0836be5b..44826f059a 100644 --- a/src/ffluci/view/header.htm +++ b/src/ffluci/view/header.htm @@ -1,4 +1,6 @@ <% +require("ffluci.sys") +local load1, load5, load15 = ffluci.sys.loadavg() local req = require("ffluci.dispatcher").request local menu = require("ffluci.menu").get()[req.category] require("ffluci.i18n").loadc("default") @@ -16,8 +18,8 @@ require("ffluci.http").htmlheader() <div class="whitetext smalltext right"> OpenWRT Kamikaze<br /> Freifunk Firmware 2.0-dev<br /> - Load average: 1.00 2.00 3.00<br /> - 1.2.3.4 - host1 + <%:load Last%>: <%=load1%> <%=load5%> <%=load15%><br /> + <%:hostname Hostname%>: <%=ffluci.sys.hostname()%> </div> <div> <span class="headertitle">Freifunk Kamikaze</span><br /> |