summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2008-03-26 14:41:22 +0000
committerMika Havela <mika.havela@gmail.com>2008-03-26 14:41:22 +0000
commit34db03ce3b6a455a17da33bf10a8eb0165b90c2c (patch)
treeaa27e055e2ec913cfea979e1c865c2f35429e931
downloadacf-opennhrp-34db03ce3b6a455a17da33bf10a8eb0165b90c2c.tar.bz2
acf-opennhrp-34db03ce3b6a455a17da33bf10a8eb0165b90c2c.tar.xz
First commit on opennhrp.
Only shows standard process information and shows connected peers (or what to call them). git-svn-id: svn://svn.alpinelinux.org/acf/opennhrp/trunk@841 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r--opennhrp-controller.lua37
-rw-r--r--opennhrp-model.lua84
-rw-r--r--opennhrp-status-html.lsp74
-rw-r--r--opennhrp.menu3
4 files changed, 198 insertions, 0 deletions
diff --git a/opennhrp-controller.lua b/opennhrp-controller.lua
new file mode 100644
index 0000000..e592bbc
--- /dev/null
+++ b/opennhrp-controller.lua
@@ -0,0 +1,37 @@
+module(..., package.seeall)
+
+-- This is the object/text used when we want to add a new record
+
+require("format")
+
+local newrecordtxt = "[New]"
+
+local list_redir = function (self)
+ self.conf.action = "status"
+ self.conf.type = "redir"
+ error (self.conf)
+end
+
+mvc = {}
+mvc.on_load = function(self, parent)
+ if (self.worker[self.conf.action] == nil ) or ( self.conf.action == "init" ) then
+ self.worker[self.conf.action] = list_redir(self)
+ end
+end
+
+local function getstatus(self)
+ local status = self.model.getstatus()
+ if (#status.status.value > 0) then
+ status.status.value = "Enabled"
+ else
+ status.status.value = "Disabled"
+ end
+
+ return status
+end
+-- ################################################################################
+-- PUBLIC FUNCTIONS
+function status(self)
+ return { status=getstatus(self) }
+end
+
diff --git a/opennhrp-model.lua b/opennhrp-model.lua
new file mode 100644
index 0000000..ebff6a8
--- /dev/null
+++ b/opennhrp-model.lua
@@ -0,0 +1,84 @@
+module(..., package.seeall)
+
+require("fs")
+require("procps")
+require("getopts")
+require("format")
+require("daemoncontrol")
+require("validator")
+
+local configfile = "/etc/opennhrp/opennhrp.conf"
+local processname = "opennhrp"
+local baseurl = "/etc/opennhrp/"
+
+local function get_version()
+ local cmd_output_result, cmd_output_error
+ local cmd = "/sbin/apk_version -vs " .. processname .." 2>/dev/null"
+ local f = io.popen( cmd )
+ local cmdresult = f:read("*l")
+ if (cmdresult) and (#cmdresult > 0) then
+ cmd_output_result = string.match(cmdresult,"^%S*") or "Unknown"
+ else
+ cmd_output_error = "Program not installed"
+ end
+ f:close()
+ return cmd_output_result,cmd_output_error
+end
+
+local function opennhrpctl_show()
+ local cmd_output_result={}
+ local cmd_output_result_table={}
+ local cmd_output_error, opennhrpstatus
+ local cmd = "/usr/sbin/opennhrpctl show 2>/dev/null"
+ local f = io.popen( cmd )
+ for line in f:lines() do
+ if string.find(line, "^Status:") then
+ opennhrpstatus=line
+ else
+ table.insert(cmd_output_result, line)
+ end
+ end
+ f:close()
+ local cnt = 0
+ for k,v in pairs(cmd_output_result) do
+ if string.find(v,"^Interface") then
+ cnt = cnt + 1
+ cmd_output_result_table[cnt] = {}
+ end
+ if ( cnt > 0 ) and (v ~= "") then
+ local k = string.match(v,"^(.-):%s?.*")
+ cmd_output_result_table[cnt][k]=string.match(v,"^.-:%s?(.*)")
+ end
+ end
+
+ return cmd_output_result_table,opennhrpstatus,cmd_output_error
+end
+
+-- ################################################################################
+-- PUBLIC FUNCTIONS
+
+
+function getstatus()
+ local status = {}
+ status.version = cfe({ name = "version",
+ label="Program version",
+ value=get_version(),
+ })
+ status.status = cfe({ name="status",
+ label="Program status",
+ value=procps.pidof(processname),
+ })
+ local opennhrpctl_show, opennhrpctl_status = opennhrpctl_show()
+ status.stats = cfe({ name="stats",
+ label="Programstatus reports",
+ value=opennhrpctl_status,
+ })
+ status.show = cfe({ name="show",
+ label="Peers",
+ option=opennhrpctl_show,
+ })
+
+ return status
+end
+
+
diff --git a/opennhrp-status-html.lsp b/opennhrp-status-html.lsp
new file mode 100644
index 0000000..6137246
--- /dev/null
+++ b/opennhrp-status-html.lsp
@@ -0,0 +1,74 @@
+<? local form = ... ?>
+<?
+--[[ DEBUG INFORMATION
+io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
+io.write(html.cfe_unpack(form))
+io.write("</span>")
+--]]
+?>
+
+<?
+function informationform(myform,tags)
+ for k,v in pairs(tags) do
+ if (myform[v]) then
+ local val = myform[v]
+ io.write("\t<DT")
+ if (#val.errtxt > 0) then io.write(" class='error'") end
+ io.write(">" .. val.label .. "</DT>\n")
+
+ io.write("\t\t<DD>" .. val.value .. "\n")
+ if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end
+ if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end
+ io.write("\t\t</DD>\n")
+ end
+ end
+end
+?>
+
+<H1>SYSTEM INFO</H1>
+<DL>
+<?
+local myform = form.status
+local tags = { "status", "version", }
+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")
+if (#myform.errtxt > 0) then io.write(" class='error'") end
+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")
+ 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")
+ 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>")
+io.write(html.cfe_unpack(form))
+io.write("</span>")
+--]]
+?>
+
diff --git a/opennhrp.menu b/opennhrp.menu
new file mode 100644
index 0000000..cb5d25d
--- /dev/null
+++ b/opennhrp.menu
@@ -0,0 +1,3 @@
+#CAT GROUP/DESC TAB ACTION
+Networking 45NHRP Status status
+