diff options
-rw-r--r-- | clamav-controller.lua | 6 | ||||
-rw-r--r-- | clamav-listfiles-html.lsp | 32 | ||||
-rw-r--r-- | clamav-model.lua | 23 | ||||
-rw-r--r-- | clamav.menu | 2 | ||||
-rw-r--r-- | clamav.roles | 4 |
5 files changed, 58 insertions, 9 deletions
diff --git a/clamav-controller.lua b/clamav-controller.lua index 20baa25..0cb3f25 100644 --- a/clamav-controller.lua +++ b/clamav-controller.lua @@ -17,6 +17,10 @@ function details(self) return self.model.getstatusdetails() end +function listfiles(self) + return self.model.getfilelist() +end + function expert(self) - return controllerfunctions.handle_form(self, self.model.get_filedetails, self.model.update_filedetails, self.clientdata, "Save", "Edit ClamAV Config", "Configuration Set") + return controllerfunctions.handle_form(self, function() return self.model.getfiledetails(self.clientdata.filename) end, self.model.updatefiledetails, self.clientdata, "Save", "Edit ClamAV File", "File Saved") end diff --git a/clamav-listfiles-html.lsp b/clamav-listfiles-html.lsp new file mode 100644 index 0000000..42caa56 --- /dev/null +++ b/clamav-listfiles-html.lsp @@ -0,0 +1,32 @@ +<% local data, viewlibrary, page_info, session = ... +require("viewfunctions") +%> + +<% displaycommandresults({"expert", "startstop"}, session) %> + +<% if viewlibrary and viewlibrary.dispatch_component then + viewlibrary.dispatch_component("status") +end %> + +<h1><%= html.html_escape(data.label) %></h1> + +<TABLE> + <TR style="background:#eee;font-weight:bold;"> + <TD style="padding-right:20px;white-space:nowrap;text-align:left;" class="header">File</TD> + <TD style="padding-right:20px;white-space:nowrap;text-align:left;" class="header">Size</TD> + <TD style="white-space:nowrap;text-align:left;" class="header">Last Modified</TD> + </TR> + + +<% for i,file in ipairs(data.value) do %> + <TR> + <TD style="padding-right:20px;white-space:nowrap;"><%= html.link{value = "expert?filename=" .. file.filename.."&redir="..page_info.orig_action, label=file.filename} %></TD> + <TD style="padding-right:20px;white-space:nowrap;"><%= html.html_escape(file.filesize) %></TD> + <TD style="white-space:nowrap;" width="90%"><%= html.html_escape(file.mtime) %></TD> + </TR> +<% end %> +</TABLE> + +<% if viewlibrary and viewlibrary.dispatch_component then + viewlibrary.dispatch_component("startstop") +end %> diff --git a/clamav-model.lua b/clamav-model.lua index 90e2fa5..61d7b91 100644 --- a/clamav-model.lua +++ b/clamav-model.lua @@ -6,9 +6,9 @@ require("fs") require("format") -- Set variables -local configfile = "/etc/clamd.conf" local processname = "clamd" local packagename = "clamav" +local filelist = {"/etc/clamd.conf", "/etc/freshclam.conf"} local path = "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin " @@ -30,10 +30,23 @@ function getstatusdetails() return cfe({ type="longtext", value="", label="ClamAV Status Details" }) end -function get_filedetails() - return modelfunctions.getfiledetails(configfile) +function getfilelist() + local listed_files = {} + + for i,name in ipairs(filelist) do + local filedetails = fs.stat(name) or {} + table.insert ( listed_files , {filename=name, mtime=filedetails.mtime or "---", filesize=filedetails.size or "0"} ) + end + + table.sort(listed_files, function (a,b) return (a.filename < b.filename) end ) + + return cfe({ type="list", value=listed_files, label="ClamAV File List" }) +end + +function getfiledetails(filename) + return modelfunctions.getfiledetails(filename, filelist) end -function update_filedetails(filedetails) - return modelfunctions.setfiledetails(filedetails, {configfile}) +function updatefiledetails(filedetails) + return modelfunctions.setfiledetails(filedetails, filelist) end diff --git a/clamav.menu b/clamav.menu index 7e48424..815d5fd 100644 --- a/clamav.menu +++ b/clamav.menu @@ -1,4 +1,4 @@ #CAT GROUP/DESC TAB ACTION Applications 50ClamAV Status details -Applications 50ClamAV Expert expert +Applications 50ClamAV Expert listfiles Applications 50ClamAV Logfile logfile diff --git a/clamav.roles b/clamav.roles index e6f20f6..7392371 100644 --- a/clamav.roles +++ b/clamav.roles @@ -1,3 +1,3 @@ USER=clamav:status,clamav:logfile,clamav:details,clamav:startstop -EXPERT=clamav:expert -ADMIN=clamav:status,clamav:logfile,clamav:details,clamav:startstop,clamav:expert +EXPERT=clamav:listfiles,clamav:expert +ADMIN=clamav:status,clamav:logfile,clamav:details,clamav:startstop,clamav:listfiles,clamav:expert |