1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
--
-- (C) 2013 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
sendHTTPHeader('application/json')
if(isAdministratorOrPrintErr()) then
local currentPage = _GET["currentPage"]
local perPage = _GET["perPage"]
local sortColumn = _GET["sortColumn"]
local sortOrder = _GET["sortOrder"]
local captivePortal = _GET["captive_portal_users"]
local logged_user = _SESSION["user"]
local host_pools_nedge = nil
local pool_names = nil
if captivePortal then
local host_pools_nedge = require "host_pools_nedge"
local names = host_pools_nedge.getPoolsList(false)
pool_names = {}
for _, p in pairs(names) do
pool_names[tonumber(p["id"])] = p["name"]
end
end
if(sortColumn == nil) then
sortColumn = "column_"
end
if(currentPage == nil) then
currentPage = 1
else
currentPage = tonumber(currentPage)
end
if(perPage == nil) then
perPage = 5
else
perPage = tonumber(perPage)
end
local users_list = ntop.getUsers()
print ("{ \"currentPage\" : " .. currentPage .. ",\n \"data\" : [\n")
local num = 0
local total = 0
local to_skip = (currentPage-1) * perPage
local vals = {}
for key, value in pairs(users_list) do
if captivePortal and ((value["group"] ~= "captive_portal") or (value["allowed_ifname"] ~= ifname)) then
goto continue
elseif not captivePortal and value["group"] == "captive_portal" then
goto continue
end
if(sortColumn == "column_full_name") then
vals[key] = value["full_name"]
elseif(sortColumn == "column_group") then
vals[key] = value["group"]
elseif(pool_names and sortColumn == "column_host_pool_name") then
local pool_n = pool_names[tonumber(value["host_pool_id"])]
vals[key] = pool_n
else -- if(sortColumn == "column_username") then
vals[key] = key
end
::continue::
end
if(sortOrder == "asc") then
funct = asc
else
funct = rev
end
local num = 0
for _key, _value in pairsByValues(vals, funct) do
local key = _key
local value = users_list[_key]
local js_key = _key:gsub("%.", "\\\\\\\\.")
if(to_skip > 0) then
to_skip = to_skip-1
else
if(num < perPage) then
if(num > 0) then
print ",\n"
end
print ("{")
print (" \"column_username\" : \"" .. key .. "\", ")
print (" \"column_full_name\" : \"" .. value["full_name"] .. "\", ")
if pool_names and value["host_pool_id"] then
print (" \"column_host_pool_id\" : \"" .. value["host_pool_id"] .. "\", ")
print (" \"column_host_pool_name\" : \"" .. pool_names[value["host_pool_id"]].. "\", ")
end
local group_label
if value["group"] == "administrator" then
group_label = i18n("manage_users.administrator")
elseif value["group"] == "unprivileged" then
group_label = i18n("manage_users.non_privileged_user")
else
group_label = value["group"]
end
print (" \"column_group\" : \"" .. group_label .. "\", ")
print (" \"column_edit\" : \"<a href='#password_dialog' class='btn btn-sm btn-info' data-bs-toggle='modal' onclick='return(reset_pwd_dialog(\\\"".. js_key.."\\\"));'><i class='fas fa-edit'></i></a> ")
local can_be_deleted = (key ~= "admin" and key ~= logged_user)
print ("<a href='#delete_user_dialog' role='button' class='add-on btn btn-sm btn-danger ".. (not can_be_deleted and 'disabled' or '') .."' data-bs-toggle='modal' id='delete_btn_" .. key .. "'><i class='fas fa-trash'></i></a><script> $('#delete_btn_" .. js_key .. "').on('mouseenter', function() { delete_user_alert.warning('" .. i18n("manage_users.confirm_delete_user", {user=key}) .. "'); $('#delete_dialog_username').val('" .. key .. "'); }); </script>")
print ("\"}")
num = num + 1
end
end
total = total + 1
end -- for
print ("\n], \"perPage\" : " .. perPage .. ",\n")
if(sortColumn == nil) then
sortColumn = ""
end
if(sortOrder == nil) then
sortOrder = ""
end
print ("\"sort\" : [ [ \"" .. sortColumn .. "\", \"" .. sortOrder .."\" ] ],\n")
print ("\"totalRows\" : " .. total .. " \n}")
end
|