From 6f3662eb2e408ef2e281626f52419bc966d638cd Mon Sep 17 00:00:00 2001 From: Mika Havela Date: Mon, 14 Jan 2008 19:30:29 +0000 Subject: Cleaned up the code. Moved functions to library instead (to be able to reuse code) git-svn-id: svn://svn.alpinelinux.org/acf/openntpd/trunk@569 ab2d0c66-481e-0410-8bed-d214d4d58bed --- openntpd-config-html.lsp | 102 +++++++++++++++++++---------- openntpd-controller.lua | 59 +++++++---------- openntpd-expert-html.lsp | 83 ++++++++++-------------- openntpd-logfile-html.lsp | 20 ++++-- openntpd-model.lua | 160 +++++++++++++--------------------------------- openntpd-status-html.lsp | 18 ++++++ 6 files changed, 203 insertions(+), 239 deletions(-) diff --git a/openntpd-config-html.lsp b/openntpd-config-html.lsp index b389ad6..34c7b0d 100644 --- a/openntpd-config-html.lsp +++ b/openntpd-config-html.lsp @@ -1,95 +1,127 @@ -

CONFIGURATION

- -

Enable/Disable

-
Change status for this program
-
>Enable - >Disable
- -

Guided config

-

General settings

+

SYSTEM INFO

- -

System time

+
+
Program status +
+
-

SYSTEM INFO

+
+
Program version
+
+
-
Process status
-
- -
Start or stop process
-
-
-
-
+

CONFIGURATION

- +

Advanced config

+

General settings

+
Set time immediately at startup
>
+
+
Save the above settings
-
(see above)
+
(see above) +
+ +

'SET TIME' OPTIONS

+ +
Timeserver hosts...

In most cases you could use pool.ntp.org or [countryname].pool.ntp.org (if listed in http://www.pool.ntp.org/). "..view.errors.hosts_list.."

") end ?>
+
+
Delete selected host
(see above)
+
-
Host to add
-
"..view.errors.hosts_add.."

") end ?>
+
+
>Host to add
+
">"..view.errors.hosts_add.."

") end ?>
+
+ +
>
Type of above server
-
Single server: Server pool:
+
Single server: Server pool:"..view.errors.hosts_type.."

") end ?>
+
+
Add new host
+

'PRESENT TIME' OPTIONS (ACT AS TIME SERVER)

+
Listen on address...

Empty list = Listening (acting as server) is disabled
"*" = Listen on all local addresses "..view.errors.listen_list.."

") end ?>
+
+
Delete selected address
(see above)
+
+
Add new listen address
"..view.errors.listen_add.."

") end ?>
+
+

MANAGEMENT

+ +
+
Program controll-panel
+
+ + + +
+
+ + +
+
Previous action result
+
+
+ + - diff --git a/openntpd-controller.lua b/openntpd-controller.lua index b7d8c8e..7031263 100644 --- a/openntpd-controller.lua +++ b/openntpd-controller.lua @@ -45,6 +45,7 @@ config = function (self) end if (self.clientdata.hosts_type == nil) then errors["hosts_type"]="You need to choose type of server" + errors["hosts_add_orgvalue"] = self.clientdata.hosts_add 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) @@ -73,58 +74,44 @@ config = function (self) DEBUGMODEL = modify_opts -- <<< DEBUG INFO >>> DEBUGCLIENTDATA = self.clientdata -- <<< DEBUG INFO >>> + local startstop if ( cmd ~= nil ) then - local startstop = self.model:startstop_service( cmd ) - posix.sleep(1) -- Wait for the process to start|stop - return ( {status = self.model:get(), - startstop = "", - modify_opts=modify_opts, - url = url } ) - else - return ( {status = self.model:get(), startstop = "", - errors = errors, - modify_opts=modify_opts, - url = url, - DEBUGMODEL=DEBUGMODEL, - DEBUGCLIENTDATA=DEBUGCLIENTDATA } ) + startstop = self.model:startstop_service( cmd ) end + return ( {status = self.model:getstatus(), + config = self.model:getconfig(), + url = url, + errors = errors, + startstop = startstop, } ) end logfile = function (self) - return ( {logfile = self.model:get_logfile(), url = url } ) + return ( {status = self.model:getstatus(), logfile = self.model:get_logfile(), url = url } ) end status = function (self) local cmd = self.clientdata.cmd local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - return ( {status = self.model:get(), url = url } ) + return ( {status = self.model:getstatus(), url = url } ) end expert = function (self) - local file = self.clientdata.modifications or "" + local modifications = self.clientdata.modifications or "" local cmd = self.clientdata.cmd local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - if ( file ~= "") then - local me = ( {file = self.model:update_filecontent(file), url = url } ) - return ( {startstop = "", - status = self.model:get(), - file = 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, - status = self.model:get(), - filec = self.model:get_filecontent(), - url = url } ) - else - return ( {startstop = "", - status = self.model:get(), - file = self.model:get_filecontent(), - url = url } ) - end + if ( modifications ~= "") then + modifications = self.model:update_filecontent(modifications) + end + + if ( cmd ~= nil ) then + startstop = self.model:startstop_service( cmd ) end + + return ( {startstop = startstop, + status = self.model:getstatus(), + file = self.model:get_filedetails(), + modifications = modifications, + url = url, } ) end diff --git a/openntpd-expert-html.lsp b/openntpd-expert-html.lsp index c74b30d..4ccce68 100644 --- a/openntpd-expert-html.lsp +++ b/openntpd-expert-html.lsp @@ -1,17 +1,18 @@ - -

