summaryrefslogtreecommitdiffstats
path: root/openntpd-controller.lua
diff options
context:
space:
mode:
Diffstat (limited to 'openntpd-controller.lua')
-rw-r--r--openntpd-controller.lua306
1 files changed, 10 insertions, 296 deletions
diff --git a/openntpd-controller.lua b/openntpd-controller.lua
index a206213..d8fa596 100644
--- a/openntpd-controller.lua
+++ b/openntpd-controller.lua
@@ -1,55 +1,7 @@
module (..., package.seeall)
-- Load libraries
-require("posix")
-require("validator")
-
--- ################################################################################
--- LOCAL FUNCTIONS
-
-local function displaycmdmanagement(pidofstatus)
- -- Add a management buttons
- local management = {}
- management.start = cfe({ name="cmdmanagement",
- label="Program control-panel",
- value="Start",
- type="submit",
- })
- management.stop = cfe({ name="cmdmanagement",
- label="Program control-panel",
- value="Stop",
- type="submit",
- })
- management.restart = cfe({ name="cmdmanagement",
- label="Program control-panel",
- 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",
- })
-
- -- Disable management buttons based on if the process is running or not
- if (pidofstatus) then
- management.start.disabled = "yes"
- else
- management.stop.disabled = "yes"
- management.restart.disabled = "yes"
- end
-
- return management
-end
-
-local function displaycmdsave(self)
- -- Add a cmd button to the view
- local cmdsave = cfe({ name="cmdsave",
- label="Save/Apply above settings",
- value="Save",
- type="submit",
- })
- return cmdsave
-end
+require("controllerfunctions")
-- ################################################################################
-- PUBLIC FUNCTIONS
@@ -57,259 +9,21 @@ end
default_action = "status"
function config(self)
- local errors = {}
- local modify_opts = nil
- local cmdsavereply = {}
- local cmdsaveresult = {}
-
- -- Start/Stop/Restart process
- local cmdmanagement, actionresult
- if ( self.clientdata.cmdmanagement) then
- cmdmanagement = cfe({
- name="cmdmanagement",
- label="Previous action result",
- action=cfe({
- name="cmdmanagement",
- value=string.lower(self.clientdata.cmdmanagement), -- This row contains start/stop/restart (one of these commands)
- }),
- })
- actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action )
- end
-
- if (self.clientdata.cmdsavesetstimeonstartup) then
- if (self.clientdata.setstimeonstartup) then
- modify_opts = self.model:modify_opts("add", "/etc/conf.d/ntpd", "NTPD_OPTS", "-s")
- else
- modify_opts = self.model:modify_opts("remove", "/etc/conf.d/ntpd", "NTPD_OPTS", "-s")
- end
- end
-
- if ( self.clientdata.hosts_cmd_delete) then
- local variables="hosts_cmd_delete"
- for var in string.gmatch(variables, "%S+") do
- -- Send nil instead of "" causes the parameter to be removed/deleted/empty/unset the variable in the config-file
--- if (self.clientdata[var] == "") then self.clientdata[var] = nil end
- cmdsaveresult[var], cmdsavereply[var] = self.model:modify_config( "delete",
- "server%S?" ,
- string.match(self.clientdata["hosts_list"], "^%s*(%S*)") )
- end
- end
-
- if ( self.clientdata.listen_cmd_delete) then
- local variables="listen_cmd_delete"
- for var in string.gmatch(variables, "%S+") do
- -- Send nil instead of "" causes the parameter to be removed/deleted/empty/unset the variable in the config-file
--- if (self.clientdata[var] == "") then self.clientdata[var] = nil end
- cmdsaveresult[var], cmdsavereply[var] = self.model:modify_config( "delete",
- "listen on" ,
- string.match(self.clientdata["listen_list"], "^%s*(%S*)") )
- end
- end
-
- if ( self.clientdata.hosts_cmd_add) then
- local variables="hosts_cmd_add"
- for var in string.gmatch(variables, "%S+") do
- local freetocommit
- -- Do some checking before executing the command
- if not (self.clientdata["hosts_type"]) then
- cmdsavereply["hosts_type"] = cfe ({
- errtxt="You need chose type of host to add!",
- })
- cmdsavereply["hosts_add"] = cfe ({
- value=self.clientdata["hosts_add"],
- })
- end
- if (#self.clientdata["hosts_add"] == 0) then
- cmdsavereply["hosts_add"] = cfe ({ errtxt="You need to add a valid hostname/IP!", })
- end
-
- if not ( cmdsavereply["hosts_type"] and cmdsavereply["hosts_type"]["errtxt"]) and not
- (cmdsavereply["hosts_add"] and cmdsavereply["hosts_add"]["errtxt"]) then
- -- Send nil instead of "" causes the parameter to be removed/deleted/empty/unset the variable in the config-file
--- if (self.clientdata[var] == "") then self.clientdata[var] = nil end
- cmdsaveresult[var], cmdsavereply[var] = self.model:modify_config( "add",
- self.clientdata["hosts_type"] ,
- self.clientdata["hosts_add"] )
- end
- end
- end
-
- if ( self.clientdata.listen_cmd_add) then
- local variables="listen_cmd_add"
- for var in string.gmatch(variables, "%S+") do
- local freetocommit
- -- Do some checking before executing the command
- if (#self.clientdata["listen_add"] == 0) then
- cmdsavereply["listen_add"] = cfe ({ errtxt="You need to add a valid hostname/IP!", })
- end
-
- if not ( cmdsavereply["listen_add"] and cmdsavereply["listen_add"]["errtxt"]) then
- -- Send nil instead of "" causes the parameter to be removed/deleted/empty/unset the variable in the config-file
--- if (self.clientdata[var] == "") then self.clientdata[var] = nil end
- cmdsaveresult[var], cmdsavereply[var] = self.model:modify_config( "add",
- "listen on",
- self.clientdata["listen_add"] )
- end
- end
- end
-
- local url = self.conf.script .. self.conf.prefix .. self.conf.controller
- local status = self.model:getstatus(self)
- local config = self.model:getconfig()
-
- -- Add buttons
- config.hosts_cmd_delete = cfe({
- name = "hosts_cmd_delete",
- label="Delete selected host",
- value="Delete",
- type="submit",
- })
- config.hosts_cmd_delete.descr="Mark a item in '" .. config.hosts_list.label .. "'-list before pressing [" .. config.hosts_cmd_delete.value .. "]."
- if (#config.hosts_list.option == 0) then
- config.hosts_cmd_delete.disabled = "yes"
- config.hosts_cmd_delete.descr = ""
- end
-
- config.listen_cmd_delete = cfe({
- name = "listen_cmd_delete",
- label="Delete selected host",
- value="Delete",
- type="submit",
- })
- config.listen_cmd_delete.descr="Mark a item in '" .. config.listen_list.label .. "'-list before pressing [" .. config.listen_cmd_delete.value .. "]."
- if (#config.listen_list.option == 0) then
- config.listen_cmd_delete.disabled = "yes"
- config.listen_cmd_delete.descr = ""
- end
-
- config.hosts_cmd_add = cfe({
- name = "hosts_cmd_add",
- label="Add selected host",
- value="Add",
- type="submit",
- })
- config.hosts_cmd_add.descr="Enter your values in '" .. config.hosts_add.label .. "' and chose '" .. config.hosts_type.label .. "' before pressing [" .. config.hosts_cmd_add.value .. "]."
-
- config.listen_cmd_add = cfe({
- name = "listen_cmd_add",
- label="Add new listen address",
- value="Add",
- type="submit",
- })
- config.listen_cmd_add.descr="Enter your values in '" .. config.listen_add.label .. "' before pressing [" .. config.listen_cmd_add.value .. "]."
-
- -- 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
-
- -- Write out erros and descriptions from previous actions
- for k,v in pairs(cmdsavereply) do
- if (config[k]) and (cmdsavereply[k]["errtxt"]) and (#cmdsavereply[k]["errtxt"] > 0) then
- config[k]["errtxt"] = tostring(cmdsavereply[k]["errtxt"])
- end
- if (config[k]) and (cmdsavereply[k]["descr"]) and (#cmdsavereply[k]["descr"] > 0) then
- config[k]["descr"] = tostring(cmdsavereply[k]["descr"])
- end
- if (config[k]) and (cmdsavereply[k]["value"]) and (#cmdsavereply[k]["value"] > 0) then
- config[k]["value"] = tostring(cmdsavereply[k]["value"])
- end
- end
-
- return ( {status = status,
- config = config,
- management = management,
- url = url,
- errors = errors,
- cmdsavereply = cmdsavereply,
- cmdsaveresult = cmdsaveresult,
- modify_opts = modify_opts,
- clientdata = self.clientdata,
- } )
+ return controllerfunctions.handle_form(self, self.model.read_config, self.model.update_config, self.clientdata, "Save", "Edit OpenNTPD Config", "OpenNTPD Configuration Saved")
end
-function logfile(self)
-
- local status = self.model:getstatus(self)
- local logfile = self.model:get_logfile()
-
- return ({
- status = status,
- logfile = logfile,
- url = url,
- })
+function status (self)
+ return self.model.getstatus()
end
-function status (self)
- local cmd = self.clientdata.cmd
- local url = self.conf.script .. self.conf.prefix .. self.conf.controller
- return ( {status = self.model:getstatus(self), url = url } )
+function details (self)
+ return self.model.getstatusdetails()
end
function expert (self)
- local modifications = self.clientdata.filecontent or ""
- if ( self.clientdata.cmdsave ) then
- modifications = self.model:update_filecontent(modifications)
- end
- local url = self.conf.script .. self.conf.prefix .. self.conf.controller
-
- -- Start/Stop/Restart process
- local cmdmanagement, actionresult
- if ( self.clientdata.cmdmanagement) then
- cmdmanagement = cfe({
- name="cmdmanagement",
- label="Previous action result",
- action=cfe({
- name="cmdmanagement",
- value=string.lower(self.clientdata.cmdmanagement), -- This row contains start/stop/restart (one of these commands)
- }),
- })
- actionresult, cmdmanagement = self.model:startstop_service( cmdmanagement.action )
- end
-
- local status = self.model:getstatus(self)
- local file = self.model:get_filedetails()
-
- -- Add buttons
- file.cmdsave = cfe ({
- name="cmdsave",
- label="Apply settings",
- value="Apply",
- type="submit",
- })
- if (self.clientdata.cmdsave) then
- file.cmdsave.descr="* Changes has been saved!"
- end
-
-
- -- 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
-
- return ( {
- status = status,
- file = file,
- modifications = modifications,
- management = management,
- url = url, } )
+ return controllerfunctions.handle_form(self, self.model.get_filedetails, self.model.update_filedetails, self.clientdata, "Save", "Edit Config", "Configuration Set")
end
+function startstop(self)
+ return controllerfunctions.handle_startstop(self, self.model.startstop_service, self.model.getstatus, self.clientdata)
+end