summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2007-12-07 10:36:41 +0000
committerMika Havela <mika.havela@gmail.com>2007-12-07 10:36:41 +0000
commit6f8bd836d7be61dd04b3521a2ffefe7e927de18d (patch)
tree1e37c12a367e8541978ee8c992dc282fe260d3d8
parent95f699fa380368841157fdd7043ff7730bcae50e (diff)
downloadacf-openntpd-6f8bd836d7be61dd04b3521a2ffefe7e927de18d.tar.bz2
acf-openntpd-6f8bd836d7be61dd04b3521a2ffefe7e927de18d.tar.xz
Cleaning up code. Adding functionallity to add/remove listen address. Error message displayed when something is missing for the desired action. The controller keeps track of things needed before asking the model.
git-svn-id: svn://svn.alpinelinux.org/acf/openntpd/trunk@418 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r--openntpd-controller.lua92
-rw-r--r--openntpd-model.lua17
-rw-r--r--openntpd-settings-html.lsp18
3 files changed, 86 insertions, 41 deletions
diff --git a/openntpd-controller.lua b/openntpd-controller.lua
index 4a74fca..6a22744 100644
--- a/openntpd-controller.lua
+++ b/openntpd-controller.lua
@@ -21,39 +21,72 @@ end
settings = function (self)
local cmd = self.clientdata.cmd
- errors = {}
+ local errors = {}
+ local modify_opts = nil
local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller
- if (self.clientdata.settings_cmd ~= nil) then
+ local hosts_cmd = tostring(self.clientdata.hosts_cmd)
+ local hosts_cmd = string.lower(hosts_cmd)
+ local listen_cmd = tostring(self.clientdata.listen_cmd)
+ local listen_cmd = string.lower(listen_cmd)
+ local settings_cmd = tostring(self.clientdata.settings_cmd)
+ local settings_cmd = string.lower(settings_cmd)
+
+ -- SECTION WHERE YOU SAVE NEW SETTINGS
+ if ( hosts_cmd == "delete") then
+ if not (self.clientdata.hosts_list) then
+ errors["hosts_list"]="You need to choose something in the list to delete"
+ end
+ if (self.clientdata.hosts_list) then
+ modify_opts = self.model:modify_config(hosts_cmd, nil, self.clientdata.hosts_list)
+ end
+ elseif (hosts_cmd == "add") then
+ if (self.clientdata.hosts_add == "") then
+ errors["hosts_add"]="You need to enter a server/IP"
+ end
+ if (self.clientdata.hosts_type == nil) then
+ errors["hosts_type"]="You need to choose type of server"
+ end
+ if (self.clientdata.hosts_add ~= "") and (self.clientdata.hosts_type ~= nil) then
+ modify_opts = self.model:modify_config(hosts_cmd, nil, self.clientdata.hosts_type .. " " .. self.clientdata.hosts_add)
+ end
+ elseif (listen_cmd == "add") then
+ if (self.clientdata.listen_add == "") then
+ errors["listen_add"]="You need to enter what you want to listen at"
+ end
+ if (self.clientdata.listen_add ~= "") then
+ modify_opts = self.model:modify_config(listen_cmd, nil, "listen on " .. self.clientdata.listen_add)
+ end
+ elseif (listen_cmd == "delete") then
+ if not (self.clientdata.listen_list) then
+ errors["listen_list"]="You need to choose something in the list to delete"
+ end
+ if (self.clientdata.listen_list) then
+ modify_opts = self.model:modify_config(listen_cmd, nil, self.clientdata.listen_list)
+ end
+ elseif (settings_cmd == "save") then
if (self.clientdata.settings_startup) 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) then
- if (string.lower(self.clientdata.hosts_cmd) == "delete") then
- modify_opts = self.model:modify_config(self.clientdata.hosts_cmd, nil, self.clientdata.hosts_list)
- elseif (string.lower(self.clientdata.hosts_cmd) == "add") then
- if (self.clientdata.hosts_add == "") then
- errors = {hosts_add = "You need to enter a server/IP" }
- end
- if (self.clientdata.hosts_type == nil) then
- errors = {hosts_type = "You need to choose type of server" }
- end
- if (self.clientdata.hosts_add ~= "") and (self.clientdata.hosts_type ~= nil) then
- modify_opts = self.model:modify_config(self.clientdata.hosts_cmd, nil,
- self.clientdata.hosts_type .. " " .. self.clientdata.hosts_add)
- end
- end
- end
--- DEBUG INFO
--- modify_opts = self.clientdata.hosts_cmd
+
+ DEBUGMODEL = modify_opts -- <<< DEBUG INFO >>>
+ DEBUGCLIENTDATA = self.clientdata -- <<< DEBUG INFO >>>
if ( cmd ~= nil ) then
local startstop = self.model:startstop_service( cmd )
posix.sleep(1) -- Wait for the process to start|stop
- return ( {statusinfo = self.model:get(), startstop = "", modify_opts=modify_opts, url = url } )
+ return ( {statusinfo = self.model:get(),
+ startstop = "",
+ modify_opts=modify_opts,
+ url = url } )
else
- return ( {statusinfo = self.model:get(), startstop = "", errors = errors, modify_opts=modify_opts, url = url, DEBUG=test } )
+ return ( {statusinfo = self.model:get(), startstop = "",
+ errors = errors,
+ modify_opts=modify_opts,
+ url = url,
+ DEBUGMODEL=DEBUGMODEL,
+ DEBUGCLIENTDATA=DEBUGCLIENTDATA } )
end
end
@@ -74,14 +107,23 @@ advanced = function (self)
if ( filecontent ~= "") then
local me = ( {filecontent = self.model:update_filecontent(filecontent), url = url } )
- return ( {startstop = "", statusinfo = self.model:get(), filecontent = self.model:get_filecontent(), url = url } )
+ return ( {startstop = "",
+ statusinfo = self.model:get(),
+ filecontent = self.model:get_filecontent(),
+ url = url } )
else
if ( cmd ~= nil ) then
local startstop = self.model:startstop_service( cmd )
posix.sleep(1) -- Wait for the process to start|stop
- return ( {startstop = startstop, statusinfo = self.model:get(), filecontent = self.model:get_filecontent(), url = url } )
+ return ( {startstop = startstop,
+ statusinfo = self.model:get(),
+ filecontent = self.model:get_filecontent(),
+ url = url } )
else
- return ( {startstop = "", statusinfo = self.model:get(), filecontent = self.model:get_filecontent(), url = url } )
+ return ( {startstop = "",
+ statusinfo = self.model:get(),
+ filecontent = self.model:get_filecontent(),
+ url = url } )
end
end
end
diff --git a/openntpd-model.lua b/openntpd-model.lua
index 454db5d..f74f941 100644
--- a/openntpd-model.lua
+++ b/openntpd-model.lua
@@ -141,18 +141,22 @@ local addremove_config = function ( addremove, file, variable )
-- Notes on known/unknown bugs: Remove 'server www.test.org' wont work if config has multiple space/tab e.g. 'server www.test.org'
-- FIXME: Make num-space unsensetive.
-- FIXME: Can hold multiple rows with same values (when deleting... every equal row is deleted)
- if (string.lower(addremove) == "delete" ) then
+ local cmdoutput = nil
+ if (addremove == "delete" ) then
cmdtxt = "/bin/sed -i '/" .. variable .. "/d' " .. file
local cmd, error = io.popen ( cmdtxt )
- local cmdoutput = cmd:read("*a")
+ cmdoutput = cmd:read("*a")
cmd:close()
- elseif (string.lower(addremove) == "add" ) then
+ elseif (addremove == "add" ) then
cmdtxt = "/bin/echo '" .. variable .. "' >> " .. file
local cmd, error = io.popen ( cmdtxt )
- local cmdoutput = cmd:read("*a")
+ cmdoutput = cmd:read("*a")
cmd:close()
end
- return cmdtxt
+ if (cmdoutput) then
+ cmdresult = "Config is modified! (" .. cmdtxt .. ")"
+ end
+ return cmdresult
end
-- ################################################################################
-- PUBLIC FUNCTIONS
@@ -171,13 +175,12 @@ function startstop_service ( self, state )
end
-function modify_config (self, addremove, file, variable, opts)
+function modify_config (self, addremove, file, variable)
if (file == nil) then file = ntpdconfig end
-- See to that only *my* configs are modyfied.
if (file == ntpdconfig) or (file == ntpdconfd) then
return addremove_config(addremove, file, variable)
end
-
end
function modify_opts (self, addremove, file, variable, opts)
diff --git a/openntpd-settings-html.lsp b/openntpd-settings-html.lsp
index 16a0eaa..9bc7c78 100644
--- a/openntpd-settings-html.lsp
+++ b/openntpd-settings-html.lsp
@@ -37,7 +37,7 @@ for i = 1, table.maxn(view.statusinfo.server) do ?>
<? end end ?>
</select><BR>
In most cases you could use <i><b>pool.ntp.org</b></i> or<br><i><b>[countryname].pool.ntp.org</i></b> (if listed in <i><b>http://www.pool.ntp.org/</b></i>).
-</dd>
+<? if (view.errors.hosts_list) then io.write("<p class=error>"..view.errors.hosts_list.."</p>") end ?></dd>
<dt>Delete selected host</dt>
<dd><input name="hosts_cmd" type="submit" value="Delete"> (see above)</dd>
@@ -51,25 +51,25 @@ In most cases you could use <i><b>pool.ntp.org</b></i> or<br><i><b>[countryname]
</form>
<h3>'PRESENT TIME' OPTIONS (ACT AS TIME SERVER)</h3>
+
+<form name="cmd" action="" method="POST">
<dt>Listen on address...</dt>
<dd>
-<select name="" size="3" style="width:200px;">
+<select name="listen_list" size="3" style="width:200px;">
<? if (view.statusinfo.listen) then
for i = 1, table.maxn(view.statusinfo.listen) do ?>
- <option name="<? io.write(view.statusinfo.listen[i].value) ?>"><? io.write(view.statusinfo.listen[i].value) ?></option>
+ <option value="listen on <? io.write(view.statusinfo.listen[i].value) ?>"><? io.write(view.statusinfo.listen[i].value) ?></option>
<? end end ?>
</select><BR>Empty list = Listening (acting as server) is disabled<br>"*" = Listen on all local addresses
+<? if (view.errors.listen_list) then io.write("<p class=error>"..view.errors.listen_list.."</p>") end ?>
</dd>
-<? ---[[ FIXME!!! ?>
<dt>Delete selected address</dt>
-<dd><input type="submit" value="Delete"> (see above)</dd>
-
+<dd><input name="listen_cmd" type="submit" value="Delete"> (see above)</dd>
<dt>Add new listen address</dt>
-<dd><input type="text" name="" value=""> <input type="submit" value="Add"></dd>
-<? --]] ?>
-
+<dd><input name="listen_add" type="text" value=""> <input name="listen_cmd" type="submit" value="Add"><? if (view.errors.listen_add) then io.write("<p class=error>"..view.errors.listen_add.."</p>") end ?></dd>
+</form>
<?