CONFIGURATION

+

SYSTEM INFO

+ +
+
Program status +
+
-

Enable/Disable

-
Change status for this program
-
>Enable - >Disable
+
+
Program version
+
+
+ +

CONFIGURATION

Expert config

@@ -24,7 +25,7 @@ io.write(debugs.variables(view))
Last modified
-
+

File content

@@ -35,43 +36,29 @@ io.write(debugs.variables(view))

Save and apply above settings

Apply settings
- - - - -

System time

- -

SYSTEM INFO

- -
Process status
-
- -
Start or stop process
-
- -

Details

-
File name
-
- -
File size
-
- -
Last modified
-
- - -
Error message
-
+

MANAGEMENT

+ +
+
Program controll-panel
+
+ + + +
+
+ + +
+
Previous action result
+
+
-

Content

-
- - - -
- - - + diff --git a/openntpd-logfile-html.lsp b/openntpd-logfile-html.lsp index 593a8d1..41c7f95 100644 --- a/openntpd-logfile-html.lsp +++ b/openntpd-logfile-html.lsp @@ -1,17 +1,29 @@ - - + +

SYSTEM INFO

+ +
+
Program status +
+
+ +
+
Program version
+
+
+ +

LOGFILE

Details

+
Logfile
+

Content

- - 1073741824 ) then - filedetails["size"]=((filedetails["size"]/1073741824) - (filedetails["size"]/1073741824%0.1)) .. "G" - elseif ( filedetails["size"] > 1048576 ) then - filedetails["size"]=((filedetails["size"]/1048576) - (filedetails["size"]/1048576%0.1)) .. "M" - elseif ( filedetails["size"] > 1024 ) then - filedetails["size"]=((filedetails["size"]/1024) - (filedetails["size"]/1024%0.1)) .. "k" - else - filedetails["size"]=filedetails["size"] - end - return filedetails -end - local function get_version () local f,error = io.popen("/sbin/apk_version -v -s openntpd") local programversion = f:read("*a") @@ -62,19 +47,7 @@ local function get_version () return programversion end -local is_running = function( process ) - local statusreport = nil - local cmdoutput = {} - local cmd, error = io.popen("pidof " .. process ,r) - local cmdoutput = string.gsub(cmd:read("*a"), "%s", "") - cmd:close() - if (cmdoutput ~= "") then - statusreport = "Yes" - end - return statusreport -end - -local last_time_change = function() +local function last_time_change() local cmdoutput = {} local cmd, error = io.popen("cat /var/log/messages | grep ntpd | grep adjusting | tail -1" ,r) local cmdoutput1,cmdoutput2 = string.match(cmd:read("*a"), "^%s*(%S+%s+%S+%s+%S+%s+).*: (.*)$") @@ -84,39 +57,13 @@ local last_time_change = function() return cmdoutput1 .. cmdoutput2 end -local get_confdopts = function(search) - local opts = {} - local searchresult = nil - local conf_file = fs.read_file_as_array ( ntpdconfd ) - for i=1,table.maxn(conf_file) do - local l = conf_file[i] - -- Filter out commented lines - if not string.find ( l, "^[;#].*" ) then - local a = string.match ( l, "^%s*(%S+)%=" ) - if (a) then - if not (opts[string.lower(a)]) then - opts[string.lower(a)] = {} - end - local b = string.gsub(string.match ( l, '^%s*%S+%=(.*)' ), '"', '') - for i=1,table.maxn(format.string_to_table(" ", b)) do - local option = rawget(format.string_to_table(" ", b),i) - table.insert (opts[string.lower(a)], i, option) - if (option == search) then - searchresult = "Yes" - end - end - end - end - end - return opts,searchresult -end -- This function needs: -- addremove = [add|remove] -- file = Path to the file -- variable = e.g. "NTPD_OPTS" -- option = What value to look for to add or remove from the variable. -local addremove_opts = function ( addremove, file, variable, option ) +local function addremove_opts( addremove, file, variable, option ) if (string.lower(addremove) == "remove" ) then cmdtxt = "/bin/sed -i 's/\\(" .. variable .. ".*\\)" .. option .. "/\\1/' " .. file local cmd, error = io.popen ( cmdtxt ) @@ -135,7 +82,7 @@ local addremove_opts = function ( addremove, file, variable, option ) end return cmdtxt end -local addremove_config = function ( addremove, file, variable ) +local function addremove_config( 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) @@ -160,30 +107,21 @@ end -- PUBLIC FUNCTIONS function startstop_service ( self, state ) - local status = {} - -- This is a strange hack to get the init.d script working - local f,err = io.popen("PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin /etc/init.d/ntpd " .. state) - local config = f:read("*a") - f:close() - if (config == "") then - config = "OK!" - end - status.status = config - return status + return daemoncontrol.daemoncontrol("ntpd", state) end function modify_config (self, addremove, file, variable) - if (file == nil) then file = ntpdconfig end + if (file == nil) then file = configfile end -- See to that only *my* configs are modyfied. - if (file == ntpdconfig) or (file == ntpdconfd) then + if (file == configfile) or (file == confdfile) then return addremove_config(addremove, file, variable) end end function modify_opts (self, addremove, file, variable, opts) -- See to that only *my* configs are modyfied. - if (file == ntpdconfig) or (file == ntpdconfd) then + if (file == configfile) or (file == confdfile) then -- See to that the variable/option only exists once if (addremove == "add") then local remove = addremove_opts( "remove", file, variable, opts ) @@ -192,26 +130,26 @@ function modify_opts (self, addremove, file, variable, opts) end end -function get () - local path = ntpdconfig - local config = {} +function getstatus () + local path = configfile + local status = {} if not (fs.is_file(path)) then local file_result,err = fs.write_file(path, "") end - local startstop = is_running ("ntpd") - local config = config_content ( path ) - if (config["listen"]) then - server = "Yes" - else - server = "No" - end - config["version"] = string.match(get_version(), "^(%S*)" ) - config["date"] = os.date() - config["enabled"] = startstop - config["confd"],config["setstimeonstartup"] = get_confdopts("-s") - config["listenstate"] = server - config["timechanged"] = last_time_change() - config["timezone"] = date.what_tz() + status["version"] = string.match(get_version(), "^(%S*)" ) + status["date"] = os.date() + status["enabled"] = procps.pidof("ntpd") + status["setstimeonstartup"] = getopts.getoptsfromfile(confdfile,"NTPD_OPTS", "-s") + status["listenstate"] = server + status["timechanged"] = last_time_change() + return status +end + +function getconfig () + local path = configfile + local config = {} + config = getopts.getoptsfromfile(confdfile) + config["variables"] = config_content(path) return config end @@ -225,27 +163,17 @@ function get_logfile () me.cmd = cmdtxt return me end -function get_filecontent (self) - local path = ntpdconfig - local file_content = get() - if (fs.is_file(path)) then - local filedetails = file_info(path) - local configstatus = get() - local file = io.open( path ) - local file_result = file:read("*a") or "unknown" - file_content["details"]=filedetails - file_content["content"]=file_result - file:close() - else - file_content = {value="", errtxt="File is missing, but will be created when you save your new settings",filedetails={longname=path, size="0", mtimelong=""}} - end - return file_content +function get_filedetails() + local filedetails = {} + local path = configfile + filedetails.details = fs.stat(path) + filedetails.content = fs.read_file(path) + return filedetails end function update_filecontent (self, modifications) - local path = ntpdconfig + local path = configfile local file_result,err = fs.write_file(path, format.dostounix(modifications)) - file_content = get_filecontent() - return file_content + return file_result end diff --git a/openntpd-status-html.lsp b/openntpd-status-html.lsp index 5612f57..43b4a35 100644 --- a/openntpd-status-html.lsp +++ b/openntpd-status-html.lsp @@ -2,22 +2,39 @@

SYSTEM INFO

+
Program status
+
+
Program version
+

PROGRAM SPECIFIC OPTIONS/INFORMATION

+ +
Configured as server (listens)
+
+ +
+
Sets time directly at startup
+
+
+ +
Current time
+
+
Previous time adjustment
+
+ -- cgit v1.2.3