File: manage_pools.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 (158 lines) | stat: -rw-r--r-- 5,614 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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
--
-- (C) 2020 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
package.path = dirs.installdir .. "/scripts/lua/modules/pools/?.lua;" .. package.path
package.path = dirs.installdir .. "/scripts/lua/modules/notifications/?.lua;" .. package.path


require "lua_utils"
local page_utils = require "page_utils"
local ui_utils = require "ui_utils"
local json = require "dkjson"
local template_utils = require "template_utils"
local endpoints = require("endpoints")
local alert_entities = require "alert_entities"

local host_pools              = require "host_pools"
local flow_pools              = require "flow_pools"
local system_pools            = require "system_pools"
local device_pools            = require "mac_pools"
local interface_pools         = require "interface_pools"
local host_pool_pools         = require "host_pool_pools"
local local_network_pools     = require "local_network_pools"
local active_monitoring_pools = require "active_monitoring_pools"

-- ****** SNMP Pool ******
local snmp_device_pools

-- load the snmp module only in the pro version
if ntop.isPro() then
   snmp_device_pools = require "snmp_device_pools"
end

-- ************************

local recipients = require "recipients"

-- *************** end of requires ***************

local is_nedge = ntop.isnEdge()

-- select the default page
local page = _GET["page"] or 'host'

sendHTTPContentTypeHeader('text/html')

if not isAdministratorOrPrintErr() then return end

page_utils.set_active_menu_entry(page_utils.menu_entries.manage_pools)

-- append the menu above the page
dofile(dirs.installdir .. "/scripts/lua/inc/menu.lua")

-- if the selected page is snmp but we aren't in pro version
-- then block the user with an alert
if page == "snmp" and not ntop.isPro() then
   dofile(dirs.installdir .. "/scripts/lua/inc/footer.lua")
   return
end

local url = ntop.getHttpPrefix() .. "/lua/admin/manage_pools.lua"
page_utils.print_navbar(i18n("pools.pools"), url, {
    {
        active = true,
        page_name = "home",
        label = "<i class=\"fas fa-lg fa-home\"></i>",
        url = url
    }
})

-- ************************************* ------

local ALL_POOL_GET_ENDPOINT = '/lua/rest/v2/get/pools.lua'

local pool_types = {

   -- Normal Pools
   ["interface"] = interface_pools,
   ["local_network"] = local_network_pools,
   ["active_monitoring"] = active_monitoring_pools,
   ["snmp_device"] = snmp_device_pools,
   ["host"] = host_pools,

   -- Default Only Pools
   ["host_pool"] = host_pool_pools,
   ["flow"] = flow_pools,
   ["system"] = system_pools,
   ["mac"] = device_pools
}

local pool_instance = (page ~= 'all' and pool_types[page]:create() or {})
local pool_type = page

if pool_type == 'snmp_device' then
   pool_type = "snmp/device"
elseif pool_type == 'local_network' then
   pool_type = 'network'
end

local menu = {
   entries = {

      -- Normal Pools
      { key = "host", title = i18n(alert_entities.host.i18n_label), url = "?page=host", hidden = false},
      { key = "interface", title = i18n(alert_entities.interface.i18n_label), url = "?page=interface", hidden = false},
      { key = "local_network", title = i18n(alert_entities.network.i18n_label), url = "?page=local_network", hidden = false},
      { key = "snmp_device", title = i18n(alert_entities.snmp_device.i18n_label), url = "?page=snmp_device", hidden = not ntop.isPro() or is_nedge},
      { key = "active_monitoring", title = i18n(alert_entities.am_host.i18n_label), url = "?page=active_monitoring", hidden = false },

   -- Default Only Pools
      { key = "host_pool", title = i18n(alert_entities.host_pool.i18n_label), url = "?page=host_pool", hidden = false},
      { key = "flow", title = i18n(alert_entities.flow.i18n_label), url = "?page=flow", hidden = false},
      { key = "mac", title = i18n(alert_entities.mac.i18n_label), url = "?page=mac", hidden = false},
      { key = "system", title = i18n(alert_entities.system.i18n_label), url = "?page=system", hidden = false},

      -- All Pool
      { key = "all", title = i18n("pools.pool_names.all"), url = "?page=all", hidden = false},
   },
   current_page = page
}

local pool_families = {}
for _, entry in ipairs(menu.entries) do
   pool_families[entry.key] = entry.title
end

local rest_endpoints = {
   get_all_pools  = (page == "all" and ALL_POOL_GET_ENDPOINT or string.format(ntop.getHttpPrefix() .. "/lua/rest/v2/get/%s/pools.lua", pool_type)),
   add_pool       = string.format(ntop.getHttpPrefix() .. "/lua/rest/v2/add/%s/pool.lua", pool_type),
   edit_pool      = string.format(ntop.getHttpPrefix() .. "/lua/rest/v2/edit/%s/pool.lua", pool_type),
   delete_pool    = string.format(ntop.getHttpPrefix() .. "/lua/rest/v2/delete/%s/pool.lua", pool_type),
}

local context = {
    template_utils = template_utils,
    json = json,
    menu = menu,
    ui_utils = ui_utils,
    is_nedge = is_nedge,
    pool = {
        name = page,
        pool_families = pool_families,
        is_all_pool = (page == "all"),
        instance = pool_instance,
        all_members = (page ~= "all" and pool_instance:get_all_members() or {}),
        assigned_members = (page ~= "all" and pool_instance:get_assigned_members() or {}),
        endpoints = rest_endpoints,
        endpoint_types = endpoints.get_types(),
        notification_recipients = recipients.get_all_recipients()
    }
}

print(template_utils.gen("pages/table_pools.template", context))
-- ************************************* ------

-- append the menu down below the page
dofile(dirs.installdir .. "/scripts/lua/inc/footer.lua")