diff options
Diffstat (limited to 'snort-controller.lua')
| -rw-r--r-- | snort-controller.lua | 91 | 
1 files changed, 46 insertions, 45 deletions
diff --git a/snort-controller.lua b/snort-controller.lua index 926bab3..bc49d4a 100644 --- a/snort-controller.lua +++ b/snort-controller.lua @@ -1,32 +1,18 @@  module (..., package.seeall) + +-- Load libraries  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) + +-- ################################################################################ +-- LOCAL FUNCTIONS + +local function list_redir(self)  	self.conf.action = "status"  	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 - -local function getstatus(self) -	local status = self.model.getstatus() -	if (#status.status.value > 0) then -		status.status.value = "Enabled" -	else -		status.status.value = "Disabled" -	end -	return status -end - -local function displaycmdmanagement(disablestart,disablestop,disablerestart) +local function displaycmdmanagement(pidofstatus)  	-- Add a management buttons  	local management = {}  	management.start = cfe({ name="cmdmanagement", @@ -44,19 +30,38 @@ local function displaycmdmanagement(disablestart,disablestop,disablerestart)  		value="Restart",  		type="submit",  		}) +	-- next CFE can be used to present the result of the previous action +	management.actionresult = cfe({ name="actionresult", +		label="Previous action result", +		descr="",		--Content of this variable is displayed as <PRE> ... </PRE> in BLACK text +		errtxt="",	--Content of this variable is displayed as <PRE> ... </PRE> in RED text +		})  	-- Disable management buttons based on if the process is running or not -	if (disablestart) then management.start.disabled = "yes" end -	if (disablestop) then management.stop.disabled = "yes" end -	if (disablerestart) then management.restart.disabled = "yes" end +	if (pidofstatus) then  +		management.start.disabled = "yes" +	else +		management.stop.disabled = "yes" +		management.restart.disabled = "yes" +	end  	return management  end +-- ################################################################################ +-- PUBLIC FUNCTIONS + +mvc={} +function mvc.on_load(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 +  function status(self)  	local srvcmdresult = nil  	local srvcmd = self.clientdata.srvcmd -	local status = getstatus(self) +	local status = self.model:getstatus(self)  	local alerts,alertresult = self.model:read_alert()  	return ({ @@ -76,7 +81,7 @@ function expert(self)  	end  	-- Start/Stop/Restart process -	local cmdmanagement +	local cmdmanagement, actionresult  	if ( self.clientdata.cmdmanagement) then  	cmdmanagement = cfe({   		name="cmdmanagement", @@ -86,10 +91,10 @@ function expert(self)  			value=string.lower(self.clientdata.cmdmanagement),  -- This row contains start/stop/restart (one of these commands)  			}),  		}) -		local actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action ) +		actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action )  	end -	local status = getstatus(self) +	local status = self.model:getstatus(self)  	local file = self.model:get_filedetails()  	-- Add buttons @@ -103,26 +108,22 @@ function expert(self)  		file.cmdsave.descr="* Changes has been saved!"  	end	 -	-- Management buttons -	local disablestart,disablestop,disablerestart -	-- Disable management buttons based on if the process is running or not -	if (string.lower(status.status.value) == "enabled" ) then -		disablestart = "yes" -	else -		disablestop = "yes" +	-- Management buttons (Hide/show buttons +	local pidofstatus +	if (string.lower(status.status.value) == "enabled" ) then pidofstatus = true end +	management = displaycmdmanagement(pidofstatus) +	if (actionresult) then +		management.actionresult.descr=cmdmanagement.descr +		management.actionresult.errtxt=cmdmanagement.errtxt +	end +	if (status) and (status.version) and (#status.version.value == 0) then +		management.start.disabled = "yes" +		management.stop.disabled = "yes" +		management.restart.disabled = "yes"  	end -	-- Display management buttons -	local management = displaycmdmanagement(disablestart,disablestop,disablerestart) - - - ---	if ( cmd ~= nil ) then ---		startstop = self.model:startstop_service( cmd ) ---	end  	return ( {  		management = management, -		cmdmanagement = cmdmanagement,  		status = status,   		file = file,   		modifications = modifications,  | 
