diff options
-rw-r--r-- | opennhrp-model.lua | 51 | ||||
-rw-r--r-- | opennhrp-status-html.lsp | 35 |
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>") |