summaryrefslogtreecommitdiffstats
path: root/logfiles-model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'logfiles-model.lua')
-rw-r--r--logfiles-model.lua52
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