File: get_users.lua

package info (click to toggle)
ntopng 5.2.1%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 121,832 kB
  • sloc: javascript: 143,431; cpp: 71,175; ansic: 11,108; sh: 4,687; makefile: 911; python: 587; sql: 512; pascal: 234; perl: 118; ruby: 52; exp: 4
file content (143 lines) | stat: -rw-r--r-- 4,071 bytes parent folder | download
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