module(..., package.seeall) require("fs") require("procps") require("getopts") require("format") require("daemoncontrol") require("validator") local configfile = "/etc/racoon/racoon.conf" local processname = "racoon" local pkgname = "ipsec-tools" local baseurl = "/etc/racoon/" local function get_version() local cmd_output_result, cmd_output_error local cmd = "/sbin/apk_version -vs " .. pkgname .." 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 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 racoonctl(proto) local cmd_output_result, cmd_output_error local cmd = "/usr/sbin/racoonctl show-sa ".. proto .. " 2>/dev/null" local f = io.popen( cmd ) local cmdresult = f:read("*a") if (cmdresult) and (#cmdresult > 0) then cmd_output_result = cmdresult else cmd_output_error = "Not programmed to autostart" end f:close() return cmd_output_result,cmd_output_error end function process_status_text(procname) local t = procps.pidof(procname) if #t > 0 then return "Enabled" else return "Disabled" end 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=process_status_text(processname), }) local autostart_sequense, autostart_errtxt = autostarts() status.autostart = cfe({ name="autostart", label="Autostart sequence", value=autostart_sequense, errtxt=autostart_errtxt, }) local racoon_sequense, racoon_errtxt = racoonctl("isakmp") status.show_isakmp = cfe({ name="show_isakmp", label="racoon show-sa isakmp", value=racoon_sequense, errtxt=racoon_errtxt, }) local racoon_sequense, racoon_errtxt = racoonctl("esp") status.show_esp = cfe({ name="show_esp", label="racoon show-sa esp", value=racoon_sequense, errtxt=racoon_errtxt, }) local racoon_sequense, racoon_errtxt = racoonctl("ah") status.show_ah = cfe({ name="show_ah", label="racoon show-sa ah", value=racoon_sequense, errtxt=racoon_errtxt, }) return status end