summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2008-03-27 14:24:10 +0000
committerMika Havela <mika.havela@gmail.com>2008-03-27 14:24:10 +0000
commitb9997890f266def9882f4efd7753f1d59e458f2b (patch)
treecf1747471f5991a0ca897d737c03102586516804
parentaa161face01518a6b97226479b47f4940b749374 (diff)
downloadacf-opennhrp-b9997890f266def9882f4efd7753f1d59e458f2b.tar.bz2
acf-opennhrp-b9997890f266def9882f4efd7753f1d59e458f2b.tar.xz
Reorganized the output of data.
Added information of Autostart sequence. git-svn-id: svn://svn.alpinelinux.org/acf/opennhrp/trunk@846 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r--opennhrp-model.lua51
-rw-r--r--opennhrp-status-html.lsp35
2 files changed, 74 insertions, 12 deletions
diff --git a/opennhrp-model.lua b/opennhrp-model.lua
index ebff6a8..42034d9 100644
--- a/opennhrp-model.lua
+++ b/opennhrp-model.lua
@@ -11,6 +11,16 @@ local configfile = "/etc/opennhrp/opennhrp.conf"
local processname = "opennhrp"
local baseurl = "/etc/opennhrp/"
+local type_status = {
+ ['incomplete']="The protocol address is being resolved",
+ ['negative']="This protocol address is not available",
+ ['cached']="Protocol address was resolved successfully",
+ ['route']="this is a dynamic shortcut",
+ ['dynamic']="only in core branches, the entry is from a node that connected to us",
+ ['local']="local interface address",
+ ['static']="static mapping from configuration file (e.g. address of core)",
+ }
+
local function get_version()
local cmd_output_result, cmd_output_error
local cmd = "/sbin/apk_version -vs " .. processname .." 2>/dev/null"
@@ -25,6 +35,21 @@ local function get_version()
return cmd_output_result,cmd_output_error
end
+local function autostarts()
+ local cmd_output_result, cmd_output_error
+ local cmd = "/sbin/rc_status | egrep '^S' | egrep '" .. processname .."' 2>/dev/null"
+ local f = io.popen( cmd )
+ local cmdresult = f:read("*a")
+ if (cmdresult) and (#cmdresult > 0) then
+ cmd_output_result = "Process will autostart at next boot (at sequence '" .. string.match(cmdresult,"^%a+(%d%d)") .. "')"
+ else
+ cmd_output_error = "Not programmed to autostart"
+ end
+ f:close()
+ return cmd_output_result,cmd_output_error
+
+end
+
local function opennhrpctl_show()
local cmd_output_result={}
local cmd_output_result_table={}
@@ -48,12 +73,21 @@ local function opennhrpctl_show()
if ( cnt > 0 ) and (v ~= "") then
local k = string.match(v,"^(.-):%s?.*")
cmd_output_result_table[cnt][k]=string.match(v,"^.-:%s?(.*)")
+ if (string.lower(k) == "type") then
+ local tooltip = string.match(v,"^.-:%s?(.*)")
+ cmd_output_result_table[cnt]["Tooltip"] = type_status[tooltip]
+ end
end
end
return cmd_output_result_table,opennhrpstatus,cmd_output_error
end
+
+
+
+
+
-- ################################################################################
-- PUBLIC FUNCTIONS
@@ -68,14 +102,29 @@ function getstatus()
label="Program status",
value=procps.pidof(processname),
})
+ local autostart_sequense, autostart_errtxt = autostarts()
+ status.autostart = cfe({ name="autostart",
+ label="Autostart sequence",
+ value=autostart_sequense,
+ errtxt=autostart_errtxt,
+ })
+
local opennhrpctl_show, opennhrpctl_status = opennhrpctl_show()
status.stats = cfe({ name="stats",
label="Programstatus reports",
value=opennhrpctl_status,
})
+
+ local peers_list = {}
+ for k,v in pairs(opennhrpctl_show) do
+ if (v.Interface) and not (peers_list[v.Interface]) then
+ peers_list[v.Interface] = {}
+ end
+ table.insert(peers_list[v.Interface], v)
+ end
status.show = cfe({ name="show",
label="Peers",
- option=opennhrpctl_show,
+ option=peers_list,
})
return status
diff --git a/opennhrp-status-html.lsp b/opennhrp-status-html.lsp
index 6137246..1fa098a 100644
--- a/opennhrp-status-html.lsp
+++ b/opennhrp-status-html.lsp
@@ -29,18 +29,14 @@ end
<DL>
<?
local myform = form.status
-local tags = { "status", "version", }
+local tags = { "status", "version","autostart", }
informationform(myform,tags)
?>
</DL>
-<? ---[[ ?>
<H2>PROGRAM SPECIFIC OPTIONS/INFORMATION</H2>
<DL>
<?
---local myform = form.status
---local tags = { "stats", }
---informationform(myform,tags)
local myform = form.status.show
io.write("\t<DT")
@@ -49,21 +45,38 @@ io.write(">" .. myform.label .. "</DT>\n")
io.write("\t\t<DD>\n")
for k,v in pairs(myform.option or {}) do
io.write("\t\t\t<TABLE STYLE='margin-bottom:10px;'>")
- io.write("\n\t\t\t<TR><TD STYLE='font-weight:bold;'><IMG SRC='/static/tango/16x16/devices/computer.png' width='16' height='16' alt> Protocol-Address</TD><TD STYLE='font-weight:bold;'>" .. v["Protocol-Address"] .. "</TD></TR>\n")
+ io.write("\n\t\t\t<TR><TD STYLE='font-weight:bold;'><IMG SRC='/static/tango/16x16/places/network-server.png' width='16' height='16' alt> " .. k .. "</TD><TD></TD></TR>\n")
for k1,v1 in pairs(v) do
- if (k1 ~= "Protocol-Address") then
- io.write("<TR><TD WIDTH='100px' STYLE='font-weight:bold;padding-left:30px;'>"..k1.."</TD><TD>"..v1.."</TD></TR>\n")
+ io.write("\n\t\t\t<TR STYLE='padding-bottom:10px;'><TD WIDTH='150px' STYLE='font-weight:bold;padding-left:20px;'><IMG SRC='/static/tango/16x16/status/")
+
+ if (v1) and (string.lower(v1['Type']) == "incomplete") then
+ io.write("network-error")
+ elseif (v1) and (string.lower(v1['Type']) == "negative") then
+ io.write("network-offline")
+ elseif (v1) and (string.lower(v1['Flags']) == "up") then
+ io.write("network-idle")
+ elseif (v1) and (string.lower(v1['Flags']) == "used up") then
+ io.write("network-transmit-receive")
+ else
+ io.write("network-error")
+ end
+ io.write(".png' width='16' height='16' title='" .. v1["Tooltip"] .. "'> " .. v1["Protocol-Address"] .. "</TD><TD STYLE='font-weight:bold;'></TD></TR>\n")
+ for k2,v2 in pairs(v1) do
+ if (k2) and not ((string.lower(k2) == "protocol-address") or
+ (string.lower(k2) == "tooltip") or
+ (string.lower(k2) == "interface")) then
+ io.write("<TR><TD STYLE='font-weight:bold;padding-left:40px;'>"..k2.."</TD><TD>"..v2.."</TD></TR>\n")
+ end
end
+
end
+
io.write("\t\t\t</TABLE>")
end
io.write("\t\t</DD>\n")
?>
</DL>
-<? --]] ?>
-
-
<?
--[[ DEBUG INFORMATION
io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")