summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2014-09-15 17:55:41 +0000
committerTed Trask <ttrask01@yahoo.com>2014-09-15 17:55:41 +0000
commitbb693ddd74d12f55487b16eab7da40fc2ff13988 (patch)
tree99cdf8d225fe94dee1b33491baaac5933f4b5bdb
parent47c61e5dd2476f6eab7d50b1794d29412759858f (diff)
downloadacf-freeradius3-bb693ddd74d12f55487b16eab7da40fc2ff13988.tar.bz2
acf-freeradius3-bb693ddd74d12f55487b16eab7da40fc2ff13988.tar.xz
Implement deletepasswdentry action
-rw-r--r--freeradius3-controller.lua4
-rw-r--r--freeradius3-model.lua36
-rw-r--r--freeradius3-viewpasswdfile-html.lsp6
-rw-r--r--freeradius3.roles4
4 files changed, 42 insertions, 8 deletions
diff --git a/freeradius3-controller.lua b/freeradius3-controller.lua
index ce6dfd9..f8fc742 100644
--- a/freeradius3-controller.lua
+++ b/freeradius3-controller.lua
@@ -42,6 +42,10 @@ function mymodule.createpasswdentry(self)
return self.handle_form(self, self.model.get_new_passwd_entry, self.model.create_passwd_entry, self.clientdata, "Create", "Create Passwd Entry", "Entry Created")
end
+function mymodule.deletepasswdentry(self)
+ return self.handle_form(self, self.model.get_delete_passwd_entry, self.model.delete_passwd_entry, self.clientdata, "Delete", "Delete Passwd Entry", "Entry Deleted")
+end
+
function mymodule.editpasswd(self)
return self.handle_form(self, self.model.get_passwd, self.model.update_passwd, self.clientdata, "Save", "Edit Password", "Password Saved")
end
diff --git a/freeradius3-model.lua b/freeradius3-model.lua
index fdc246c..d3c9ca8 100644
--- a/freeradius3-model.lua
+++ b/freeradius3-model.lua
@@ -166,7 +166,7 @@ local mksalt = function()
return str
end
-local get_passwd_file = function(self, clientdata)
+local get_passwd_file = function(self, clientdata, readonly)
local retval = cfe({ type="group", value={}, label="Freeradius passwd file" })
retval.value.filename = cfe({ type="select", label="File name", option ={}, key=true, seq=1 })
local files,configs,passwdconfig
@@ -179,7 +179,7 @@ local get_passwd_file = function(self, clientdata)
for i,f in ipairs(files) do
if f == retval.value.filename.value then
retval.value.filename.errtxt = nil
- retval.value.filename.readonly = true
+ if readonly then retval.value.filename.readonly = true end
passwdconfig = parse_passwd_config(configs[i])
break
end
@@ -192,7 +192,7 @@ local get_passwd_file = function(self, clientdata)
end
local get_passwd_entry_private = function(self, clientdata, create)
- local retval,passwdconfig = get_passwd_file(self, clientdata)
+ local retval,passwdconfig = get_passwd_file(self, clientdata, true)
retval.label = "Freeradius passwd entry"
local entry = 0
local entryline = {}
@@ -405,7 +405,7 @@ function mymodule.list_passwd_files()
end
function mymodule.view_passwd_file(self, clientdata)
- local retval,passwdconfig = get_passwd_file(self, clientdata)
+ local retval,passwdconfig = get_passwd_file(self, clientdata, true)
if passwdconfig then
-- We have a valid filename, now parse the file using the format from the config
retval.value.fields = cfe({ type="structure", value=passwdconfig.fields, label="Fields" })
@@ -434,8 +434,34 @@ function mymodule.create_passwd_entry(self, entry)
return update_passwd_entry_private(self, entry, true)
end
-function mymodule.get_passwd(self, clientdata)
+function mymodule.get_delete_passwd_entry(self, clientdata)
local retval,passwdconfig = get_passwd_file(self, clientdata)
+ retval.label = "Delete Freeradius passwd entry"
+ retval.value.filename.key = nil
+ retval.value.entry = cfe({ label="Entry index", seq=2 })
+ return retval
+end
+
+function mymodule.delete_passwd_entry(self, entry)
+ local success = modelfunctions.validateselect(entry.value.filename)
+ if success then
+ local contenttable = fs.read_file_as_array(entry.value.filename.value) or {}
+ if contenttable[tonumber(entry.value.entry.value) or 0] then
+ table.remove(contenttable, tonumber(entry.value.entry.value))
+ fs.write_file(entry.value.filename.value, table.concat(contenttable, "\n"))
+ else
+ success = false
+ entry.value.entry.errtxt = "Invalid entry"
+ end
+ end
+ if not success then
+ entry.errtxt = "Failed to delete entry"
+ end
+ return entry
+end
+
+function mymodule.get_passwd(self, clientdata)
+ local retval,passwdconfig = get_passwd_file(self, clientdata, true)
retval.label = "Freeradius password"
retval.value.entry = cfe({ label="Entry index", key=true, seq=2 })
self.handle_clientdata(retval, clientdata)
diff --git a/freeradius3-viewpasswdfile-html.lsp b/freeradius3-viewpasswdfile-html.lsp
index d6cc3eb..5e6ad7f 100644
--- a/freeradius3-viewpasswdfile-html.lsp
+++ b/freeradius3-viewpasswdfile-html.lsp
@@ -17,11 +17,12 @@ html = require("acf.html")
<script type="text/javascript">
$(document).ready(function() {
+ $(".deletepasswdentry").click(function(){ return confirm("Are you sure you want to delete this entry?")});
$("#list").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra']});
});
</script>
-<% htmlviewfunctions.displaycommandresults({"editpasswdentry", "editpasswd"}, session) %>
+<% htmlviewfunctions.displaycommandresults({"editpasswdentry", "deletepasswdentry", "editpasswd"}, session) %>
<% htmlviewfunctions.displaycommandresults({"createpasswdentry"}, session, true) %>
<% local redir = cfe({ type="hidden", value=page_info.orig_action }) %>
@@ -51,6 +52,9 @@ redir.value = redir.value.."?filename="..html.url_encode(view.value.filename.val
<% if viewlibrary.check_permission("editpasswdentry") then %>
<% htmlviewfunctions.displayitem(cfe({type="link", value={filename=filename, entry=entry, redir=redir}, label="", option="Edit", action="editpasswdentry"}), page_info, -1) %>
<% end %>
+ <% if viewlibrary.check_permission("deletepasswdentry") then %>
+ <% htmlviewfunctions.displayitem(cfe({type="form", value={filename=filename, entry=entry}, label="", option="Delete", action="deletepasswdentry", class="deletepasswdentry"}), page_info, -1) %>
+ <% end %>
<% if 0 < containspasswd and r[containspasswd] ~= "" and viewlibrary.check_permission("editpasswd") then %>
<% htmlviewfunctions.displayitem(cfe({type="link", value={filename=filename, entry=entry, redir=redir}, label="", option="Change Pass", action="editpasswd"}), page_info, -1) %>
<% end %>
diff --git a/freeradius3.roles b/freeradius3.roles
index 3871d59..d3fcc9b 100644
--- a/freeradius3.roles
+++ b/freeradius3.roles
@@ -1,3 +1,3 @@
USER=freeradius3:status,freeradius3:startstop,freeradius3:logfile
-EXPERT=freeradius3:listfiles,freeradius3:editfile,freeradius3:createfile,freeradius3:deletefile,freeradius3:listpasswdfiles,freeradius3:viewpasswdfile,freeradius3:editpasswdentry,freeradius3:createpasswdentry,freeradius3:editpasswd
-ADMIN=freeradius3:status,freeradius3:startstop,freeradius3:logfile,freeradius3:listfiles,freeradius3:editfile,freeradius3:createfile,freeradius3:deletefile,freeradius3:listpasswdfiles,freeradius3:viewpasswdfile,freeradius3:editpasswdentry,freeradius3:createpasswdentry,freeradius3:editpasswd
+EXPERT=freeradius3:listfiles,freeradius3:editfile,freeradius3:createfile,freeradius3:deletefile,freeradius3:listpasswdfiles,freeradius3:viewpasswdfile,freeradius3:editpasswdentry,freeradius3:createpasswdentry,freeradius3:deletepasswdentry,freeradius3:editpasswd
+ADMIN=freeradius3:status,freeradius3:startstop,freeradius3:logfile,freeradius3:listfiles,freeradius3:editfile,freeradius3:createfile,freeradius3:deletefile,freeradius3:listpasswdfiles,freeradius3:viewpasswdfile,freeradius3:editpasswdentry,freeradius3:createpasswdentry,freeradius3:deletepasswdentry,freeradius3:editpasswd