summaryrefslogtreecommitdiffstats
path: root/openntpd-model.lua
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2007-12-04 15:28:15 +0000
committerMika Havela <mika.havela@gmail.com>2007-12-04 15:28:15 +0000
commit0ab11b9ff3aedaa2b1ed23bdd407588bde2576cf (patch)
treeb366754b6c919b8d2b06c39ed5f471379b56c5fe /openntpd-model.lua
downloadacf-openntpd-0ab11b9ff3aedaa2b1ed23bdd407588bde2576cf.tar.bz2
acf-openntpd-0ab11b9ff3aedaa2b1ed23bdd407588bde2576cf.tar.xz
Starting up openntpdv1.0_alpha1
git-svn-id: svn://svn.alpinelinux.org/acf/openntpd/trunk@403 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'openntpd-model.lua')
-rw-r--r--openntpd-model.lua118
1 files changed, 118 insertions, 0 deletions
diff --git a/openntpd-model.lua b/openntpd-model.lua
new file mode 100644
index 0000000..742c64a
--- /dev/null
+++ b/openntpd-model.lua
@@ -0,0 +1,118 @@
+module (..., package.seeall)
+
+require("format")
+require("fs")
+
+local ntpdconfig = "/etc/ntpd.conf"
+local progname = "openntpd"
+
+local function config_content( f )
+ local config = {}
+ config.name = f
+ local conf_file = fs.read_file_as_array ( config.name )
+ 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,b,c = string.match ( l, "^%s*(%S+)%s*(%S*)%s*(%S*).*$" )
+ if (a) then
+ if not (config[string.lower(a)]) then
+ config[string.lower(a)] = {}
+ end
+ if (string.lower(a) == "listen") then
+ table.insert (config[string.lower(a)], {value=c} )
+ else
+ table.insert (config[string.lower(a)], {value=b} )
+ end
+ end
+ end
+ end
+ return config
+end
+
+local function file_info ( path )
+ require("posix")
+ local filedetails = posix.stat(path)
+ filedetails["owner"]=rawget((posix.getpasswd(filedetails["uid"])),"name")
+ filedetails["group"]=rawget((posix.getgroup(filedetails["gid"])),"name")
+ filedetails["atimelong"]=os.date("%c", filedetails["atime"])
+ filedetails["mtimelong"]=os.date("%c", filedetails["mtime"])
+ filedetails["longname"]=path
+ filedetails["name"]=basename(path)
+
+ if ( filedetails["size"] > 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")
+ f:close()
+ return programversion
+end
+
+
+-- ################################################################################
+-- PUBLIC FUNCTIONS
+--[[
+function restart_service ()
+ local f,err = io.popen("/etc/init.d/shorewall restart")
+ local restart = f:read("*a")
+ f:close()
+ local status = get_status()
+ status.restart = restart
+ return status
+end
+--]]
+--[[
+function get_status ()
+ local f,error = io.popen("/sbin/shorewall status")
+ local fake = f:read("*l")
+ local fake = f:read("*l")
+ local programstatus = f:read("*l")
+ local programstate = f:read("*l")
+ f:close()
+ local f,error = io.popen("/sbin/shorewall version")
+ local programversion = f:read("*l")
+ f:close()
+ return {programversion=programversion,programstatus=programstatus,programstate=programstate}
+end
+--]]
+
+function get ()
+ local path = ntpdconfig
+ config = config_content ( path )
+ config["version"] = get_version()
+ return config
+end
+
+function get_filecontent (self)
+ local path = ntpdconfig
+ file_content = nil
+ if (fs.is_file(path)) then
+ local filedetails = file_info(path)
+ local file = io.open( path )
+ local file_result = file:read("*a") or "unknown"
+ file:close()
+ file_content = {name=name, value=file_result, filedetails=filedetails}
+ 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
+end
+
+function update_filecontent (self, modifications)
+ local path = ntpdconfig
+ local file_result,err = fs.write_file(path, format.dostounix(modifications))
+ file_content = get_filecontent()
+ return file_content
+end
+