diff options
-rw-r--r-- | openssh-controller.lua | 2 | ||||
-rw-r--r-- | openssh-model.lua | 27 |
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) |