diff options
-rw-r--r-- | logfiles-controller.lua | 2 | ||||
-rw-r--r-- | logfiles-model.lua | 52 | ||||
-rw-r--r-- | logfiles-status-html.lsp | 2 |
3 files changed, 36 insertions, 20 deletions
diff --git a/logfiles-controller.lua b/logfiles-controller.lua index 3c50f3a..72a9b95 100644 --- a/logfiles-controller.lua +++ b/logfiles-controller.lua @@ -10,7 +10,7 @@ status = function (self ) end delete = function (self) - return self:redirect_to_referrer(self.model.delete(self.clientdata.name or "")) + return self.handle_form(self, self.model.get_delete, self.model.delete, self.clientdata, "Delete", "Delete File", "File Deleted") end view = function (self) 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 diff --git a/logfiles-status-html.lsp b/logfiles-status-html.lsp index 804182f..3706253 100644 --- a/logfiles-status-html.lsp +++ b/logfiles-status-html.lsp @@ -25,7 +25,7 @@ <% if file.value.inuse.value then %> in use <% else %> - <%= html.link{value = "delete?name="..file.value.filename.value, label="Delete" } %> + <%= html.link{value = "delete?filename="..file.value.filename.value.."&submit=true", label="Delete" } %> <% end %></TD> <% end %> <TD style="padding-right:20px;white-space:nowrap;"><%= html.link{value = "view?name="..file.value.filename.value, label="View" } %></TD> |