summaryrefslogtreecommitdiffstats
path: root/opennhrp-model.lua
blob: ebff6a85890926a160004b93970cf5e5761f362b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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