diff options
Diffstat (limited to 'ipsectools-model.lua')
-rw-r--r-- | ipsectools-model.lua | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/ipsectools-model.lua b/ipsectools-model.lua new file mode 100644 index 0000000..5545c78 --- /dev/null +++ b/ipsectools-model.lua @@ -0,0 +1,110 @@ +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 + 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 + +end + +local function racoonctl() + local cmd_output_result, cmd_output_error + local cmd = "/usr/sbin/racoonctl -lll show-sa isakmp 2>/dev/null" + local f = io.popen( cmd ) + local cmd_output_result = f:read("*a") + f:close() + return cmd_output_result,cmd_output_error +end + +local function ip_xfrm(mode) + local cmd_output_result + local cmd = "/bin/ip xfrm " .. mode .. " 2>/dev/null" + local f = io.popen( cmd ) + local cmd_output_result = f:read("*a") + f:close() + return cmd_output_result +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, + }) + + status.show_isakmp = cfe({ name="show_isakmp", + label="racoonctl -lll show-sa isakmp", + value=racoonctl(), + }) + + status.ip_xfrm_state = cfe({ name="show_esp", + label="ip xfrm state", + value=ip_xfrm("state"), + }) + + status.ip_xfrm_policy = cfe({ name="ip_xfrm_policy", + label="ip xfrm policy", + value=ip_xfrm("policy"), + }) + + return status +end + + |