From b6c2c25e5e99b6d8515a777a00f5a97c1f6b1d23 Mon Sep 17 00:00:00 2001 From: Mika Havela Date: Wed, 23 Jan 2008 14:31:44 +0000 Subject: Forcing user to enter valid options in the config-tab before making a commit. Displaying current errors in the config/settings. git-svn-id: svn://svn.alpinelinux.org/acf/alpine-conf/trunk@628 ab2d0c66-481e-0410-8bed-d214d4d58bed --- lbu-commit-html.lsp | 10 ++++++---- lbu-config-html.lsp | 11 +++++++---- lbu-controller.lua | 33 ++++++++++++++++++++++++++------- lbu-model.lua | 30 +++++++++++++++++++++++++----- lbu-status-html.lsp | 6 ++---- 5 files changed, 66 insertions(+), 24 deletions(-) diff --git a/lbu-commit-html.lsp b/lbu-commit-html.lsp index ffba7a4..f86bef1 100644 --- a/lbu-commit-html.lsp +++ b/lbu-commit-html.lsp @@ -12,7 +12,7 @@

PROGRAM SPECIFIC OPTIONS/INFORMATION

Archives will be saved to
-
+
No default - (Needs to be configured)

" ?>
Archives will be encrypted
(Using cipher: " .. view.status.DEFAULT_CIPHER .. ")") else io.write("No") end ?>
@@ -22,13 +22,15 @@

Save to media

-
Remove existing apk.ovls from media
-
-

Attention!

By checking this box, you remove all existing archives from the when commiting (adding the '-d' flag to the commit action).
This needs to be done when you want/dont want to encrypt your archive and there already exists archives on the media.
There can only be one sort of arcive on the media.

Simulate/Test a commit
Actually Commit and save changes
+ +
Remove existing apk.ovls from media
+
+

By checking this box, you remove all existing archives from the when commiting (adding the '-d' flag to the commit action).
This needs to be done when you want/dont want to encrypt your archive and there already exists archives on the media.
There can only be one sort of arcive on the media.

If you dont remove existing apk.ovls from media, your commit will most likely fail.

+
diff --git a/lbu-config-html.lsp b/lbu-config-html.lsp index 76233a7..9d9f872 100644 --- a/lbu-config-html.lsp +++ b/lbu-config-html.lsp @@ -14,14 +14,15 @@

Advanced config

Storage media

-
Default media for commit
+
>Default media for commit
+ +

Include/exclude list

@@ -60,8 +61,9 @@ -
Password when encrypting
-
" name="PASSWORD">
+
>Password when encrypting
+
" name="PASSWORD"> +

Save and apply above settings

