summaryrefslogtreecommitdiffstats
path: root/snort-controller.lua
diff options
context:
space:
mode:
Diffstat (limited to 'snort-controller.lua')
-rw-r--r--snort-controller.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/snort-controller.lua b/snort-controller.lua
new file mode 100644
index 0000000..880b6d6
--- /dev/null
+++ b/snort-controller.lua
@@ -0,0 +1,40 @@
+module (..., package.seeall)
+require("posix")
+-- Cause an http redirect to our "read" action
+-- We use the self.conf table because it already has prefix,controller,etc
+-- The redir code is defined in the application error handler (acf-controller)
+local list_redir = function (self)
+ self.conf.action = "read"
+ self.conf.type = "redir"
+ error (self.conf)
+end
+
+mvc={}
+mvc.on_load = function(self, parent)
+ if (self.worker[self.conf.action] == nil ) or ( self.conf.action == "init" ) then
+ self.worker[self.conf.action] = list_redir(self)
+ end
+end
+
+-- Public methods
+
+read = function (self)
+ local srvcmdresult = nil
+ local srvcmd = self.clientdata.srvcmd
+-- local srvcmd = "start"
+ if (srvcmd ~= nil) then
+ srvcmdresult = self.model:service_control(srvcmd)
+ if (srvcmd == "stop") or (srvcmd == "restart") then
+ posix.sleep(3) -- Wait for the process to start|stop
+ else
+ posix.sleep(1) -- Wait for the process to start|stop
+ end
+ end
+ local alerts,alertresult = self.model:read_alert()
+ return ({status = self.model:getstatus(),
+ srvcmdresult=srvcmdresult,
+ alerts=alerts,
+ alertresult=alertresult,
+ url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller} )
+end
+