summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--syslog-config-html.lsp66
-rw-r--r--syslog-controller.lua190
-rw-r--r--syslog-expert-html.lsp137
-rw-r--r--syslog-model.lua170
-rw-r--r--syslog-status-html.lsp54
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)
+?>