summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lbu-basicstatus-html.lsp28
-rw-r--r--lbu-config-html.lsp9
-rw-r--r--lbu-controller.lua113
l---------[-rw-r--r--]lbu-expert-html.lsp37
l---------[-rw-r--r--]lbu-html.lsp17
-rw-r--r--lbu-listbackups-html.lsp2
-rw-r--r--lbu-listchanges-html.lsp31
-rw-r--r--lbu-model.lua48
-rw-r--r--lbu-status-html.lsp31
-rw-r--r--lbu.menu2
-rw-r--r--lbu.roles2
11 files changed, 86 insertions, 234 deletions
diff --git a/lbu-basicstatus-html.lsp b/lbu-basicstatus-html.lsp
deleted file mode 100644
index 6b8a77d..0000000
--- a/lbu-basicstatus-html.lsp
+++ /dev/null
@@ -1,28 +0,0 @@
-<? local view, viewlibrary, pageinfo, session = ...
-require("viewfunctions")
-?>
-<?
---[[ DEBUG INFORMATION
-io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
-io.write(html.cfe_unpack(view))
-io.write("</span>")
---]]
-?>
-
-<H1>System Info</H1>
-<DL>
-<?
-if view.value.committed.value then
- view.value.committed.value = "There are no uncommitted files"
-else
- view.value.committed.value = "WARNING!\nUntil you commit, you will lose your changes at next reboot/shutdown!"
-end
-view.value.committed.type = "string"
-displayitem(view.value.committed)
-
-for name,value in pairs(view.value) do
- if name ~= "committed" then
- displayitem(value)
- end
-end ?>
-</DL>
diff --git a/lbu-config-html.lsp b/lbu-config-html.lsp
index 6749785..5072423 100644
--- a/lbu-config-html.lsp
+++ b/lbu-config-html.lsp
@@ -9,11 +9,10 @@ io.write("</span>")
--]]
?>
-<?
- if viewlibrary and viewlibrary.dispatch_component then
- viewlibrary.dispatch_component("basicstatus")
- end
-?>
+<? if viewlibrary and viewlibrary.dispatch_component then
+ viewlibrary.dispatch_component("status")
+end ?>
+
<H1>Config</H1>
<?
local order = { "LBU_MEDIA", "ENCRYPTION", "DEFAULT_CIPHER", "PASSWORD" }
diff --git a/lbu-controller.lua b/lbu-controller.lua
index d70dde7..3db860d 100644
--- a/lbu-controller.lua
+++ b/lbu-controller.lua
@@ -1,123 +1,34 @@
module(..., package.seeall)
+require("controllerfunctions")
--- ################################################################################
--- PUBLIC FUNCTIONS
+default_action = "listchanges"
-default_action = "status"
-
-function basicstatus (self)
+function status (self)
return self.model.getstatus()
end
-function status (self)
+function listchanges (self)
return self.model.list()
end
function config (self)
- local config = self.model.getconfig()
- if self.clientdata.Save then
- config.errtxt = nil
- for name,value in pairs(config.value) do
- value.errtxt = nil
- if value.type == "boolean" then
- value.value = (self.clientdata[name]~=nil)
- else
- value.value = self.clientdata[name] or value.value
- end
- end
- config = self.model.setconfig(config)
- if not config.errtxt then
- config.descr = "Configuration Set"
- end
- end
- config.type = "form"
- config.option = "Save"
- config.label = "Edit Config"
-
- return config
+ return controllerfunctions.handle_form(self, self.model.getconfig, self.model.setconfig, self.clientdata, "Save", "Edit Config", "Configuration Set")
end
function editincluded (self)
- local errtxt, descr
- local included = self.model.getincluded()
- if self.clientdata.Save then
- included.errtxt = nil
- included.value = self.clientdata.included
- included = self.model.setincluded(included)
- if included.errtxt then
- errtxt = "Failed to set included files"
- else
- descr = "Included files set"
- redirect_to_referrer(self)
- end
- end
-
- return cfe({ type="form", value={included=included}, option="Save", label="Edit included files", errtxt=errtxt, descr=descr })
+ return controllerfunctions.handle_form(self, self.model.getincluded, self.model.setincluded, self.clientdata, "Save", "Edit Included Files", "Included files set")
end
function editexcluded (self)
- local errtxt, descr
- local excluded = self.model.getexcluded()
- if self.clientdata.Save then
- excluded.errtxt = nil
- excluded.value = self.clientdata.excluded
- excluded = self.model.setexcluded(excluded)
- if excluded.errtxt then
- errtxt = "Failed to set excluded files"
- else
- descr = "Excluded files set"
- redirect_to_referrer(self)
- end
- end
-
- return cfe({ type="form", value={excluded=excluded}, option="Save", label="Edit excluded files", errtxt=errtxt, descr=descr })
+ return controllerfunctions.handle_form(self, self.model.getexcluded, self.model.setexcluded, self.clientdata, "Save", "Edit Excluded Files", "Excluded files set")
end
function commit(self)
- local comm = self.model.getcommit()
- if self.clientdata.Commit then
- comm.errtxt = nil
- for name,value in pairs(comm.value) do
- value.errtxt = nil
- value.value = (self.clientdata[name]~=nil)
- end
- comm = self.model.commit(comm)
- self.sessiondata.commitresult = cfe({ value=comm.descr or "", errtxt=comm.errtxt })
- redirect_to_referrer(self)
- end
-
- if self.sessiondata.commitresult then
- comm.descr = self.sessiondata.commitresult.value
- comm.errtxt = self.sessiondata.commitresult.errtxt
- self.sessiondata.commitresult = nil
- end
-
- comm.type = "form"
- comm.option = "Commit"
- comm.label = "Commit changes"
-
- return comm
+ return controllerfunctions.handle_form(self, self.model.getcommit, self.model.commit, self.clientdata, "Commit", "Commit Changes")
end
function expert (self)
- local filedetails = self.model.get_filedetails()
- if self.clientdata.Save then
- filedetails.value.filecontent.errtxt = nil
- filedetails.value.filecontent.value = self.clientdata.filecontent
- filedetails.value.filecontent = self.model.set_filecontent(filedetails.value.filecontent)
- if filedetails.value.filecontent.errtxt then
- filedetails.errtxt = "Failed to save config"
- else
- filedetails = self.model.get_filedetails()
- filedetails.descr = "Saved config"
- end
- end
-
- filedetails.type = "form"
- filedetails.option = "Save"
- filedetails.label = "Edit config file"
-
- return filedetails
+ return controllerfunctions.handle_form(self, self.model.get_filedetails, self.model.set_filedetails, self.clientdata, "Save", "Edit Config File", "Configuration saved")
end
function listbackups(self)
@@ -125,11 +36,9 @@ function listbackups(self)
end
--[[
function deletebackup(self)
- self.model.deletebackupfile(self.clientdata.backup)
- redirect_to_referrer(self)
+ return self:redirect_to_referrer(self.model.deletebackupfile(self.clientdata.backup))
end
--]]
function selectbackup(self)
- self.model.selectbackupfile(self.clientdata.backup)
- redirect_to_referrer(self)
+ return self:redirect_to_referrer(self.model.selectbackupfile(self.clientdata.backup))
end
diff --git a/lbu-expert-html.lsp b/lbu-expert-html.lsp
index 04dfd45..207f324 100644..120000
--- a/lbu-expert-html.lsp
+++ b/lbu-expert-html.lsp
@@ -1,36 +1 @@
-<? local form, viewlibrary = ...
-require("viewfunctions")
-?>
-<?
---[[ DEBUG INFORMATION
-io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
-io.write(html.cfe_unpack(form))
-io.write("</span>")
---]]
-?>
-
-<? if viewlibrary and viewlibrary.dispatch_component then
- viewlibrary.dispatch_component("basicstatus")
-end ?>
-
-<h1>Configuration</h1>
-<H2>File Details</H2>
-<DL>
-<?
-displayitem(form.value.filename)
-displayitem(form.value.filesize)
-displayitem(form.value.mtime)
-?>
-</DL>
-
-<H2>File Content</H2>
-<? if form.descr then ?><P CLASS='descr'><?= string.gsub(form.descr, "\n", "<BR>") ?></P><? end ?>
-<? if form.errtxt then ?><P CLASS='error'><?= string.gsub(form.errtxt, "\n", "<BR>") ?></P><? end ?>
-<form action="" method="POST">
-<textarea name="filecontent">
-<?= form.value.filecontent.value ?>
-</textarea>
-<? if form.value.filecontent.errtxt then ?><P CLASS='error'><?= string.gsub(form.value.filecontent.errtxt, "\n", "<BR>") ?></P><? end ?>
-
-<DL><DT><input class="submit" type="submit" name="<?= form.option ?>" value="<?= form.option ?>"></DT></DL>
-</form>
+../expert-html.lsp \ No newline at end of file
diff --git a/lbu-html.lsp b/lbu-html.lsp
index 71269f5..4b6b762 100644..120000
--- a/lbu-html.lsp
+++ b/lbu-html.lsp
@@ -1,16 +1 @@
-<? local form, viewlibrary, pageinfo = ...
-require("viewfunctions")
-?>
-<?
---[[ DEBUG INFORMATION
-io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
-io.write(html.cfe_unpack(form))
-io.write("</span>")
---]]
-?>
-
-<H1><?= form.label ?></H1>
-<?
- form.action = pageinfo.action
- displayform(form)
-?>
+../form-html.lsp \ No newline at end of file
diff --git a/lbu-listbackups-html.lsp b/lbu-listbackups-html.lsp
index cfd6efc..5995c2b 100644
--- a/lbu-listbackups-html.lsp
+++ b/lbu-listbackups-html.lsp
@@ -9,6 +9,8 @@ io.write("</span>")
--]]
?>
+<? displaycommandresults({"selectbackup"}, session) ?>
+
<H1>Backup Archive</H1>
<DL>
<? if #view.value == 0 then ?>
diff --git a/lbu-listchanges-html.lsp b/lbu-listchanges-html.lsp
new file mode 100644
index 0000000..0cc7f03
--- /dev/null
+++ b/lbu-listchanges-html.lsp
@@ -0,0 +1,31 @@
+<? local view, viewlibrary, pageinfo, session = ...
+require("viewfunctions")
+?>
+<?
+--[[ DEBUG INFORMATION
+io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
+io.write(html.cfe_unpack(view))
+io.write("</span>")
+--]]
+?>
+
+<? if viewlibrary and viewlibrary.dispatch_component then
+ viewlibrary.dispatch_component("status")
+ if session.permissions.lbu.commit then
+ viewlibrary.dispatch_component("commit")
+ end
+end ?>
+
+<H1>Changes Since Last Commit</H1>
+<DL>
+ <dt>Files changed since last commit</dt>
+ <dd><pre><?
+ if (#view.value == 0) then
+ io.write("None")
+ else
+ for i,file in pairs(view.value) do
+ io.write(file.status .. "\t" .. file.name .. "\n")
+ end
+ end
+ ?></pre></DD>
+</DL>
diff --git a/lbu-model.lua b/lbu-model.lua
index 3ae6c87..0ff1b96 100644
--- a/lbu-model.lua
+++ b/lbu-model.lua
@@ -1,10 +1,10 @@
module (..., package.seeall)
-- Load libraries
+require("modelfunctions")
require("fs")
require("format")
require("getopts")
-require("daemoncontrol")
require("validator")
-- Set variables
@@ -308,13 +308,15 @@ function getincluded ()
validatefilelist(included)
- return included
+ return cfe({ type="group", value={included = included} })
end
function setincluded (included)
- validatefilelist(included)
- if not included.errtxt then
- fs.write_file(includefile, included.value)
+ validatefilelist(included.value.included)
+ if not included.value.included.errtxt then
+ fs.write_file(includefile, included.value.included.value)
+ else
+ included.errtxt = "Failed to set included"
end
return included
end
@@ -329,44 +331,34 @@ function getexcluded ()
validatefilelist(excluded)
- return excluded
+ return cfe({ type="group", value={excluded = excluded} })
end
function setexcluded (excluded)
- validatefilelist(excluded)
- if not excluded.errtxt then
- fs.write_file(excludefile, excluded.value)
+ validatefilelist(excluded.value.excluded)
+ if not excluded.value.excluded.errtxt then
+ fs.write_file(excludefile, excluded.value.excluded.value)
+ else
+ excluded.errtxt = "Failed to set excluded"
end
return excluded
end
function get_filedetails()
- local filename = cfe({ value=configfile, label="File name" })
- local filecontent = cfe({ type="longtext", label="Config file" })
- local filesize = cfe({ value="0", label="File size" })
- local mtime = cfe({ value="---", label="File date" })
-
- if fs.is_file(configfile) then
- local filedetails = fs.stat(configfile)
- filecontent.value = fs.read_file(configfile)
- filesize.value = filedetails.size
- mtime.value = filedetails.mtime
-
- validatefilecontent(filecontent)
- else
- filename.errtxt = "File not found"
- end
-
- return cfe({ type="group", value={filename=filename, filecontent=filecontent, filesize=filesize, mtime=mtime}, label="Config file details" })
+ return modelfunctions.getfiledetails(configfile)
end
-function set_filecontent (filecontent)
+function set_filedetails(filedetails)
+ local filecontent = filedetails.value.filecontent
filecontent.value = format.dostounix(filecontent.value)
+ filecontent.value = filecontent.value:gsub("\n+$", "")
validatefilecontent(filecontent)
if not filecontent.errtxt then
fs.write_file(configfile, filecontent.value)
+ else
+ filedetails.errtxt = "Failed to set config"
end
- return filecontent
+ return filedetails
end
function getcommit()
diff --git a/lbu-status-html.lsp b/lbu-status-html.lsp
index afe0164..6b8a77d 100644
--- a/lbu-status-html.lsp
+++ b/lbu-status-html.lsp
@@ -9,23 +9,20 @@ io.write("</span>")
--]]
?>
-<? if viewlibrary and viewlibrary.dispatch_component then
- viewlibrary.dispatch_component("basicstatus")
- if session.permissions.lbu.commit then
- viewlibrary.dispatch_component("commit")
+<H1>System Info</H1>
+<DL>
+<?
+if view.value.committed.value then
+ view.value.committed.value = "There are no uncommitted files"
+else
+ view.value.committed.value = "WARNING!\nUntil you commit, you will lose your changes at next reboot/shutdown!"
+end
+view.value.committed.type = "string"
+displayitem(view.value.committed)
+
+for name,value in pairs(view.value) do
+ if name ~= "committed" then
+ displayitem(value)
end
end ?>
-
-<H1>Changes Since Last Commit</H1>
-<DL>
- <dt>Files changed since last commit</dt>
- <dd><pre><?
- if (#view.value == 0) then
- io.write("None")
- else
- for i,file in pairs(view.value) do
- io.write(file.status .. "\t" .. file.name .. "\n")
- end
- end
- ?></pre></DD>
</DL>
diff --git a/lbu.menu b/lbu.menu
index 497821f..21d4114 100644
--- a/lbu.menu
+++ b/lbu.menu
@@ -1,4 +1,4 @@
#CAT GROUP/DESC TAB ACTION
-System 99Local_backups Status status
+System 99Local_backups Status listchanges
System 99Local_backups Config config
System 99Local_backups Expert expert
diff --git a/lbu.roles b/lbu.roles
index 8aaeb48..bfc7a71 100644
--- a/lbu.roles
+++ b/lbu.roles
@@ -1,2 +1,2 @@
UPDATE=lbu:config,lbu:commit,lbu:expert,lbu:editincluded,lbu:editexcluded,lbu:listbackups,lbu:selectbackup
-ALL=lbu:basicstatus,lbu:status
+ALL=lbu:status,lbu:listchanges