diff options
-rw-r--r-- | syslog-config-html.lsp | 66 | ||||
-rw-r--r-- | syslog-controller.lua | 190 | ||||
-rw-r--r-- | syslog-expert-html.lsp | 137 | ||||
-rw-r--r-- | syslog-model.lua | 170 | ||||
-rw-r--r-- | syslog-status-html.lsp | 54 |
5 files changed, 378 insertions, 239 deletions
diff --git a/syslog-config-html.lsp b/syslog-config-html.lsp index dc8fe5a..cce5f25 100644 --- a/syslog-config-html.lsp +++ b/syslog-config-html.lsp @@ -7,26 +7,25 @@ io.write("</span>") --]] ?> -<H1>SYSTEM INFO</H1> -<DL> -<? -local myform = form.status -local tags = { "status", "version", } - -for k,v in pairs(tags) do - local val = myform[v] - io.write("\t<DT") - if (#val.errtxt > 0) then io.write(" class='error'") end - io.write(">" .. val.label .. "</DT>\n") - - io.write("\t\t<DD>" .. val.value .. "\n") - if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. val.descr .. "</P>\n") end - if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. val.errtxt .. "</P>\n") end - io.write("\t\t</DD>\n") - -end ?> -</DL> +<? +function informationform(myform,tags) + io.write("<DL>") + for k,v in pairs(tags) do + if (myform[v]) then + local val = myform[v] + io.write("\t<DT") + if (#val.errtxt > 0) then io.write(" class='error'") end + io.write(">" .. val.label .. "</DT>\n") + io.write("\t\t<DD>" .. val.value .. "\n") + if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end + if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end + io.write("\t\t</DD>\n") + end + end + io.write("</DL>") +end +?> <? function configform(myform,tags) io.write("<DL>") @@ -38,8 +37,8 @@ function configform(myform,tags) io.write(">" .. val.label .. "</DT>\n") io.write("\t\t<DD>" .. html.form[val.type](val) .. "\n") - if (val.descr) and (#val.descr > 0) then io.write("\t\t<PRE CLASS='descr'>" .. val.descr .. "</PRE>\n") end - if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. val.errtxt .. "</P>\n") end + if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end + if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end io.write("\t\t</DD>\n") end end @@ -47,12 +46,19 @@ function configform(myform,tags) end ?> +<H1>SYSTEM INFO</H1> +<? +local myform = form.status +local tags = { "status", "version", } +informationform(myform,tags) +?> + <H1>CONFIGURATION</H1> <? local myform = form.config ?> <form action="<?= form.option.script .. "/" .. form.option.prefix .. form.option.controller .. "/" .. form.option.action ?>" method="POST"> -<? --[[ ?> +<? ---[[ ?> <H2>GUIDED CONFIGURATION</H2> <H3>REMOTE LOGGING</H3> <? @@ -61,6 +67,7 @@ configform(myform,tags) ?> <? --]] ?> +<? --[[ ?> <H2>ADVANCED CONFIGURATION</H2> <H3>GENERAL</H3> <? @@ -79,27 +86,28 @@ configform(myform,tags) local tags = { "localandnetworklog", "remotelogging", } configform(myform,tags) ?> +<? --]] ?> <H2>SAVE AND APPLY ABOVE SETTINGS</H2> <? -local tags = { "cmd_save", } +local tags = { "cmdsave", } configform(myform,tags) ?> </form> <? -local myform = form.management +local cmdform = form.management local tags = { "start", "stop", "restart" } -if (myform) and (myform[tags[1]]) then +if (cmdform) and (cmdform[tags[1]]) then ?> <form name="management" action="" method="POST"> <H1>MANAGEMENT</H1> <dl> - <dt><?= myform[tags[1]]["label"] ?></dt> + <dt><?= cmdform[tags[1]]["label"] ?></dt> <dd> <? for k,v in pairs(tags) do ?> - <? if (myform[v]) then ?> - <? io.write(html.form[myform[v].type](myform[v])) ?> + <? if (cmdform[v]) then ?> + <? io.write(html.form[cmdform[v].type](cmdform[v])) ?> <? end ?> <? end ?> </dd> @@ -114,7 +122,7 @@ if (myform) and (myform[tags[1]]) then <? end ?> <? ----[[ DEBUG INFORMATION +--[[ DEBUG INFORMATION io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>") io.write(html.cfe_unpack(form)) io.write("</span>") diff --git a/syslog-controller.lua b/syslog-controller.lua index a32f103..4fe7755 100644 --- a/syslog-controller.lua +++ b/syslog-controller.lua @@ -23,97 +23,101 @@ local function getstatus(self) return status end -function status(self) - return { status=getstatus(self) } -end - -function config(self) - local cmdmanagement - local cmd_save_result = {} - local cmderrors = {} - if ( self.clientdata.cmd_management) then - local cmd_management = cfe({ - name="cmd_management", - value=string.lower(self.clientdata.cmd_management), - }) - cmdmanagement = self.model:startstop_service( cmd_management ) - end - if ( self.clientdata.cmd_save) then - local variables="logfile loglevel smallerlogs maxsize numrotate localandnetworklog remotelogging" -- Advanced-config options - --local variables="remotelogging" -- Guided-config options - 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 - cmd_save_result[var] = self.model:setconfigs("SYSLOGD_OPTS",var,self.clientdata[var]) - end - end - - local status = getstatus(self) ---[[ - if (#status.status.value > 0) then - status.status.value = "Enabled" - else - status.status.value = "Disabled" - end ---]] - - local config, errors = self.model.getconfig() +local function displaycmdsave(self) -- Add a cmd button to the view - config.cmd_save = cfe({ name="cmd_save", + local cmdsave = cfe({ name="cmdsave", label="Save/Apply above settings", value="Save", type="submit", }) + return cmdsave +end + +local function displaycmdmanagement(disablestart,disablestop,disablerestart) -- Add a management buttons - management = {} - management.start = cfe({ name="cmd_management", + local management = {} + management.start = cfe({ name="cmdmanagement", label="Program control-panel", value="Start", type="submit", }) - management.stop = cfe({ name="cmd_management", + management.stop = cfe({ name="cmdmanagement", label="Program control-panel", value="Stop", type="submit", }) - management.restart = cfe({ name="cmd_management", + management.restart = cfe({ name="cmdmanagement", label="Program control-panel", value="Restart", type="submit", }) + + -- 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 + + return management +end + +function status(self) + return { status=getstatus(self) } +end + +function config(self) + local cmdmanagement + local cmdsavereply = {} + local cmdsaveresult = {} + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + cmdmanagement = self.model:startstop_service( cmdmanagement ) + end + if ( self.clientdata.cmdsave) then + local variables="logfile loglevel smallerlogs maxsize numrotate localandnetworklog remotelogging" -- Advanced-config options +-- local variables="remotelogging" -- Guided-config options + 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:setconfigs( var,self.clientdata[var] ) + end + end + + local status = getstatus(self) + local config = self.model.getconfig() + + -- Write out erros from previous cmdsave actions + for k,v in pairs(cmdsaveresult) do + if not (v) then + config[k]["errtxt"] = tostring(cmdsavereply[k]["errtxt"]) + end + end + + -- Display save button + config.cmdsave = displaycmdsave() + + -- 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 - management.start.disabled = "yes" - management.stop.disabled = nil + disablestart = "yes" else - management.start.disabled = nil - management.stop.disabled = "yes" + disablestop = "yes" end - -- Disable management buttons if there exist errors in the config for k,v in pairs(config) do if (config[k]["errtxt"] ~= "") then - management.start.disabled = "yes" - management.stop.disabled = "yes" - management.restart.disabled = "yes" + disablestart = "yes" + disablestop = "yes" + disablerestart = "yes" break end end - - local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller + -- Display management buttons + local management = displaycmdmanagement(disablestart,disablestop,disablerestart) - local cmderrors_str = "" - for k,v in pairs(cmderrors) do - if (type(v) ~= "table") then - cmderrors_str = v.. "\n" .. cmderrors_str - else - for kk,vv in pairs(v) do - cmderrors_str = tostring(vv) .. "\n" .. tostring(cmderrors_str) - end - end - end - if (cmderrors_str == "") then cmderrors_str = nil end - return { option={ script=ENV["SCRIPT_NAME"], prefix=self.conf.prefix, @@ -121,35 +125,67 @@ function config(self) action = "config", }, status = status, cmdmanagement = cmdmanagement, - clientdata = self.clientdata, management = management, config = config, - cmd_save_result = cmd_save_result, - errors = errors, - cmderrors = cmderrors_str, - url = url, } + debugclientdata = self.clientdata, + } end function expert(self) - local modifications = self.clientdata.modifications or "" - if ( self.clientdata.cmdsave) then - modifications = self.model:update_filecontent(modifications) + local cmdmanagement + if ( self.clientdata.cmdmanagement) then + cmdmanagement = cfe({ + name="cmdmanagement", + value=string.lower(self.clientdata.cmdmanagement), + }) + cmdmanagement = self.model:startstop_service( cmdmanagement ) end - if ( self.clientdata.cmddaemon) then - startstop = self.model:startstop_service( self.clientdata.cmddaemon ) + -- Save changes + local modifications = self.clientdata.filecontent or "" + if ( self.clientdata.cmdsave) then + modifications = self.model:update_filecontent(modifications) end --- local status = self.model.getstatus() local status = getstatus(self) + local config = self.model:get_filedetails() + - local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller + -- Display save button + config.cmdsave = displaycmdsave() - return { file = self.model:get_filedetails(), + -- 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" + end + -- Disable management buttons if there exist errors in the config + for k,v in pairs(config) do + if (config[k]["errtxt"] ~= "") then + disablestart = "yes" + disablestop = "yes" + disablerestart = "yes" + break + end + end + -- Display management buttons + local management = displaycmdmanagement(disablestart,disablestop,disablerestart) + + return { + option={ script=ENV["SCRIPT_NAME"], + prefix=self.conf.prefix, + controller = self.conf.controller, + action = "expert", }, + cmdmanagement = cmdmanagement, + management = management, + config = config, status = status, startstop = startstop, - clientdata = self.clientdata, - url = url, } + debugclientdata = self.clientdata, + } end diff --git a/syslog-expert-html.lsp b/syslog-expert-html.lsp index 527ce22..5907a7a 100644 --- a/syslog-expert-html.lsp +++ b/syslog-expert-html.lsp @@ -1,62 +1,113 @@ -<? local view = ... ?> +<? local form = ... ?> +<? +--[[ DEBUG INFORMATION +io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>") +io.write(html.cfe_unpack(form)) +io.write("</span>") +--]] +?> +<? +function informationform(myform,tags) + io.write("<DL>") + for k,v in pairs(tags) do + if (myform[v]) then + local val = myform[v] + io.write("\t<DT") + if (#val.errtxt > 0) then io.write(" class='error'") end + io.write(">" .. val.label .. "</DT>\n") -<h1>SYSTEM INFO</h1> + io.write("\t\t<DD>" .. val.value .. "\n") + if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end + if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end + io.write("\t\t</DD>\n") + end + end + io.write("</DL>") +end +?> +<? +function configform(myform,tags) + io.write("<DL>") + for k,v in pairs(tags) do + if (myform[v]) then + local val = myform[v] + io.write("\t<DT") + if (#val.errtxt > 0) then io.write(" class='error'") end + io.write(">" .. val.label .. "</DT>\n") -<DL> - <dt><?= view.status.status.label ?></dt> - <dd><?= view.status.status.value ?><p class='error'><?= view.status.status.errtxt ?></p></dd> + io.write("\t\t<DD>" .. html.form[val.type](val) .. "\n") + if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end + if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end + io.write("\t\t</DD>\n") + end + end + io.write("</DL>") +end +?> - <dt><?= view.status.version.label ?></dt> - <dd><?= view.status.version.value ?><p class='error'><?= view.status.version.errtxt ?></p></dd> -</DL> -<h1>CONFIGURATION</h1> -<H2>Expert config</H2> -<h3>File details</h3> +<H1>SYSTEM INFO</H1> +<? +local myform = form.status +local tags = { "status", "version", } +informationform(myform,tags) +?> -<DL> - <dt>File name</dt> - <dd><?= view.file.details.path ?></dd> +<H1>CONFIGURATION</H1> +<? local myform = form.config ?> +<form action="<?= form.option.script .. "/" .. form.option.prefix .. + form.option.controller .. "/" .. form.option.action ?>" method="POST"> - <dt>File size</dt> - <dd><?= view.file.details.size ?></dd> +<H2>EXPERT CONFIGURATION</H2> +<H3>FILE DETAILS</H3> +<? +local tags = { "filename", "filesize", "mtime", "sumerrors" } +informationform(myform,tags) +?> - <dt>Last modified</dt> - <dd><?= view.file.details.mtime ?></dd> -</DL> +<H3>FILE CONTENT</H3> +<? +io.write(html.form[form.config.filecontent.type](form.config.filecontent)) +?> -<h3>File content</h3> +<H2>SAVE AND APPLY ABOVE SETTINGS</H2> +<? +local tags = { "cmdsave", } +configform(myform,tags) +?> +</form> -<form name="myform" action="" method="POST"> -<input name="name" type=hidden value=""> -<textarea name="modifications"><?= view.file.content ?></textarea> -<H2>Save and apply above settings</H2> -<DL> - <DT>Apply settings</DT> - <DD><input class="submit" type="submit" name="cmdsave" value="Apply"/></DD> -</DL> +<? +local cmdform = form.management +local tags = { "start", "stop", "restart" } +if (cmdform) and (cmdform[tags[1]]) then +?> + <form name="management" action="" method="POST"> + <H1>MANAGEMENT</H1> + <dl> + <dt><?= cmdform[tags[1]]["label"] ?></dt> + <dd> + <? for k,v in pairs(tags) do ?> + <? if (cmdform[v]) then ?> + <? io.write(html.form[cmdform[v].type](cmdform[v])) ?> + <? end ?> + <? end ?> + </dd> -<H1>MANAGEMENT</H1> + <? if (form.cmdmanagement) and (#form.cmdmanagement.descr > 0) then ?> + <dt>Previous action result</dt> + <dd><pre><?= form.cmdmanagement.descr ?></pre></dd> + <? end ?> + </dl> + </form> -<dl> - <dt>Program controll-panel</dt> - <dd><form name="cmd" action="" method="POST"> - <input type=submit class="submit" name="cmddaemon" value="start"/> - <input type=submit class="submit" name="cmddaemon" value="stop"/> - <input type=submit class="submit" name="cmddaemon" value="restart"/> - </form> - </dd> - <? if (view.startstop) and (view.startstop.cmdresult) then ?> - <dt>Previous action result</dt> - <dd><pre><?= view.startstop.cmdresult?></pre></dd> - <? end ?> -</dl> +<? end ?> <? ---[[ DEBUG INFORMATION io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>") -io.write(html.cfe_unpack(view)) +io.write(html.cfe_unpack(form)) io.write("</span>") --]] ?> diff --git a/syslog-model.lua b/syslog-model.lua index f4b2681..e9e03d5 100644 --- a/syslog-model.lua +++ b/syslog-model.lua @@ -28,9 +28,10 @@ end -- ################################################################################ -- PUBLIC FUNCTIONS +-- action should be a CFE function startstop_service ( self, action ) local cmd = action.value - local cmdresult,cmdaction,cmdmessage,cmderror = daemoncontrol.daemoncontrol("syslog", cmd) + local cmdresult,cmdmessage,cmderror,cmdaction = daemoncontrol.daemoncontrol("syslog", cmd) action.descr=cmdmessage action.errtxt=cmderror return action @@ -64,15 +65,35 @@ function getstatus() end function get_filedetails() - local filedetails = {} local path = configfile - filedetails.details = {path=path, size="0",mtime=""} - filedetails.content = "" - if (fs.is_file(path)) then - filedetails.details = fs.stat(path) - filedetails.content = fs.read_file(path) - end - return filedetails + local filedetails = fs.stat(path) + local config = getconfig(path) + local file = {} + file["filename"] = cfe({ + name="filename", + label="File name", + value=path, + }) + file["filesize"] = cfe({ + name="filesize", + label="File size", + value=filedetails.size, + }) + file["mtime"] = cfe({ + name="mtime", + label="File name", + value=filedetails.mtime, + }) + file["filecontent"] = cfe({ + type="longtext", + name="filecontent", + label="File content", + value=fs.read_file(path), + }) + + file["sumerrors"] = config.sumerrors + + return file end function getconfig() local config = {} @@ -134,36 +155,40 @@ function getconfig() -- Next section is to print errormessages when configs are wrong if (configcontent["SYSLOGD_OPTS"]["-l"]) and ((tonumber(configcontent["SYSLOGD_OPTS"]["-l"]) == nil) or (tonumber(configcontent["SYSLOGD_OPTS"]["-l"]) > 8)) then - config["loglevel"]["errtxt"] = "Log value is out of range. Please select one of the above." + config["loglevel"]["errtxt"] = "Log value is out of range!\nCurrent value in config is '" .. + configcontent["SYSLOGD_OPTS"]["-l"] .. + "' - This is invalid!\nPlease select one of the above and save your changes." + table.insert(config["loglevel"]["option"], tonumber(configcontent["SYSLOGD_OPTS"]["-l"])) end - if (configcontent["SYSLOGD_OPTS"]["-L"] ~= nil) and (configcontent["SYSLOGD_OPTS"]["-R"] == "") then - config["localandnetworklog"]["errtxt"] = "Logging to local and network is possible unless you define a host for remote logging." + if (configcontent["SYSLOGD_OPTS"]["-L"] ~= nil) and ((configcontent["SYSLOGD_OPTS"]["-R"] == nil) or (configcontent["SYSLOGD_OPTS"]["-R"] == "")) then + config["localandnetworklog"]["errtxt"] = "Logging to local and network (-L) is not possible unless you define a host (-R) for remote logging or remove this option." end - return config -end -service_control = function ( self, srvcmd ) - local srvcmd = string.lower(srvcmd) - local retval = "" - local line = "" - if (srvcmd == "start") or (srvcmd == "stop") or (srvcmd == "restart") then - local file = io.popen( "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin /etc/init.d/syslog " .. srvcmd .. " 2>&1" ) - if file ~= nil then - line = file:read( "*l" ) - while line ~= nil do - retval = retval .. "\n" .. line - line = file:read( "*l" ) - end - file:close() + -- Sum all errors into one cfe + local sumerrors = "" + for k,v in pairs(config) do + if (config[k]["errtxt"] ~= "") then + sumerrors = sumerrors .. config[k]["errtxt"] .. "\n" end - else - retval = "Unknown command!" end - return retval + if (sumerrors ~= "") then + config["sumerrors"] = cfe ({ + name="sumerrors", + label = "Configuration errors", + errtxt = sumerrors, + }) + end + + return config end -function setconfigs(self,variable,parameter,value) +-- IMPORTANT! This function is a exception! It's not fed with CFE's +-- Parameter should be one of the ones defined in the variable 'variabletranslator'. +-- value should be whatever the new value should be. +function setconfigs(self,parameter,value) + -- Set variables + local variable = "SYSLOGD_OPTS" local variabletranslator = ({ logfile = "-O", loglevel = "-l", @@ -173,48 +198,75 @@ function setconfigs(self,variable,parameter,value) localandnetworklog = "-L", remotelogging = "-R", }) - parameter = variabletranslator[parameter] + cmdparameter = variabletranslator[parameter] + + -- Report a error if someone tryes to use a invalid parameter + if not (cmdparameter) then + local availablevariables = "" + for k,v in pairs(variabletranslator) do + availablevariables = k .. ", " .. availablevariables + end + parameter = parameter or "" + return false, cfe({ + name="syslog.model.setconfigs()", + errtxt="'" .. parameter .. "' is not a valid parameter!\nValid options are: " .. availablevariables, + }) + end --TODO: Validate so that user cant add values with '-' (could cause major breakage next time you do getopts) - --If file is missing... then create a new one --- if not (fs.is_file(configfile)) then fs.write_file(configfile, "SYSLOGD_OPTS=\"\"\nKLOGD_OPTS=\"\"") end - if not (variable) or not (parameter) then return nil, "Usage setconfigs(variable,parameter,value)" end - if not (string.find(parameter, "-%a$")) then return nil, "Parameter must be formated '-a' (where a is one upper/lowercase letter [a-z])" end - if (value) and (parameter == "-O") then - local value, errors = validator.is_valid_filename(value, "/var/log" ) - if (errors) then - return cfe({ - name="setconfig", - errtxt= errors, + + -- This config-file only accepts one type of parameters (report error if someone uses wrong parameter) + if not (string.find(cmdparameter, "-%a$")) then + return false, cfe({ + name="syslog.model.setconfigs()", + errtxt="Parameter must be formated '-a' (where a is one upper/lowercase letter [a-z])", + }) + end + + -- Validate userinput (if valid path/filename) + if (value) and (cmdparameter == "-O") then + local cmdresult, cmdmessage = validator.is_valid_filename(value, "/var/log" ) + if not (cmdresult) then + return false, cfe({ + name="syslog.model.setconfigs()", + errtxt=cmdmessage, }) end end ---[[ - if (value) and (parameter == "-R") then - local port = string.match(value, ":(.-)$") - local host = string.match(value, "^(.-):?") + -- Validate userinput (Has the user entered a valid hostname and/or port) + if (value) and (cmdparameter == "-R") then + local hostport = format.string_to_table(value, ":") + local host = hostport[1] + local port = hostport[2] if (port) and not (validator.is_port(port)) then - errors["-R"] = "Port:'" .. tostring(port) .. "' is not a valid portnumber!" + return false, cfe({ + name="syslog.model.setconfigs.getopts.setoptsinfile()", + errtxt="You entered '" .. tostring(port) .. "' as port - This is not valid!", + }) end - errors["-R"] = "Port:'" .. tostring(port) .. "' Host:" .. tostring(host) end ---]] - -- Set specific variables (and their values) - if (value) and ((parameter == "-S") or (parameter == "-L")) then value = "" end - local retval, errorscmd = getopts.setoptsinfile(configfile,variable,parameter,value) --- if (errorscmd) and (#errorscmd > 0) then - local errorscmd = cfe({ name="variable", errtxt=errorscmd, }) --- end - return true, e + + -- Set/Unset checkbox variables + if (value) and ((cmdparameter == "-S") or (cmdparameter == "-L")) then value = "" end + + local cmdresult, cmdmessage, cmderror = getopts.setoptsinfile(configfile,variable,cmdparameter,value) + if (cmderror) then + return false, cfe({ + name="syslog.model.setconfigs.getopts.setoptsinfile()", + errtxt=cmderror, + }) + end + return true, cfe({ + name="syslog.model.setconfigs()", + value=cmdmessage, + }) end +-- modifications should be a CFE function update_filecontent (self, modifications) local path = configfile local file_result,err = fs.write_file(path, format.dostounix(modifications)) return file_result, err end --- ################################################################################ --- OTHER FUNCTIONS - diff --git a/syslog-status-html.lsp b/syslog-status-html.lsp index d6f5ced..50889f8 100644 --- a/syslog-status-html.lsp +++ b/syslog-status-html.lsp @@ -6,47 +6,39 @@ io.write(html.cfe_unpack(form)) io.write("</span>") --]] ?> +<? +function informationform(myform,tags) + io.write("<DL>") + for k,v in pairs(tags) do + if (myform[v]) then + local val = myform[v] + io.write("\t<DT") + if (#val.errtxt > 0) then io.write(" class='error'") end + io.write(">" .. val.label .. "</DT>\n") + + io.write("\t\t<DD>" .. val.value .. "\n") + if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. string.gsub(val.descr, "\n", "<BR>") .. "</P>\n") end + if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. string.gsub(val.errtxt, "\n", "<BR>") .. "</P>\n") end + io.write("\t\t</DD>\n") + end + end + io.write("</DL>") +end +?> <H1>SYSTEM INFO</H1> -<DL> <? local myform = form.status local tags = { "status", "version", } - -for k,v in pairs(tags) do - local val = myform[v] - io.write("\t<DT") - if (#val.errtxt > 0) then io.write(" class='error'") end - io.write(">" .. val.label .. "</DT>\n") - - io.write("\t\t<DD>" .. val.value .. "\n") - if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. val.descr .. "</P>\n") end - if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. val.errtxt .. "</P>\n") end - io.write("\t\t</DD>\n") - -end ?> -</DL> +informationform(myform,tags) +?> <H2>PROGRAM SPECIFIC OPTIONS/INFORMATION</H2> -<DL> <? local myform = form.status local tags = { "logfile", "remotelogging", } - -for k,v in pairs(tags) do - if (myform[v]) then - local val = myform[v] - io.write("\t<DT") - if (#val.errtxt > 0) then io.write(" class='error'") end - io.write(">" .. val.label .. "</DT>\n") - - io.write("\t\t<DD>" .. val.value .. "\n") - if (val.descr) and (#val.descr > 0) then io.write("\t\t<P CLASS='descr'>" .. val.descr .. "</P>\n") end - if (#val.errtxt > 0) then io.write("\t\t<P CLASS='error'>" .. val.errtxt .. "</P>\n") end - io.write("\t\t</DD>\n") - end -end ?> -</DL> +informationform(myform,tags) +?> |