-- Copyright(c) 2007 A. Brodmann - Licensed under terms of GPL2 module (..., package.seeall) -- Load libraries require("modelfunctions") require("posix") require("fs") require("format") require("validator") -- Set variables local processname = "asterisk" local packagename = "asterisk" local baseurl = "/etc/asterisk" -- ################################################################################ -- LOCAL FUNCTIONS local is_valid_filename = function(filename) local dirname = posix.dirname(filename) return validator.is_valid_filename(filename) and string.match(dirname, baseurl) and not string.match(dirname, "%.%.") end -- ################################################################################ -- PUBLIC FUNCTIONS get_status = function() return modelfunctions.getstatus(processname, packagename, "Asterisk Status") end function startstop_service(action) return modelfunctions.startstop_service(processname, action, {"Start", "Stop", "Restart", "Reload"}) end get_file = function(filename) return modelfunctions.getfiledetails(filename, is_valid_filename) end update_file = function(filedetails) local ret = modelfunctions.setfiledetails(filedetails, is_valid_filename) if not ret.errtxt then posix.chmod(filedetails.value.filename.value, "rw-------") posix.chown(filedetails.value.filename.value, posix.getpasswd("asterisk", "uid") or 0, posix.getpasswd("asterisk", "gid") or 0) end return ret end list_files = function() local retval = {} for file in fs.find(null, baseurl) do local details = fs.stat(file) if details.type == "regular" then details.filename = file table.insert(retval, details) end end table.sort(retval, function(a,b) return a.filename < b.filename end) return cfe({ type="structure", value=retval, label="List of Asterisk files" }) end