From 2e34d7b6a7eeea84694a987606758bce3d3994ed Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Mon, 15 Sep 2014 18:08:14 +0000 Subject: Implemented listmacauthfiles action Points to to-be-implemented editmacauthfile action --- freeradius3-controller.lua | 4 +++ freeradius3-listmacauthfiles-html.lsp | 63 +++++++++++++++++++++++++++++++++++ freeradius3-model.lua | 45 +++++++++++++++++++++++++ freeradius3.menu | 1 + freeradius3.roles | 4 +-- 5 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 freeradius3-listmacauthfiles-html.lsp diff --git a/freeradius3-controller.lua b/freeradius3-controller.lua index f8fc742..a107b21 100644 --- a/freeradius3-controller.lua +++ b/freeradius3-controller.lua @@ -50,4 +50,8 @@ 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 +function mymodule.listmacauthfiles(self) + return self.model.list_macauth_files() +end + return mymodule diff --git a/freeradius3-listmacauthfiles-html.lsp b/freeradius3-listmacauthfiles-html.lsp new file mode 100644 index 0000000..a70a207 --- /dev/null +++ b/freeradius3-listmacauthfiles-html.lsp @@ -0,0 +1,63 @@ +<% local view, viewlibrary, page_info, session = ... +htmlviewfunctions = require("htmlviewfunctions") +html = require("acf.html") +%> + +<% +function convertsize(size) + if string.find(size, "k$") then + return tonumber(string.match(size, "[%d.]*")) * 1024.0 + elseif string.find(size, "M$") then + return tonumber(string.match(size, "[%d.]*")) * 1024.0 * 1024.0 + elseif string.find(size, "G$") then + return tonumber(string.match(size, "[%d.]*")) + 1024.0 * 1024.0 * 1024.0 + else + return tonumber(string.match(size, "[%d.]*")) + end +end +%> + + + + + + + +<% local header_level = htmlviewfunctions.displaysectionstart(cfe({label="MAC Authentication Configuration"}), page_info) %> + + + + + + + + +<% local filename = cfe({ type="hidden", value="" }) %> +<% local redir = cfe({ type="hidden", value=page_info.orig_action }) %> +<% for k,v in ipairs( view.value ) do %> + + + + + + +<% end %> +
ActionFileSizeLast Modified
+ <% filename.value = v.filename %> + <% if viewlibrary.check_permission("editmacauthfile") then %> + <% htmlviewfunctions.displayitem(cfe({type="link", value={filename=filename, redir=redir}, label="", option="Edit", action="editmacauthfile"}), page_info, -1) %> + <% end %> + <%= html.html_escape(v.filename) %><%= convertsize(v.size) %>b<%= html.html_escape(v.size) %><%= html.html_escape(v.mtime) %>
+<% htmlviewfunctions.displaysectionend(header_level) %> diff --git a/freeradius3-model.lua b/freeradius3-model.lua index d3c9ca8..1606971 100644 --- a/freeradius3-model.lua +++ b/freeradius3-model.lua @@ -296,6 +296,36 @@ local update_passwd_entry_private = function(self, entry, create) return entry end +local get_macauth_files = function() + local files + local result,errtxt = get_config() + if result then + -- Find the files by searching for modules / files / usersfile where key="%{Calling-Station-Id}" + files = {} + for i,first in ipairs(configtable) do + if string.find(first.name, "^modules$") then + for j,second in ipairs(first.value) do + if string.find(second.name, "^files ") then + local key,file + for k,third in ipairs(second.value) do + if string.find(third.name, "^usersfile$") then + file = third.value + elseif string.find(third.name, "^key$") and string.find(third.value, format.escapemagiccharacters("%{Calling-Station-Id}")) then + key = true + end + if key and file then + files[#files+1] = file + break + end + end + end + end + end + end + end + return files, errtxt +end + -- ################################################################################ -- PUBLIC FUNCTIONS @@ -557,4 +587,19 @@ function mymodule.update_passwd(self, passwd) return passwd end +function mymodule.list_macauth_files() + local retval = {} + local files,errtxt = get_macauth_files() + if files then + for i,file in ipairs(files) do + local details = fs.stat(file) + details.filename = file + table.insert(retval, details) + end + table.sort(retval, function(a,b) return a.filename < b.filename end) + end + + return cfe({ type="structure", value=retval, label="List of Freeradius MAC authentication files", errtxt=errtxt }) +end + return mymodule diff --git a/freeradius3.menu b/freeradius3.menu index 463ad8f..7095aa1 100644 --- a/freeradius3.menu +++ b/freeradius3.menu @@ -2,5 +2,6 @@ # Cat Group Tab Action Applications 15Freeradius Status status Applications 15Freeradius Passwd listpasswdfiles +Applications 15Freeradius MAC_Auth listmacauthfiles Applications 15Freeradius Expert listfiles Applications 15Freeradius Logfile logfile diff --git a/freeradius3.roles b/freeradius3.roles index d3fcc9b..bd204ac 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: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 +EXPERT=freeradius3:listfiles,freeradius3:editfile,freeradius3:createfile,freeradius3:deletefile,freeradius3:listpasswdfiles,freeradius3:viewpasswdfile,freeradius3:editpasswdentry,freeradius3:createpasswdentry,freeradius3:deletepasswdentry,freeradius3:editpasswd,freeradius3:listmacauthfiles +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,freeradius3:listmacauthfiles -- cgit v1.2.3