summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openssh-controller.lua2
-rw-r--r--openssh-model.lua27
2 files changed, 19 insertions, 10 deletions
diff --git a/openssh-controller.lua b/openssh-controller.lua
index 9e2f866..47c6766 100644
--- a/openssh-controller.lua
+++ b/openssh-controller.lua
@@ -31,7 +31,7 @@ function listauth(self)
end
function deleteauth(self)
- return self:redirect_to_referrer(self.model.delete_auth(self.clientdata.user, self.clientdata.auth))
+ return self.handle_form(self, self.model.get_delete_auth, self.model.delete_auth, self.clientdata, "Delete", "Delete Authorized Key", "Key Deleted")
end
function addauth(self)
diff --git a/openssh-model.lua b/openssh-model.lua
index efb0992..de2a688 100644
--- a/openssh-model.lua
+++ b/openssh-model.lua
@@ -231,11 +231,20 @@ function list_auths(user)
return cmdresult
end
-function delete_auth(user, auth)
- user = user or "root"
- local cmdresult = cfe({ value="Failed to delete key", errtxt="User not found", label="Delete Authorized Key Result" })
+function get_delete_auth(self, clientdata)
+ local retval = {}
+ retval.user = cfe({ value=clientdata.user or "root", label="User" })
+ retval.auth = cfe({ value=clientdata.auth or "", label="Authorized Key" })
+ return cfe({ type="group", value=retval, label="Delete Authorized Key" })
+end
+
+function delete_auth(self, delauth)
+ local user = delauth.value.user.value
+ delauth.value.user.errtxt = "User not found"
+ delauth.errtxt = "Failed to delete key"
if user == "root" or (not string.find(user, "/") and fs.is_dir("/home/"..user)) then
- cmdresult.errtxt = "Key not found"
+ delauth.value.user.errtxt = nil
+ delauth.value.auth.errtxt = "Key not found"
local file = "/"..user.."/.ssh/authorized_keys"
if user ~= "root" then file = "/home"..file end
@@ -244,19 +253,19 @@ function delete_auth(user, auth)
local newdata = {}
for line in string.gmatch(data, "([^\n]+)\n?") do
local val = parseauthline(line)
- if val.id == auth then
- cmdresult.value = "Deleted key"
- cmdresult.errtxt = nil
+ if val.id == delauth.value.auth.value then
+ delauth.errtxt = nil
+ delauth.value.auth.errtxt = nil
else
newdata[#newdata + 1] = line
end
end
- if not cmdresult.errtxt then
+ if not delauth.errtxt then
fs.write_file(file, table.concat(newdata, "\n"))
end
end
end
- return cmdresult
+ return delauth
end
function get_auth(user)