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