summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2014-09-15 18:08:14 +0000
committerTed Trask <ttrask01@yahoo.com>2014-09-15 18:08:14 +0000
commit2e34d7b6a7eeea84694a987606758bce3d3994ed (patch)
treed0ca8ffbfcb2724a031a5e3632fdc6a887ac6914
parentbb693ddd74d12f55487b16eab7da40fc2ff13988 (diff)
downloadacf-freeradius3-2e34d7b6a7eeea84694a987606758bce3d3994ed.tar.bz2
acf-freeradius3-2e34d7b6a7eeea84694a987606758bce3d3994ed.tar.xz
Implemented listmacauthfiles action
Points to to-be-implemented editmacauthfile action
-rw-r--r--freeradius3-controller.lua4
-rw-r--r--freeradius3-listmacauthfiles-html.lsp63
-rw-r--r--freeradius3-model.lua45
-rw-r--r--freeradius3.menu1
-rw-r--r--freeradius3.roles4
5 files changed, 115 insertions, 2 deletions
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
+%>
+
+<script type="text/javascript">
+ if (typeof jQuery == 'undefined') {
+ document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery-latest.js"><\/script>');
+ }
+</script>
+
+<script type="text/javascript">
+ if (typeof $.tablesorter == 'undefined') {
+ document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery.tablesorter.js"><\/script>');
+ }
+</script>
+
+<script type="text/javascript">
+ $(document).ready(function() {
+ $("#list").tablesorter({headers: {0:{sorter: false}}, widgets: ['zebra']});
+ });
+</script>
+
+<% local header_level = htmlviewfunctions.displaysectionstart(cfe({label="MAC Authentication Configuration"}), page_info) %>
+<table id="list" class="tablesorter"><thead>
+ <tr>
+ <th>Action</th>
+ <th>File</th>
+ <th>Size</th>
+ <th>Last Modified</th>
+ </tr>
+</thead><tbody>
+<% local filename = cfe({ type="hidden", value="" }) %>
+<% local redir = cfe({ type="hidden", value=page_info.orig_action }) %>
+<% for k,v in ipairs( view.value ) do %>
+ <tr>
+ <td>
+ <% 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 %>
+ </td>
+ <td><%= html.html_escape(v.filename) %></td>
+ <td><span class="hide"><%= convertsize(v.size) %>b</span><%= html.html_escape(v.size) %></td>
+ <td><%= html.html_escape(v.mtime) %></td>
+ </tr>
+<% end %>
+</tbody></table>
+<% 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