diff options
author | Mika Havela <mika.havela@gmail.com> | 2008-01-15 13:44:22 +0000 |
---|---|---|
committer | Mika Havela <mika.havela@gmail.com> | 2008-01-15 13:44:22 +0000 |
commit | 91f600e62d83f942e722dd18e7c42c244557a610 (patch) | |
tree | b1374d3109b9140da0f0fecde2a8d739e091f9b3 /shorewall-model.lua | |
parent | 880d1fbbed5e15454383dccf7c3497a8772df118 (diff) | |
download | acf-shorewall-91f600e62d83f942e722dd18e7c42c244557a610.tar.bz2 acf-shorewall-91f600e62d83f942e722dd18e7c42c244557a610.tar.xz |
Created a confirmation when you start/stop/restart the firewall.
git-svn-id: svn://svn.alpinelinux.org/acf/shorewall/trunk@572 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'shorewall-model.lua')
-rw-r--r-- | shorewall-model.lua | 68 |
1 files changed, 20 insertions, 48 deletions
diff --git a/shorewall-model.lua b/shorewall-model.lua index b3a8abe..fe9c18e 100644 --- a/shorewall-model.lua +++ b/shorewall-model.lua @@ -1,34 +1,18 @@ -- shorewall model methods module (..., package.seeall) require("format") +require("fs") +require("daemoncontrol") local baseurl = "/etc/shorewall/" -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 - -- ################################################################################ -- PUBLIC FUNCTIONS +function startstop_service ( self, state ) + return daemoncontrol.daemoncontrol("shorewall", state) +end + function check_config () check = nil check = {} @@ -39,21 +23,12 @@ function check_config () return check end -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 () +function getstatus () 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") + local programstatus = f:read("*l") or "" + local programstate = f:read("*l") or "" f:close() local f,error = io.popen("/sbin/shorewall version") local programversion = "shorewall-" .. f:read("*l") @@ -61,32 +36,28 @@ function get_status () return {version=programversion,status=programstatus,state=programstate} end - function get_filelist () local filepath = baseurl local listed_files = {} local k,v for name in posix.files(filepath) do if not string.match(name, "^%.") and not string.match(name, "^Makefile") then - local filedetails = file_info(filepath .. name) - table.insert ( listed_files , {name=name, longname=filepath .. name, filedetails=filedetails} ) + local filedetails = fs.stat(filepath .. name) + table.insert ( listed_files , {name=name, path=filepath .. name, filedetails=filedetails} ) end end table.sort(listed_files, function (a,b) return (a.name < b.name) end ) return listed_files end -function get_filecontent (self, name) - local path = baseurl .. name - file_content = nil +function get_filedetails (self, name) + local name = basename(name) + local path = baseurl .. basename(name) + local file_content = nil local available_files = get_filelist() for k,v in pairs(available_files) do if ( available_files[k].name == name ) then - local file = io.open( path ) - local file_result = file:read("*a") or "unknown" - file:close() - local filedetails = file_info(path) - file_content = cfe{name=name, value=file_result, filedetails=filedetails} + file_content = cfe{name=name, content=fs.read_file(path), details=fs.stat(path)} end end return file_content @@ -104,7 +75,8 @@ function get_logfile () end function update_filecontent (self, name, modifications) - path = baseurl .. name + path = baseurl .. basename(name) + name=basename(name) local available_files = get_filelist() for k,v in pairs(available_files) do if ( available_files[k].name == name ) then @@ -112,11 +84,11 @@ function update_filecontent (self, name, modifications) local file_result,err = file:write(format.dostounix(modifications)) file:close() if (err ~= nil) then - local filedetails = file_info(path) + local filedetails = fs.stat(path) file_content = {name=name, value=file_result, filedetails=filedetails, err=err} end end end - return file_content + return name, file_content end |