summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2008-05-24 15:41:37 +0000
committerTed Trask <ttrask01@yahoo.com>2008-05-24 15:41:37 +0000
commit6c63347a6ae2f25de2bf8cf9aea93ea31a786418 (patch)
tree5937cfeacf14ee8ea7d7f805e5bb6c7c6e721cfb
parentfca6053366b3728ec57874478868ca0e0b9120cf (diff)
downloadacf-alpine-baselayout-6c63347a6ae2f25de2bf8cf9aea93ea31a786418.tar.bz2
acf-alpine-baselayout-6c63347a6ae2f25de2bf8cf9aea93ea31a786418.tar.xz
Modified health controller to use cfe's and added support for multiple floppy and hard drives.
git-svn-id: svn://svn.alpinelinux.org/acf/alpine-baselayout/trunk@1181 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r--alpine-baselayout.roles2
-rw-r--r--health-controller.lua10
-rw-r--r--health-model.lua70
-rw-r--r--health-modules-html.lsp2
-rw-r--r--health-network-html.lsp4
-rw-r--r--health-proc-html.lsp4
-rw-r--r--health-storage-html.lsp80
-rw-r--r--health-system-html.lsp17
8 files changed, 117 insertions, 72 deletions
diff --git a/alpine-baselayout.roles b/alpine-baselayout.roles
index f0647c6..22dd03f 100644
--- a/alpine-baselayout.roles
+++ b/alpine-baselayout.roles
@@ -2,4 +2,4 @@ CREATE=interfaces:create
READ=health:storage,health:proc,health:network,health:modules,interfaces:read,logfiles:status,logfiles:view,logfiles:download,syslog:status,syslog:basicstatus
UPDATE=interfaces:update,skins:update,skins:read,syslog:startstop,syslog:config,syslog:expert,interfaces:config
DELETE=interfaces:delete,logfiles:delete
-ALL=health:system, hostname:read
+ALL=health:system,hostname:read
diff --git a/health-controller.lua b/health-controller.lua
index 72838e1..6ebc00e 100644
--- a/health-controller.lua
+++ b/health-controller.lua
@@ -5,21 +5,21 @@ default_action = "system"
-- Public methods
system = function (self )
- return ({system = self.model:get_system(), url = self.conf.script .. self.conf.prefix .. self.conf.controller} )
+ return self.model:get_system()
end
storage = function (self )
- return ({storage = self.model:get_storage(), url = self.conf.script .. self.conf.prefix .. self.conf.controller} )
+ return self.model:get_storage()
end
network = function (self )
- return ({network = self.model:get_network(), url = self.conf.script .. self.conf.prefix .. self.conf.controller} )
+ return self.model:get_network()
end
modules = function (self )
- return ({modules = self.model:get_modules(), url = self.conf.script .. self.conf.prefix .. self.conf.controller} )
+ return self.model:get_modules()
end
proc = function (self )
- return ({proc = self.model:get_proc(), url = self.conf.script .. self.conf.prefix .. self.conf.controller} )
+ return self.model:get_proc()
end
diff --git a/health-model.lua b/health-model.lua
index 638e0a0..0646f5e 100644
--- a/health-model.lua
+++ b/health-model.lua
@@ -33,46 +33,64 @@ end
-- Public functions
get_system = function (self)
local system = {}
- system.uptime = querycmd("/usr/bin/uptime")
- system.date = querycmd("/bin/date")
- system.version = fs.read_file("/etc/alpine-release") or "Unknown"
- system.timezone = date.what_tz()
- system.uname = querycmd("/bin/uname -a")
- local used, useddebug = getpercentage(querycmd("/usr/bin/free"), "Total:", 3, 4)
- system.memory = {value=querycmd("/usr/bin/free"),
- used=used,
- used_label="Total:"}
- return system
+ system.uptime = cfe({ value=querycmd("/usr/bin/uptime"), label="Uptime" })
+ system.date = cfe({ value=querycmd("/bin/date"), label="Date" })
+ system.version = cfe({ value=fs.read_file("/etc/alpine-release") or "Unknown", label="Version" })
+ system.timezone = cfe({ value=date.what_tz(), label="Time Zone" })
+ system.uname = cfe({ value=querycmd("/bin/uname -a"), label="UName" })
+ system.memory = cfe({ value=querycmd("/usr/bin/free"), label="Memory usage" })
+ system.memory.used = getpercentage(querycmd("/usr/bin/free"), "Total:", 3, 4)
+ return cfe({ type="group", value=system })
end
get_storage = function (self)
local storage = {}
- storage.floppycapacity = {value=diskfree("/media/floppy"),
- used=string.match(diskfree(),"/dev/fd0%s*%S*%s*%S*%s*%S*%s*(%S*)%%"),
- used_label="/dev/fd0"}
- storage.hdcapacity = {value=diskfree(),
- used=string.match(diskfree(),"/dev/none%s*%S*%s*%S*%s*%S*%s*(%S*)%%"),
- used_label="/dev/none"}
- storage.partitions = fs.read_file("/proc/partitions")
- return storage
+ local disk = diskfree() .. "\n"
+ local other = {}
+ for line in string.gmatch(disk, "([^\n]*)\n") do
+ if string.match(line, "^/dev/fd%d+") then
+ if not storage.floppy then
+ storage.floppy = cfe({ type="group", value={}, label="Floppy drives" })
+ end
+ 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
+ if not storage.ramdisk then
+ storage.ramdisk = cfe({ type="group", value={}, label="RAM disks" })
+ end
+ local name = "/dev/none"
+ 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/hd%a%d+") then
+ if not storage.hd then
+ storage.hd = cfe({ type="group", value={}, label="Hard drives" })
+ end
+ local name = string.match(line, "^(/dev/hd%a%d+)")
+ storage.hd.value[name] = cfe({ value=string.match(disk, "[^\n]*\n")..line, label="Hard Drive Capacity" })
+ storage.hd.value[name].used = string.match(line, name.."%s*%S*%s*%S*%s*%S*%s*(%S*)%%")
+ end
+ end
+ storage.partitions = cfe({ value=fs.read_file("/proc/partitions"), label="Partitions" })
+ return cfe({ type="group", value=storage })
end
get_network = function (self)
local network = {}
- network.interfaces = querycmd("/bin/ip addr")
- network.routes = querycmd("/bin/ip route")
- return network
+ network.interfaces = cfe({ value=querycmd("/bin/ip addr"), label="Interfaces" })
+ network.routes = cfe({ value=querycmd("/bin/ip route"), label="Routes" })
+ return cfe({ type="group", value=network })
end
get_modules = function (self)
local modules = {}
- modules.list = querycmd("/sbin/lsmod")
- return modules
+ modules.list = cfe({ value=querycmd("/sbin/lsmod"), label="Modules List" })
+ return cfe({ type="group", value=modules })
end
get_proc = function (self)
local proc = {}
- proc.processor = fs.read_file("/proc/cpuinfo")
- proc.memory = fs.read_file("/proc/meminfo")
- return proc
+ proc.processor = cfe({ value=fs.read_file("/proc/cpuinfo"), label="Processor" })
+ proc.memory = cfe({ value=fs.read_file("/proc/meminfo"), label="Memory" })
+ return cfe({ type="group", value=proc })
end
diff --git a/health-modules-html.lsp b/health-modules-html.lsp
index a1b92ca..d379d95 100644
--- a/health-modules-html.lsp
+++ b/health-modules-html.lsp
@@ -3,4 +3,4 @@
<h1>Modules</h1>
<h2>Installed modules</h2>
-<pre><?= view.modules.list ?></pre>
+<pre><?= view.value.list.value ?></pre>
diff --git a/health-network-html.lsp b/health-network-html.lsp
index 09760da..6533133 100644
--- a/health-network-html.lsp
+++ b/health-network-html.lsp
@@ -3,7 +3,7 @@
<h1>Network</h1>
<h2>Interface status</h2>
-<pre><?= view.network.interfaces ?></pre>
+<pre><?= view.value.interfaces.value ?></pre>
<h2>Routes</h2>
-<pre><?= view.network.routes ?></pre>
+<pre><?= view.value.routes.value ?></pre>
diff --git a/health-proc-html.lsp b/health-proc-html.lsp
index 7d57ef5..299c605 100644
--- a/health-proc-html.lsp
+++ b/health-proc-html.lsp
@@ -3,7 +3,7 @@
<h1>Process information</h1>
<h2>Processor</h2>
-<pre><?= view.proc.processor ?></pre>
+<pre><?= view.value.processor.value ?></pre>
<h2>Memory</h2>
-<pre><?= view.proc.memory ?></pre>
+<pre><?= view.value.memory.value ?></pre>
diff --git a/health-storage-html.lsp b/health-storage-html.lsp
index f8f5b73..4e9a0a8 100644
--- a/health-storage-html.lsp
+++ b/health-storage-html.lsp
@@ -1,39 +1,65 @@
<? local view = ... ?>
+<? displaydisk = function(disk, name)
+io.write("<pre>"..disk.value.."</pre>\n")
+io.write('<TABLE STYLE="margin:0px;padding:0px;border:0px">\n')
+io.write(" <TR>\n")
+io.write(" <TD>0%</TD>\n")
+if tonumber(disk.used) > 0 then
+ io.write(' <TD WIDTH="'..disk.used..'%" STYLE="background:red;border:2px solid black;')
+ if tonumber(disk.used) < 100 then io.write('border-right:none;') end
+ io.write('"><CENTER><B>')
+ if ( tonumber(disk.used) > 10) then io.write(disk.used .. "%") end
+ io.write('</B></CENTER></TD>\n')
+end
+if tonumber(disk.used) < 100 then
+ io.write(' <TD WIDTH="'..(100-disk.used)..'%" STYLE="background:#0c0;border:2px solid black;')
+ if tonumber(disk.used) > 0 then io.write('border-left:none;') end
+ io.write('"><CENTER><B>')
+ if ( 90 > tonumber(disk.used)) then io.write((100-disk.used) .. "%") end
+ io.write('</B></CENTER></TD>\n')
+end
+io.write(' <TD>100%</TD>\n')
+io.write(" </TR>\n")
+io.write("</TABLE>\n")
+io.write('<TABLE STYLE="margin:0px;padding:0px;border:0px;margin-top:5px;">\n')
+io.write(" <TR>\n")
+io.write(' <TD WIDTH="100px"><B>'..name..'</B></TD><TD STYLE="background:red;border:2px solid black;" WIDTH="20px"></TD><TD WIDTH="70px"><B>=Used</B></TD><TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD><TD><B>=Free</B></TD>\n')
+io.write(" </TR>\n")
+io.write("</TABLE>\n")
+end ?>
+
<h1>Storage</h1>
<h2>Floppy capacity</h2>
-<pre><?= view.storage.floppycapacity.value ?></pre>
-
-<? if (view.storage.floppycapacity.used) then ?>
-<TABLE STYLE="margin:0px;padding:0px;border:0px">
- <TR>
- <TD>0%</TD><TD WIDTH="<?= view.storage.floppycapacity.used ?>%" STYLE="background:red;border:2px solid black;border-right:none;"><CENTER><B><? if ( tonumber(view.storage.floppycapacity.used) > 10) then io.write(view.storage.floppycapacity.used .. "%") end ?></B></CENTER></TD><TD WIDTH="<?= (100-view.storage.floppycapacity.used) ?>%" STYLE="background:#0c0;border:2px solid black;border-left:none;"><CENTER><B><? if ( 90 > tonumber(view.storage.floppycapacity.used)) then io.write((100-view.storage.floppycapacity.used) .. "%") end ?></B></CENTER></TD><TD>100%</TD>
- </TR>
-</TABLE>
-<TABLE STYLE="margin:0px;padding:0px;border:0px;margin-top:5px;">
- <TR>
- <TD WIDTH="100px"><B><?= view.storage.floppycapacity.used_label ?></B></TD><TD STYLE="background:red;border:2px solid black;" WIDTH="20px"></TD><TD WIDTH="70px"><B>=Used</B></TD><TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD><TD><B>=Free</B></TD>
- </TR>
-</TABLE>
+<? if (view.value.floppy) then
+for name,floppy in pairs(view.value.floppy.value) do
+ displaydisk(floppy, name)
+end
+else ?>
+No Floppy mounted
<? end ?>
-<h2>Disk capacity</h2>
-<pre><?= view.storage.hdcapacity.value ?></pre>
+<h2>Harddrive capacity</h2>
+<? if (view.value.hd) then
+for name,hd in pairs(view.value.hd.value) do
+ displaydisk(hd, name)
+end
+else ?>
+No Harddrive mounted
+<? end ?>
-<? if (view.storage.hdcapacity.used) then ?>
-<TABLE STYLE="margin:0px;padding:0px;border:0px">
- <TR>
- <TD>0%</TD><TD WIDTH="<?= view.storage.hdcapacity.used ?>%" STYLE="background:red;border:2px solid black;border-right:none;"><CENTER><B><? if ( tonumber(view.storage.hdcapacity.used) > 10) then io.write(view.storage.hdcapacity.used .. "%") end ?></B></CENTER></TD><TD WIDTH="<?= (100-view.storage.hdcapacity.used) ?>%" STYLE="background:#0c0;border:2px solid black;border-left:none;"><CENTER><B><? if ( 90 > tonumber(view.storage.hdcapacity.used)) then io.write((100-view.storage.hdcapacity.used) .. "%") end ?><B/></CENTER></TD><TD>100%</TD>
- </TR>
-</TABLE>
-<TABLE STYLE="margin:0px;padding:0px;border:0px;margin-top:5px;">
- <TR>
- <TD WIDTH="100px"><B><?= view.storage.hdcapacity.used_label ?></B></TD><TD STYLE="background:red;border:2px solid black;" WIDTH="20px"></TD><TD WIDTH="70px"><B>=Used</B></TD><TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD><TD><B>=Free</B></TD>
- </TR>
-</TABLE>
+<h2>RAM Disk capacity</h2>
+<? if (view.value.ramdisk) then
+for name,ramdisk in pairs(view.value.ramdisk.value) do
+ displaydisk(ramdisk, name)
+end
+else ?>
+No RAM Disk mounted
<? end ?>
+<? if view.value.partitions then ?>
<h2>Disk partitions</h2>
-<pre><?= view.storage.partitions ?></pre>
+<pre><?= view.value.partitions.value ?></pre>
+<? end ?>
diff --git a/health-system-html.lsp b/health-system-html.lsp
index ee7feb9..ec6ea12 100644
--- a/health-system-html.lsp
+++ b/health-system-html.lsp
@@ -3,27 +3,28 @@
<h1>System</h1>
<h2>Versions and names</h2>
-<pre><?= view.system.version ?></pre>
-<pre><?= view.system.uname ?></pre>
+<pre><?= view.value.version.value ?></pre>
+<pre><?= view.value.uname.value ?></pre>
<h2>Uptime</h2>
-<pre><?= view.system.uptime ?></pre>
+<pre><?= view.value
+.uptime.value ?></pre>
<h2>Time/TimeZone</h2>
-<pre><?= view.system.date ?></pre>
-<pre><?= view.system.timezone ?></pre>
+<pre><?= view.value.date.value ?></pre>
+<pre><?= view.value.timezone.value ?></pre>
<h2>Memory</h2>
-<pre><?= view.system.memory.value ?></pre>
+<pre><?= view.value.memory.value ?></pre>
<TABLE STYLE="margin:0px;padding:0px;border:0px">
<TR>
- <TD>0%</TD><TD WIDTH="<?= view.system.memory.used ?>%" STYLE="background:red;border:2px solid black;border-right:none;"><CENTER><B><? if ( tonumber(view.system.memory.used) > 10) then io.write(view.system.memory.used .. "%") end ?></B></CENTER></TD><TD WIDTH="<?= (100-view.system.memory.used) ?>%" STYLE="background:#0c0;border:2px solid black;border-left:none;""><CENTER><B><? if ( 90 > tonumber(view.system.memory.used)) then io.write((100-view.system.memory.used) .. "%") end ?></B></CENTER></TD><TD>100%</TD>
+ <TD>0%</TD><TD WIDTH="<?= view.value.memory.used ?>%" STYLE="background:red;border:2px solid black;border-right:none;"><CENTER><B><? if ( tonumber(view.value.memory.used) > 10) then io.write(view.value.memory.used .. "%") end ?></B></CENTER></TD><TD WIDTH="<?= (100-view.value.memory.used) ?>%" STYLE="background:#0c0;border:2px solid black;border-left:none;""><CENTER><B><? if ( 90 > tonumber(view.value.memory.used)) then io.write((100-view.value.memory.used) .. "%") end ?></B></CENTER></TD><TD>100%</TD>
</TR>
</TABLE>
<TABLE STYLE="margin:0px;padding:0px;border:0px;margin-top:5px;">
<TR>
- <TD WIDTH="100px"><B><?= view.system.memory.used_label ?></B></TD><TD STYLE="background:red;;border:2px solid black;" WIDTH="20px"></TD><TD WIDTH="70px"><B>=Used</B></TD><TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD><TD><B>=Free</B></TD>
+ <TD WIDTH="100px"><B>Total:</B></TD><TD STYLE="background:red;;border:2px solid black;" WIDTH="20px"></TD><TD WIDTH="70px"><B>=Used</B></TD><TD STYLE="background:#0c0;border:2px solid black;" WIDTH="20px"></TD><TD><B>=Free</B></TD>
</TR>
</TABLE>