summaryrefslogtreecommitdiffstats
path: root/opennhrp-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'opennhrp-model.lua')
-rw-r--r--opennhrp-model.lua84
1 files changed, 84 insertions, 0 deletions
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
+
+