summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--logfiles-controller.lua2
-rw-r--r--logfiles-model.lua52
-rw-r--r--logfiles-status-html.lsp2
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>