From eb36e4c9737dee9dd3aaef56abcfcf6c407bd100 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Wed, 3 Sep 2008 13:51:14 +0000 Subject: Added javascript tail functionality to logfiles. git-svn-id: svn://svn.alpinelinux.org/acf/alpine-baselayout/trunk@1441 ab2d0c66-481e-0410-8bed-d214d4d58bed --- logfiles-controller.lua | 7 +++++++ logfiles-model.lua | 32 ++++++++++++++++++++++++++++++++ logfiles-status-html.lsp | 2 ++ logfiles-tail-ajax.lsp | 12 ++++++++++++ logfiles-tail-html.lsp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 99 insertions(+) create mode 100644 logfiles-tail-ajax.lsp create mode 100644 logfiles-tail-html.lsp diff --git a/logfiles-controller.lua b/logfiles-controller.lua index dc22115..2af76ee 100644 --- a/logfiles-controller.lua +++ b/logfiles-controller.lua @@ -24,3 +24,10 @@ download = function (self) return filecontent end + +tail = function (self) + if self.clientdata.offset then + self.conf.viewtype = "ajax" + end + return self.model.tail(self.clientdata.name, self.clientdata.offset) +end diff --git a/logfiles-model.lua b/logfiles-model.lua index 2ac4f5d..54aceee 100644 --- a/logfiles-model.lua +++ b/logfiles-model.lua @@ -76,6 +76,38 @@ get_filedetails = function (path) return filedetails end +tail = function(path, offset) + local filename = cfe({ value=path, label="File name", errtxt="File not found" }) + local filesize = cfe({ value="0", label="File size" }) + local filecontent = cfe({ type="longtext", label="File content" }) + local fileoffset = cfe({ value="0", label="File offset" }) + + local available_files = get() + for i,file in ipairs(available_files.value) do + if ( file.value.filename.value == path ) then + filename.errtxt = nil + local f = io.open(path) + if tonumber(offset) then + fileoffset.value = offset + offset = tonumber(offset) + if offset < 0 then + f:seek("end", offset) + else + f:seek("set", offset) + end + filecontent.value = f:read("*all") + filesize.value = f:seek() + else + filesize.value = f:seek("end") + fileoffset.value = filesize.value + end + f:close() + break + end + end + + return cfe({ type="group", value={filename=filename, filecontent=filecontent, filesize=filesize, fileoffset=fileoffset}, label="Tail Config file details" }) +end get = function () -- These folders (and their subfolers) are going to be listed diff --git a/logfiles-status-html.lsp b/logfiles-status-html.lsp index f25d8a4..d11e16d 100644 --- a/logfiles-status-html.lsp +++ b/logfiles-status-html.lsp @@ -9,6 +9,7 @@ Delete View + Tail Save Size Last Modified @@ -24,6 +25,7 @@ <%= html.link{value = "delete?name="..file.value.filename.value, label="Delete" } %> <% end %> <%= html.link{value = "view?name="..file.value.filename.value, label="View" } %> + <%= html.link{value = "tail?name="..file.value.filename.value, label="Tail" } %> <%= html.link{value = "download?name="..file.value.filename.value, label="Download" } %> <%= file.value.filesize.value %> <%= file.value.mtime.value %> diff --git a/logfiles-tail-ajax.lsp b/logfiles-tail-ajax.lsp new file mode 100644 index 0000000..8697208 --- /dev/null +++ b/logfiles-tail-ajax.lsp @@ -0,0 +1,12 @@ +<% local view, viewlibrary, page_info = ... %> +<% + require("json") + require("html") +%> +Status: 200 OK +Content-Type: "application/json" +<% io.write("\n") %> +<% + view.value.filecontent.value = html.html_escape(view.value.filecontent.value) + print(json.encode(view)) +%> diff --git a/logfiles-tail-html.lsp b/logfiles-tail-html.lsp new file mode 100644 index 0000000..5b5d767 --- /dev/null +++ b/logfiles-tail-html.lsp @@ -0,0 +1,46 @@ +<% local form, viewlibrary, page_info = ... %> +<% require("viewfunctions") %> + + + + +

Tail File

+
+<% +displayitem(form.value.filename) +displayitem(form.value.filesize) +%> +
+ +
+
Start / Stop tailing file
+
+ + +
+
-- cgit v1.2.3