diff options
Diffstat (limited to 'logfiles-model.lua')
-rw-r--r-- | logfiles-model.lua | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/logfiles-model.lua b/logfiles-model.lua index c18fc1b..31fb088 100644 --- a/logfiles-model.lua +++ b/logfiles-model.lua @@ -148,29 +148,45 @@ get = function () return list_files( "/var/log", "/tmp/squid/log" ) end --- Function to check if a file is deletable, and if it is, then delete it. -delete = function (filetodelete) - local deletedfile = cfe({ label="Delete result", value="File '" .. filetodelete .. "' has not been deleted!" }) +get_delete = function() + local filename = cfe({ type="select", label="File name", option={} }) -- Get a list of files that could be deleted local available_files = get() for i,file in ipairs(available_files.value) do - if ( file.value.filename.value == filetodelete ) then - -- Check if file is deletable (or in use) - if ( not file.value.inuse.value ) then - local st = fs.stat(filetodelete) - while st.type == "link" do - st = fs.stat(posix.readlink(st.path)) - end - local status, err = os.remove( st.path ) - if not ( err ) then - deletedfile.value = "File '"..filetodelete.."' has been successfully deleted!" - else - deletedfile.errtxt = err - end + filename.option[#filename.option+1] = file.value.filename.value + end + + return cfe({ type="group", value={filename=filename}, label="Delete logfile" }) +end + +-- Function to check if a file is deletable, and if it is, then delete it. +delete = function (self, filetodelete) + local success = modelfunctions.validateselect(filetodelete.value.filename) + + if success then + local lastmod,size,fileinuseresult = file_info(filetodelete.value.filename.value) + -- Check if file is deletable (or in use) + if fileinuseresult then + success = false + filetodelete.value.filename.errtxt = "File in use" + else + local st = fs.stat(filetodelete.value.filename.value) + while st.type == "link" do + st = fs.stat(posix.readlink(st.path)) + end + local status, err = os.remove( st.path ) + if err then + success = false + filetodelete.value.filename.errtxt = err end - break end end - return deletedfile + + if not success then + filetodelete.errtxt = "Failed to delete file" +self.logevent(filetodelete.value.filename.errtxt) + end + + return filetodelete end |