summaryrefslogtreecommitdiffstats
path: root/ipsectools-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'ipsectools-model.lua')
-rw-r--r--ipsectools-model.lua110
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
+
+