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
|
--
-- (C) 2019-22 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
local ts_utils = require("ts_utils")
local info = ntop.getInfo()
local page_utils = require("page_utils")
local format_utils = require("format_utils")
local os_utils = require "os_utils"
local template = require "template_utils"
local checks = require "checks"
local json = require "dkjson"
local discover = require "discover_utils"
local rest_utils = require "rest_utils"
local auth = require "auth"
local checks_utils = require("checks_utils")
if not auth.has_capability(auth.capabilities.checks) then
rest_utils.answer(rest_utils.consts.err.not_granted)
return
end
sendHTTPContentTypeHeader('text/html')
-- get config parameters like the id and name
local check_subdir = _GET["subdir"]
local script_filter = _GET["check"]
local search_filter = _GET["search_script"]
local configset = checks.getConfigset()
if not isAdministratorOrPrintErr() or not configset then
return
end
-- create a table that holds localization about hooks name
local titles = checks_utils.load_configset_titles()
local sub_menu_entries = {
['all'] = {
order = 0,
entry = page_utils.menu_entries.scripts_config_all
},
['host'] = {
order = 1,
entry = page_utils.menu_entries.scripts_config_hosts
},
['interface'] = {
order = 2,
entry = page_utils.menu_entries.scripts_config_interfaces
},
['network'] = {
order = 3,
entry = page_utils.menu_entries.scripts_config_networks
},
['snmp_device'] = {
order = 4,
entry = page_utils.menu_entries.scripts_config_snmp_devices
},
['flow'] = {
order = 5,
entry = page_utils.menu_entries.scripts_config_flows
},
['system'] = {
order = 6,
entry = page_utils.menu_entries.scripts_config_system
},
['syslog'] = {
order = 7,
entry = page_utils.menu_entries.scripts_config_syslog
}
}
local active_entry = sub_menu_entries[check_subdir].entry or page_utils.menu_entries.scripts_config
page_utils.set_active_menu_entry(active_entry)
--page_utils.print_header(i18n("scripts_list.scripts_x", { subdir=titles[check_subdir], config=confset_name }))
-- append the menu above the page
dofile(dirs.installdir .. "/scripts/lua/inc/menu.lua")
-- APP/Categories types
-- Initialize apps_and_categories
-- Check out generate_multi_select in scripts-list-utils.js for the format
local cat_groups = {label = i18n("categories"), elements = {}}
local app_groups = {label = i18n("applications"), elements = {}}
local elems = {}
for cat, _ in pairsByKeys(interface.getnDPICategories(), asc_insensitive) do
cat_groups.elements[#cat_groups.elements + 1] = {cat, getCategoryLabel(cat)}
end
for app, _ in pairsByKeys(interface.getnDPIProtocols(), asc_insensitive) do
app_groups.elements[#app_groups.elements + 1] = {app, app}
end
apps_and_categories = {cat_groups, app_groups}
-- Device types
local device_types = {}
for type_id in discover.sortedDeviceTypeLabels() do
local label = discover.devtype2string(type_id)
local devtype = discover.id2devtype(type_id)
device_types[#device_types + 1] = {devtype, label}
end
local device_types_list = {{elements = device_types}}
local url = ntop.getHttpPrefix() .. "/lua/admin/edit_configset.lua"
local navbar_menu = {}
for key, sub_menu in pairsByField(sub_menu_entries, 'order', asc) do
navbar_menu[#navbar_menu+1] = {
active = (check_subdir == key),
page_name = key,
label = i18n(sub_menu.entry.i18n_title),
url = url .. "?subdir="..key
}
end
page_utils.print_navbar(i18n("internals.checks"), '#', navbar_menu)
local context = {
script_list = {
subdir = check_subdir,
template_utils = template,
hooks_localizated = titles,
check_subdir = check_subdir,
script_filter = script_filter,
search_filter = search_filter,
page_url = ntop.getHttpPrefix() .. string.format("/lua/admin/edit_configset.lua?subdir=%s", check_subdir),
apps_and_categories = json.encode(apps_and_categories),
device_types = json.encode(device_types_list),
},
check_categories = checks.check_categories,
info = ntop.getInfo(),
json = json
}
-- print config_list.html template
template.render("pages/edit_configset.template", context)
-- append the menu below the page
dofile(dirs.installdir .. "/scripts/lua/inc/footer.lua")
|