diff options
author | Ted Trask <ttrask01@yahoo.com> | 2008-05-24 15:41:37 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2008-05-24 15:41:37 +0000 |
commit | 6c63347a6ae2f25de2bf8cf9aea93ea31a786418 (patch) | |
tree | 5937cfeacf14ee8ea7d7f805e5bb6c7c6e721cfb | |
parent | fca6053366b3728ec57874478868ca0e0b9120cf (diff) | |
download | acf-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.roles | 2 | ||||
-rw-r--r-- | health-controller.lua | 10 | ||||
-rw-r--r-- | health-model.lua | 70 | ||||
-rw-r--r-- | health-modules-html.lsp | 2 | ||||
-rw-r--r-- | health-network-html.lsp | 4 | ||||
-rw-r--r-- | health-proc-html.lsp | 4 | ||||
-rw-r--r-- | health-storage-html.lsp | 80 | ||||
-rw-r--r-- | health-system-html.lsp | 17 |
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> |