@@ -79,4 +81,5 @@ io.write(debugs.variables(view)) ?> + diff --git a/lbu-controller.lua b/lbu-controller.lua index c13bc5c..d8703e9 100644 --- a/lbu-controller.lua +++ b/lbu-controller.lua @@ -19,12 +19,15 @@ end status = function (self) local cmd = self.clientdata.cmd local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - return ( {status = self.model:getstatus(), + local status, errors = self.model:getstatus() + return ( {status = status, + errors = errors, lbustatus = self.model:list(), url = url, } ) end config = function (self) + local errors = {} local cmdresult if (self.clientdata.cmd_delete_excluded) and (self.clientdata.lbu_excluded) then cmdresult = self.model:lbuincexcl("exclude", self.clientdata.lbu_excluded, "remove") @@ -50,30 +53,46 @@ config = function (self) cmdresult = self.model:lbuincexcl("exclude", self.clientdata.item_add_exclude, "add") end - + -- This needs to be done /after/ the editing of the config (done earlier in this code) + local status,errors = self.model:getstatus() local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller - return ( {status = self.model:getstatus(), + return ( {status = status, cmdresult = cmdresult, + errors = errors, clientdata = self.clientdata, config = self.model:getconfig(), url = url, } ) end function commit(self) - local cmdresult + local cmdresult, cmderror local url = ENV["SCRIPT_NAME"] .. self.conf.prefix .. self.conf.controller local cmdflag = nil if (self.clientdata.lbucleanmedia) then cmdflag = "-d" else cmdflag = "" end if (self.clientdata.lbusimulate) then - cmdresult = self.model:getsimulate(cmdflag) + cmdresult, cmderror = self.model:getsimulate(cmdflag) end if (self.clientdata.lbucommit) then - cmdresult = self.model:getcommit(cmdflag) + cmdresult, cmderror = self.model:getcommit(cmdflag) + end + + -- If no clientdata then do a dryrun and see if it's going to work else report + if not (cmdresult) then + tmp_cmdresult, cmderror = self.model:getsimulate() + end + + local status, errors = self.model:getstatus() + if (errors.last) then + self.conf.action = "config" + self.conf.type = "redir" + return config(self) end - return ( {status = self.model:getstatus(), + return ( {status = status, + errors = errors, cmdresult = cmdresult, cmdflag = cmdflag, + cmderror = cmderror, clientdata = self.clientdata, url = url, } ) end diff --git a/lbu-model.lua b/lbu-model.lua index b0f5cf7..3b804ee 100644 --- a/lbu-model.lua +++ b/lbu-model.lua @@ -33,10 +33,18 @@ local function getLbuStatus() end local function getLbuCommit(flag) + local err = {} + local ret = "" local f = io.popen("/sbin/lbu commit " .. flag .. " 2>&1", "r") - local ret = f:read("*a") +-- local ret = f:read("*a") + for line in f:lines() do + ret = ret .. line .. "\n" + --Look for error messages in output + local searchrow, search = string.match(line, "^(lbu.*(%-%a).*)") + if (search) then err[search] = searchrow end + end f:close() - return ret + return ret, err end local function getciphers() @@ -83,6 +91,7 @@ end function getstatus () local path = configfile local status = {} + local errors = {} local statustxt = nil local lbustatus = list() if (#lbustatus == 0) then @@ -96,7 +105,16 @@ function getstatus () status["DEFAULT_CIPHER"] = config["DEFAULT_CIPHER"] status["version"] = get_version() status["status"] = statustxt - return status + if (status["LBU_MEDIA"] == "") or (status["LBU_MEDIA"] == nil) then + errors["LBU_MEDIA"] = "'Media' needs to be configured!" + end + if (config["PASSWORD"] == nil) and (config["ENCRYPTION"] ~= nil) then + errors["PASSWORD"] = "Encryption without password is not allowed!
Deactivate 'Password protection' or configure a password!" + end + for k,v in pairs(errors) do + errors["last"] = v + end + return status, errors end function list(self) @@ -110,11 +128,13 @@ function list(self) end function getcommit(self, flag) - if flag ~= "-d" then flag = "" end + --See to that only allowed flags are passed to the process + flag = string.match(flag or "", "%-%a") or "" return getLbuCommit("-v " .. flag) end function getsimulate(self, flag) - if flag ~= "-d" then flag = "" end + --See to that only allowed flags are passed to the process + flag = string.match(flag or "", "%-%a") or "" return getLbuCommit("-n " .. flag) end diff --git a/lbu-status-html.lsp b/lbu-status-html.lsp index 856a050..852bdb8 100644 --- a/lbu-status-html.lsp +++ b/lbu-status-html.lsp @@ -12,12 +12,10 @@

PROGRAM SPECIFIC OPTIONS/INFORMATION

-
Archives will be saved to
-
- +

Archives will be encrypted
-
(Using cipher: " ..view.status.DEFAULT_CIPHER .. ")") else io.write("No") end ?>
+
(Using cipher: " ..view.status.DEFAULT_CIPHER .. ")") else io.write("No") end ?>

CHANGES SINCE LAST COMMIT

-- cgit v1.2.3