-- shorewall model methods module (..., package.seeall) local function XXXfile_info ( path ) local file = io.popen("ls -lh " .. path ) local file_info_result = file:read("*a") or "unknown" file:close() local size,lastmod = string.match(file_info_result, "^%S+%s+%S+%s+%S+%s+%S+%s+(%S+)%s+(%S+%s+%S+%s+%S+)" ) return {lastmod=lastmod,size=size, longname=path} end local function file_info ( path ) require("posix") filedetails = posix.stat(path) filedetails.longname = path return filedetails 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_filelist () local filepath = "/etc/shorewall/" 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} ) end end return listed_files end function get_filecontent (self, name) local path = "/etc/shorewall/" .. name 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} end end return file_content end