summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lbu-controller.lua13
-rw-r--r--lbu-listbackups-html.lsp2
-rw-r--r--lbu-model.lua38
3 files changed, 30 insertions, 23 deletions
diff --git a/lbu-controller.lua b/lbu-controller.lua
index 8ced688..64a479c 100644
--- a/lbu-controller.lua
+++ b/lbu-controller.lua
@@ -1,5 +1,4 @@
module(..., package.seeall)
-require("controllerfunctions")
default_action = "listchanges"
@@ -12,23 +11,23 @@ function listchanges (self)
end
function config (self)
- return controllerfunctions.handle_form(self, self.model.getconfig, self.model.setconfig, self.clientdata, "Save", "Edit Config", "Configuration Set")
+ return self.handle_form(self, self.model.getconfig, self.model.setconfig, self.clientdata, "Save", "Edit Config", "Configuration Set")
end
function editincluded (self)
- return controllerfunctions.handle_form(self, self.model.getincluded, self.model.setincluded, self.clientdata, "Save", "Edit Included Files", "Included files set")
+ return self.handle_form(self, self.model.getincluded, self.model.setincluded, self.clientdata, "Save", "Edit Included Files", "Included files set")
end
function editexcluded (self)
- return controllerfunctions.handle_form(self, self.model.getexcluded, self.model.setexcluded, self.clientdata, "Save", "Edit Excluded Files", "Excluded files set")
+ return self.handle_form(self, self.model.getexcluded, self.model.setexcluded, self.clientdata, "Save", "Edit Excluded Files", "Excluded files set")
end
function commit(self)
- return controllerfunctions.handle_form(self, self.model.getcommit, self.model.commit, self.clientdata, "Commit", "Commit Changes")
+ return self.handle_form(self, self.model.getcommit, self.model.commit, self.clientdata, "Commit", "Commit Changes")
end
function expert (self)
- return controllerfunctions.handle_form(self, self.model.get_filedetails, self.model.set_filedetails, self.clientdata, "Save", "Edit Config File", "Configuration saved")
+ return self.handle_form(self, self.model.get_filedetails, self.model.set_filedetails, self.clientdata, "Save", "Edit Config File", "Configuration saved")
end
function listbackups(self)
@@ -40,7 +39,7 @@ function deletebackup(self)
end
--]]
function selectbackup(self)
- return self:redirect_to_referrer(self.model.selectbackupfile(self.clientdata.backup))
+ return self.handle_form(self, self.model.get_selectbackup, self.model.selectbackupfile, self.clientdata, "Revert")
end
function getpackage(self)
diff --git a/lbu-listbackups-html.lsp b/lbu-listbackups-html.lsp
index f528227..579411e 100644
--- a/lbu-listbackups-html.lsp
+++ b/lbu-listbackups-html.lsp
@@ -15,7 +15,7 @@ No backup files
</tr>
<% for i,name in ipairs(view.value) do %>
<tr><td>
- <%= html.link{value="selectbackup?backup="..name, label="Revert "} %>
+ <%= html.link{value="selectbackup?backup="..name.."&redir=config&submit=true", label="Revert "} %>
</td>
<td><%= html.html_escape(name) %></td></tr>
<% end
diff --git a/lbu-model.lua b/lbu-model.lua
index 30dc9f1..88e4a83 100644
--- a/lbu-model.lua
+++ b/lbu-model.lua
@@ -3,9 +3,9 @@ module (..., package.seeall)
-- Load libraries
require("posix")
require("modelfunctions")
-require("fs")
-require("format")
-require("validator")
+fs = require("acf.fs")
+format = require("acf.format")
+validator = require("acf.validator")
-- Set variables
local configfile = "/etc/lbu/lbu.conf"
@@ -176,7 +176,9 @@ end
local function validatefilecontent (filedetails)
local success = true
- local config = getconfig(filedetails.value.filecontent.value)
+ local clientdata = clientdata or self.clientdata or {}
+ clientdata.configcontents = filedetails.value.filecontent.value
+ local config = getconfig(clientdata)
local errors = {}
for name,value in pairs(config.value) do
if value.errtxt then
@@ -251,11 +253,12 @@ function list()
return cfe({ type="structure", value=ret, label="List of changes" })
end
-function getconfig (configcontents)
+function getconfig (clientdata)
+ local clientdata = clientdata or {}
local config = {}
local configopts = {}
- if configcontents then
- configopts = format.parse_ini_file(configcontents, "") or {}
+ if clientdata.configcontents then
+ configopts = format.parse_ini_file(clientdata.configcontents, "") or {}
elseif (fs.is_file(configfile)) then
configopts = format.parse_ini_file(fs.read_file(configfile) or "", "") or {}
end
@@ -440,22 +443,27 @@ function getbackupfiles()
return cfe({ type="list", value=files, label="Backup archive list"})
end
-function selectbackupfile(selectfile)
- local cmdresult = cfe({ value="Failed to revert to backup", errtxt="Backup not found", label="Revert Backup result"})
+function get_selectbackup(clientdata)
+ local result = {}
+ result.backup = cfe({ value=clientdata.backup or "", label="Backup" })
+ return cfe({ type="group", value=result, label="Revert to Backup" })
+end
+
+function selectbackupfile(backuprequest)
local files = getbackupfiles()
for i,file in ipairs(files.value) do
- if file == selectfile then
+ if file == backuprequest.value.backup.value then
local f = io.popen("PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin lbu revert "..file.." 2>&1", "r")
- cmdresult.errtxt = f:read("*a")
- if "" == cmdresult.errtxt then
- cmdresult.errtxt = nil
- cmdresult.value = "Reverted to backup "..file
+ backuprequest.errtxt = f:read("*a")
+ if "" == backuprequest.errtxt then
+ backuprequest.errtxt = nil
+ backuprequest.descr = "Reverted to backup "..file
end
f:close()
break
end
end
- return cmdresult
+ return backuprequest
end
function getpackage()