mirror of
https://github.com/ntop/ntopng.git
synced 2026-07-12 01:11:16 +00:00
2824 lines
116 KiB
Lua
2824 lines
116 KiB
Lua
--
|
|
-- (C) 2014-26 - ntop.org
|
|
--
|
|
-- Contains prefs menu schema and visibility flags
|
|
--
|
|
-- Redis key convention: prefix = "ntopng.prefs."
|
|
-- ntopng.prefs.<name> <- global preference
|
|
-- ntopng.user.__SESSION_USER__.<name> <- per-user preference (user_pref=true)
|
|
--
|
|
local M = {}
|
|
|
|
-- Runtime flags
|
|
-- Called once per request by the REST endpoints to build the flags table that
|
|
-- controls section/entry visibility and pro write-guards.
|
|
function M.get_flags()
|
|
local page_utils = require "page_utils"
|
|
local recording_utils = require "recording_utils"
|
|
|
|
local prefs = ntop.getPrefs()
|
|
local info = ntop.getInfo(false)
|
|
|
|
local have_nedge = ntop.isnEdge and ntop.isnEdge() or false
|
|
local is_windows = ntop.isWindows and ntop.isWindows() or false
|
|
local hasRadius = ntop.hasRadiusSupport and ntop.hasRadiusSupport() or false
|
|
local hasLdap = ntop.hasLdapSupport and ntop.hasLdapSupport() or false
|
|
local is_zmq_interface = interface.isZMQInterface and interface.isZMQInterface() or false
|
|
local recording_available = recording_utils.isAvailable and recording_utils.isAvailable() or false
|
|
|
|
-- License tier
|
|
local is_pro = ntop.isPro and ntop.isPro() or false
|
|
local is_enterprise = ntop.isEnterprise and ntop.isEnterprise() or false
|
|
local is_enterprise_m = ntop.isEnterpriseM and ntop.isEnterpriseM() or false
|
|
local is_enterprise_l = ntop.isEnterpriseL and ntop.isEnterpriseL() or false
|
|
local is_enterprise_xl = ntop.isEnterpriseXL and ntop.isEnterpriseXL() or false
|
|
local is_nedge_enterprise = ntop.isnEdgeEnterprise and ntop.isnEdgeEnterprise() or false
|
|
local has_ch_support = (hasClickHouseSupport and hasClickHouseSupport()) and true or false
|
|
local has_nanalyst = ntop.hasnAnalyst and ntop.hasnAnalyst() or false
|
|
|
|
return {
|
|
prefs = prefs,
|
|
info = info,
|
|
have_nedge = have_nedge,
|
|
is_windows = is_windows,
|
|
hasRadius = hasRadius,
|
|
hasLdap = hasLdap,
|
|
is_zmq_interface = is_zmq_interface,
|
|
recording_available = recording_available,
|
|
is_pro = is_pro,
|
|
is_enterprise = is_enterprise,
|
|
is_enterprise_m = is_enterprise_m,
|
|
is_enterprise_l = is_enterprise_l,
|
|
is_enterprise_xl = is_enterprise_xl,
|
|
is_nedge_enterprise = is_nedge_enterprise,
|
|
has_ch_support = has_ch_support,
|
|
has_nanalyst = has_nanalyst
|
|
}
|
|
end
|
|
|
|
-- Preference sections
|
|
function M.get_sections(flags)
|
|
local prefs = flags.prefs
|
|
local info = flags.info
|
|
local have_nedge = flags.have_nedge
|
|
local hasRadius = flags.hasRadius
|
|
local hasLdap = flags.hasLdap
|
|
local is_windows = flags.is_windows
|
|
local is_dump_flows_enabled = prefs.is_dump_flows_enabled
|
|
local has_cmdl_disable_alerts = prefs.has_cmdl_disable_alerts
|
|
local has_cmdl_trace_lvl = prefs.has_cmdl_trace_lvl
|
|
local is_users_login_enabled = prefs.is_users_login_enabled
|
|
local active_ts_driver = ntop.getPref("ntopng.prefs.timeseries_driver") or "rrd"
|
|
|
|
local sections =
|
|
{ -- Active Monitoring
|
|
{
|
|
id = "active_monitoring",
|
|
label = i18n("active_monitoring_stats.active_monitoring"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_active_monitoring",
|
|
title = i18n("prefs.toggle_active_monitoring_title"),
|
|
description = i18n("prefs.toggle_active_monitoring_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.active_monitoring",
|
|
default = "0"
|
|
}}
|
|
},
|
|
|
|
-- Alerts
|
|
{
|
|
id = "alerts",
|
|
label = i18n("show_alerts.alerts"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = (has_cmdl_disable_alerts == true),
|
|
entries = {{
|
|
key = "disable_alerts_generation",
|
|
title = i18n("prefs.disable_alerts_generation_title"),
|
|
description = i18n("prefs.disable_alerts_generation_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.disable_alerts_generation",
|
|
default = "0",
|
|
on_value = "0",
|
|
off_value = "1",
|
|
to_switch = {"toggle_emit_flow_alerts", "toggle_emit_host_alerts", "max_entity_alerts",
|
|
"max_num_secs_before_delete_alert", "alert_page_refresh_rate_enabled"}
|
|
}, {
|
|
key = "toggle_emit_flow_alerts",
|
|
title = i18n("prefs.toggle_emit_flow_alerts_title"),
|
|
description = i18n("prefs.toggle_emit_flow_alerts_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.emit_flow_alerts",
|
|
default = "1",
|
|
on_value = "1",
|
|
off_value = "0"
|
|
}, {
|
|
key = "toggle_emit_host_alerts",
|
|
title = i18n("prefs.toggle_emit_host_alerts_title"),
|
|
description = i18n("prefs.toggle_emit_host_alerts_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.emit_host_alerts",
|
|
default = "1",
|
|
on_value = "1",
|
|
off_value = "0"
|
|
}, {
|
|
key = "max_entity_alerts",
|
|
title = i18n("prefs.max_entity_alerts_title"),
|
|
description = i18n("prefs.max_entity_alerts_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_entity_alerts",
|
|
default = tostring(prefs.max_entity_alerts or 1024),
|
|
attrs = {
|
|
min = "1"
|
|
}
|
|
}, {
|
|
key = "max_num_secs_before_delete_alert",
|
|
title = i18n("prefs.max_num_secs_before_delete_alert_title"),
|
|
description = i18n("prefs.max_num_secs_before_delete_alert_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_num_secs_before_delete_alert",
|
|
default = tostring(math.floor((prefs.max_num_secs_before_delete_alert or 31536000) / 86400)),
|
|
display_multiplier = 86400,
|
|
unit = i18n("metrics.days"),
|
|
attrs = {
|
|
min = "1"
|
|
}
|
|
}, {
|
|
key = "alert_page_refresh_rate_enabled",
|
|
title = i18n("prefs.enable_alerts_refresh_title"),
|
|
description = i18n("prefs.enable_alerts_refresh_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.alert_page_refresh_rate_enabled",
|
|
default = "0",
|
|
to_switch = {"alert_page_refresh_rate"}
|
|
}, {
|
|
key = "alert_page_refresh_rate",
|
|
title = i18n("prefs.alert_page_refresh_rate_title"),
|
|
description = i18n("prefs.alerts_page_refresh_rate_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.alert_page_refresh_rate",
|
|
default = tostring(prefs.alert_page_refresh_rate or 60),
|
|
tformat = "m",
|
|
attrs = {
|
|
min = "3"
|
|
}
|
|
}}
|
|
},
|
|
|
|
-- Logging
|
|
{
|
|
id = "logging",
|
|
label = i18n("prefs.logging"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = (has_cmdl_trace_lvl == true),
|
|
entries = {{
|
|
key = "toggle_logging_level",
|
|
title = i18n("prefs.toggle_logging_level_title"),
|
|
description = i18n("prefs.toggle_logging_level_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.logging_level",
|
|
default = "normal",
|
|
options = {{
|
|
value = "trace",
|
|
label = "Trace"
|
|
}, {
|
|
value = "debug",
|
|
label = "Debug"
|
|
}, {
|
|
value = "info",
|
|
label = "Info"
|
|
}, {
|
|
value = "normal",
|
|
label = "Normal"
|
|
}, {
|
|
value = "warning",
|
|
label = "Warning"
|
|
}, {
|
|
value = "error",
|
|
label = "Error"
|
|
}}
|
|
}, {
|
|
key = "toggle_log_to_file",
|
|
title = i18n("prefs.toggle_log_to_file_title"),
|
|
description = i18n("prefs.toggle_log_to_file_description", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.log_to_file",
|
|
default = "0"
|
|
}, {
|
|
key = "toggle_access_log",
|
|
title = i18n("prefs.toggle_access_log_title"),
|
|
description = i18n("prefs.toggle_access_log_description", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_access_log",
|
|
default = "0"
|
|
}, {
|
|
key = "toggle_assets_log",
|
|
title = i18n("prefs.toggle_assets_log_title"),
|
|
description = i18n("prefs.toggle_assets_log_description", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_assets_log",
|
|
default = "0",
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "toggle_host_pools_log",
|
|
title = i18n("prefs.toggle_host_pools_log_title"),
|
|
description = i18n("prefs.toggle_host_pools_log_description", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_host_pools_log",
|
|
default = "0"
|
|
}, {
|
|
key = "toggle_active_monitoring_log",
|
|
title = i18n("prefs.toggle_active_monitoring_log_title"),
|
|
description = i18n("prefs.toggle_active_monitoring_log_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.trace.active_monitoring",
|
|
default = "0"
|
|
}}
|
|
},
|
|
|
|
-- GUI
|
|
{
|
|
id = "gui",
|
|
label = i18n("prefs.gui"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_autologout",
|
|
title = i18n("prefs.toggle_autologout_title"),
|
|
description = i18n("prefs.toggle_autologout_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_autologon_enabled",
|
|
default = "1",
|
|
section = i18n("prefs.web_user_interface"),
|
|
hidden = not (prefs.is_autologout_enabled == true)
|
|
}, {
|
|
key = "toggle_theme",
|
|
title = i18n("prefs.toggle_theme_title"),
|
|
description = i18n("prefs.toggle_theme_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.user.__SESSION_USER__.theme",
|
|
default = "default",
|
|
section = i18n("prefs.web_user_interface"),
|
|
options = {{
|
|
value = "default",
|
|
label = i18n("default")
|
|
}, {
|
|
value = "white",
|
|
label = i18n("white")
|
|
}, {
|
|
value = "dark",
|
|
label = i18n("dark")
|
|
}},
|
|
user_pref = true
|
|
}, {
|
|
key = "toggle_date_type",
|
|
title = i18n("prefs.toggle_date_type_title"),
|
|
description = i18n("prefs.toggle_date_type_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.user.__SESSION_USER__.date_format",
|
|
default = "middle_endian",
|
|
section = i18n("prefs.web_user_interface"),
|
|
options = {{
|
|
value = "little_endian",
|
|
label = i18n("little_endian")
|
|
}, {
|
|
value = "middle_endian",
|
|
label = i18n("middle_endian")
|
|
}, {
|
|
value = "big_endian",
|
|
label = i18n("big_endian")
|
|
}},
|
|
user_pref = true
|
|
}, {
|
|
key = "max_ui_strlen",
|
|
title = i18n("prefs.max_ui_strlen_title"),
|
|
description = i18n("prefs.max_ui_strlen_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_ui_strlen",
|
|
default = tostring(prefs.max_ui_strlen or 24),
|
|
section = i18n("prefs.web_user_interface"),
|
|
attrs = {
|
|
min = "3",
|
|
max = "128"
|
|
}
|
|
}, {
|
|
key = "mgmt_acl",
|
|
title = i18n("prefs.mgmt_acl_title"),
|
|
description = i18n("prefs.mgmt_acl_description", {
|
|
product = info.product
|
|
}),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.http_acl_management_port",
|
|
default = "",
|
|
section = i18n("prefs.web_user_interface"),
|
|
attrs = {
|
|
maxlength = "512",
|
|
spellcheck = "false",
|
|
pattern = "((([0-9]{1,3}.){3}[0-9]{1,3}(/([0-9]|[1-2][0-9]|3[0-2]))?)(,|$))+"
|
|
}
|
|
}, {
|
|
key = "toggle_interface_name_only",
|
|
title = i18n("prefs.toggle_interface_name_only_title"),
|
|
description = i18n("prefs.toggle_interface_name_only_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_interface_name_only",
|
|
default = "0",
|
|
section = i18n("prefs.web_user_interface")
|
|
}, {
|
|
key = "http_index_page",
|
|
title = i18n("prefs.http_index_page"),
|
|
description = i18n("prefs.http_index_page_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.http_index_page",
|
|
default = tostring(prefs.http_index_page or ""),
|
|
section = i18n("prefs.web_user_interface"),
|
|
attrs = {
|
|
maxlength = "518",
|
|
spellcheck = "false",
|
|
pattern = "(/[A-Za-z0-9_.~!$&'()*+,;=:@%-]*)+"
|
|
}
|
|
}, {
|
|
key = "toggle_menu_entry_help",
|
|
title = i18n("prefs.toggle_menu_entry_help_title"),
|
|
description = i18n("prefs.toggle_menu_entry_help_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.menu_entries.help",
|
|
default = "1",
|
|
section = i18n("prefs.menu_entries"),
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "toggle_menu_entry_developer",
|
|
title = i18n("prefs.toggle_menu_entry_developer_title"),
|
|
description = i18n("prefs.toggle_menu_entry_developer_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.menu_entries.developer",
|
|
default = "1",
|
|
section = i18n("prefs.menu_entries"),
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "toggle_search_in_all_interfaces",
|
|
title = i18n("prefs.toggle_search_in_all_interfaces_title"),
|
|
description = i18n("prefs.toggle_search_in_all_interfaces_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.search_in_all_interfaces",
|
|
default = "0",
|
|
section = i18n("prefs.search_preferences")
|
|
}}
|
|
},
|
|
|
|
-- Telemetry
|
|
{
|
|
id = "telemetry",
|
|
label = i18n("prefs.telemetry"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_fingerprint_stats",
|
|
title = i18n("prefs.toggle_fingerprint_stats_title"),
|
|
description = i18n("prefs.toggle_fingerprint_stats_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.fingerprint_stats",
|
|
default = "0"
|
|
}, {
|
|
key = "toggle_sites_collection",
|
|
title = i18n("prefs.toggle_sites_collection_title"),
|
|
description = i18n("prefs.toggle_sites_collection_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.sites_collection",
|
|
default = "0"
|
|
}}
|
|
},
|
|
|
|
-- Notifications
|
|
{
|
|
id = "notifications",
|
|
label = i18n("prefs.notifications"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_starttls",
|
|
title = i18n("prefs.toggle_toggle_starttls_title"),
|
|
description = i18n("prefs.toggle_toggle_starttls_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.starttls",
|
|
default = "1"
|
|
}}
|
|
},
|
|
|
|
-- Network Discovery
|
|
{
|
|
id = "discovery",
|
|
label = i18n("prefs.network_discovery"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_network_discovery",
|
|
title = i18n("active_monitoring_stats.network_discovery"),
|
|
description = i18n("active_monitoring_stats.network_discovery_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.network_discovery",
|
|
default = "0",
|
|
to_switch = {"toggle_periodic_network_discovery", "toggle_network_discovery_debug"}
|
|
}, {
|
|
key = "toggle_periodic_network_discovery",
|
|
title = i18n("prefs.toggle_network_discovery_title"),
|
|
description = i18n("prefs.toggle_network_discovery_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_periodic_network_discovery_enabled",
|
|
default = "0",
|
|
to_switch = {"network_discovery_interval"}
|
|
}, {
|
|
key = "network_discovery_interval",
|
|
title = i18n("prefs.network_discovery_interval_title"),
|
|
description = i18n("prefs.network_discovery_interval_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.network_discovery_interval",
|
|
default = tostring(15 * 60),
|
|
tformat = "mhd",
|
|
attrs = {
|
|
min = tostring(15 * 60)
|
|
}
|
|
}, {
|
|
key = "toggle_network_discovery_debug",
|
|
title = i18n("prefs.toggle_network_discovery_debug_title"),
|
|
description = i18n("prefs.toggle_network_discovery_debug_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.network_discovery_debug",
|
|
default = "0"
|
|
}}
|
|
},
|
|
|
|
-- Names
|
|
{
|
|
id = "names",
|
|
label = i18n("prefs.names"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = (function()
|
|
local host_info = ntop.getHostInformation() or {}
|
|
return {{
|
|
key = "ntopng_host_address",
|
|
title = i18n("prefs.ntopng_host_address_title"),
|
|
description = i18n("prefs.ntopng_host_address_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ntopng_host_address",
|
|
default = host_info.ip or "",
|
|
attrs = {
|
|
spellcheck = "false"
|
|
}
|
|
}, {
|
|
key = "ntopng_instance_name",
|
|
title = i18n("prefs.ntopng_instance_name_title"),
|
|
description = i18n("prefs.ntopng_instance_name_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ntopng_instance_name",
|
|
default = host_info.instance_name or "",
|
|
attrs = {
|
|
spellcheck = "false"
|
|
}
|
|
}}
|
|
end)()
|
|
},
|
|
|
|
-- Misc
|
|
{
|
|
id = "misc",
|
|
label = i18n("prefs.misc"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "connectivity_check_url",
|
|
title = i18n("prefs.connectivity_check_url_title"),
|
|
description = i18n("prefs.connectivity_check_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.connectivity_check_url",
|
|
default = "",
|
|
section = i18n("prefs.connectivity_check"),
|
|
attrs = {
|
|
spellcheck = "false"
|
|
}
|
|
}, {
|
|
key = "domain_classification_token",
|
|
title = i18n("prefs.domain_classification_token_title"),
|
|
description = i18n("prefs.domain_classification_token_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.classification_user_token",
|
|
default = "",
|
|
section = i18n("prefs.connectivity_check"),
|
|
attrs = {
|
|
spellcheck = "false"
|
|
}
|
|
}, {
|
|
key = "toggle_thpt_content",
|
|
title = i18n("prefs.toggle_thpt_content_title"),
|
|
description = i18n("prefs.toggle_thpt_content_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.thpt_content",
|
|
default = "bps",
|
|
section = i18n("prefs.report"),
|
|
options = {{
|
|
value = "bps",
|
|
label = i18n("bytes")
|
|
}, {
|
|
value = "pps",
|
|
label = i18n("packets")
|
|
}}
|
|
}, {
|
|
key = "topk_heuristic_precision",
|
|
title = i18n("prefs.topk_heuristic_precision_title"),
|
|
description = i18n("prefs.topk_heuristic_precision_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.topk_heuristic_precision",
|
|
default = "more_accurate",
|
|
section = i18n("prefs.report"),
|
|
hidden = (not is_pro),
|
|
options = {{
|
|
value = "disabled",
|
|
label = i18n("topk_heuristic.precision.disabled")
|
|
}, {
|
|
value = "more_accurate",
|
|
label = i18n("topk_heuristic.precision.more_accurate")
|
|
}, {
|
|
value = "accurate",
|
|
label = i18n("topk_heuristic.precision.less_accurate")
|
|
}, {
|
|
value = "aggressive",
|
|
label = i18n("topk_heuristic.precision.aggressive")
|
|
}}
|
|
}, {
|
|
key = "toggle_host_mask",
|
|
title = i18n("prefs.toggle_host_mask_title"),
|
|
description = i18n("prefs.toggle_host_mask_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.host_mask",
|
|
default = "0",
|
|
section = i18n("hosts"),
|
|
hidden = (not is_admin),
|
|
options = {{
|
|
value = "0",
|
|
label = i18n("prefs.no_host_mask")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("prefs.local_host_mask")
|
|
}, {
|
|
value = "2",
|
|
label = i18n("prefs.remote_host_mask")
|
|
}}
|
|
}, {
|
|
key = "toggle_use_mac_in_flow_key",
|
|
title = i18n("prefs.toggle_use_mac_in_flow_key_title"),
|
|
description = i18n("prefs.toggle_use_mac_in_flow_key_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.use_mac_in_flow_key",
|
|
default = "0",
|
|
section = i18n("hosts"),
|
|
hidden = (not is_admin) or have_nedge
|
|
}, {
|
|
key = "toggle_use_host_pools_for_local",
|
|
title = i18n("prefs.toggle_use_host_pools_for_local_title"),
|
|
description = i18n("prefs.toggle_use_host_pools_for_local_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.use_host_pools_for_local",
|
|
default = "0",
|
|
section = i18n("hosts"),
|
|
hidden = (not is_admin)
|
|
}, {
|
|
key = "toggle_enable_full_stats",
|
|
title = i18n("prefs.toggle_enable_full_stats"),
|
|
description = i18n("prefs.toggle_enable_full_stats_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_full_stats",
|
|
default = "1",
|
|
section = i18n("prefs.flow_table")
|
|
}, {
|
|
key = "toggle_flow_begin",
|
|
title = i18n("prefs.flow_table_begin_epoch_title"),
|
|
description = i18n("prefs.flow_table_begin_epoch_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.first_seen_set",
|
|
default = "0",
|
|
section = i18n("prefs.flow_table")
|
|
}, {
|
|
key = "flow_table_time",
|
|
title = i18n("prefs.flow_table_time_title"),
|
|
description = i18n("prefs.flow_table_time_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.flow_table_time",
|
|
default = "0",
|
|
section = i18n("prefs.flow_table"),
|
|
options = {{
|
|
value = "0",
|
|
label = i18n("prefs.duration")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("prefs.last_seen")
|
|
}}
|
|
}, {
|
|
key = "flow_table_probe_order",
|
|
title = i18n("prefs.flow_table_probe_order_title"),
|
|
description = i18n("prefs.flow_table_probe_order_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.flow_table_probe_order",
|
|
default = "0",
|
|
section = i18n("prefs.flow_table"),
|
|
options = {{
|
|
value = "0",
|
|
label = i18n("prefs.ip_order")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("prefs.name_order")
|
|
}}
|
|
}}
|
|
},
|
|
|
|
-- Updates
|
|
{
|
|
id = "updates",
|
|
label = i18n("prefs.updates"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = (is_windows or (not ntop.isPackage())),
|
|
entries = {{
|
|
key = "toggle_autoupdates",
|
|
title = i18n("prefs.toggle_autoupdates_title"),
|
|
description = i18n("prefs.toggle_autoupdates_description", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_autoupdates_enabled",
|
|
default = "0"
|
|
}}
|
|
},
|
|
|
|
-- Authentication
|
|
{
|
|
id = "auth",
|
|
label = i18n("prefs.user_authentication"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = (not is_users_login_enabled and not have_nedge),
|
|
entries = {
|
|
-- Authentication Duration
|
|
{
|
|
key = "authentication_duration",
|
|
title = i18n("prefs.authentication_duration_title"),
|
|
description = i18n("prefs.authentication_duration_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.auth_session_duration",
|
|
default = tostring(prefs.auth_session_duration or 3600),
|
|
tformat = "mhd",
|
|
attrs = {
|
|
min = "60",
|
|
max = tostring(86400 * 7)
|
|
}
|
|
}, {
|
|
key = "toggle_auth_session_midnight_expiration",
|
|
title = i18n("prefs.authentication_midnight_expiration_title"),
|
|
description = i18n("prefs.authentication_midnight_expiration_descr"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.auth_session_midnight_expiration",
|
|
default = "0"
|
|
}, -- OIDC (OpenID Connect SSO)
|
|
{
|
|
key = "toggle_oidc_auth",
|
|
title = i18n("prefs.toggle_oidc_auth"),
|
|
description = i18n("prefs.toggle_oidc_auth_descr"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.oidc.enabled",
|
|
default = "0",
|
|
section = i18n("prefs.oidc_auth"),
|
|
to_switch = {"oidc_issuer_url", "oidc_client_id", "oidc_client_secret", "oidc_base_redirect_uri",
|
|
"oidc_scopes", "oidc_group_claim", "oidc_admin_group", "toggle_oidc_auto_create_users",
|
|
"oidc_claim_ifname", "oidc_claim_nets", "oidc_claim_host_pools", "oidc_claim_allow_pcap",
|
|
"oidc_claim_allow_historical", "oidc_claim_allow_alerts"}
|
|
}, {
|
|
key = "oidc_issuer_url",
|
|
title = i18n("prefs.oidc_issuer_url_title"),
|
|
description = i18n("prefs.oidc_issuer_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.oidc_issuer_url",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "512"
|
|
}
|
|
}, {
|
|
key = "oidc_client_id",
|
|
title = i18n("prefs.oidc_client_id_title"),
|
|
description = i18n("prefs.oidc_client_id_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.oidc_client_id",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "oidc_client_secret",
|
|
title = i18n("prefs.oidc_client_secret_title"),
|
|
description = i18n("prefs.oidc_client_secret_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.oidc.oidc_client_secret",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "512"
|
|
}
|
|
}, {
|
|
key = "oidc_base_redirect_uri",
|
|
title = i18n("prefs.oidc_base_redirect_uri_title"),
|
|
description = i18n("prefs.oidc_base_redirect_uri_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.oidc_base_redirect_uri",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "512"
|
|
}
|
|
}, {
|
|
key = "oidc_scopes",
|
|
title = i18n("prefs.oidc_scopes_title"),
|
|
description = i18n("prefs.oidc_scopes_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.oidc_scopes",
|
|
default = "openid profile email roles",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "oidc_group_claim",
|
|
title = i18n("prefs.oidc_group_claim_title"),
|
|
description = i18n("prefs.oidc_group_claim_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.oidc_group_claim",
|
|
default = "groups",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "oidc_admin_group",
|
|
title = i18n("prefs.oidc_admin_group_title"),
|
|
description = i18n("prefs.oidc_admin_group_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.oidc_admin_group",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "toggle_oidc_auto_create_users",
|
|
title = i18n("prefs.toggle_oidc_auto_create_users_title"),
|
|
description = i18n("prefs.toggle_oidc_auto_create_users_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.oidc.oidc_auto_create_users",
|
|
default = "0"
|
|
}, {
|
|
key = "oidc_claim_ifname",
|
|
title = i18n("prefs.oidc_claim_ifname_title"),
|
|
description = i18n("prefs.oidc_claim_ifname_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.claim_ifname",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "oidc_claim_nets",
|
|
title = i18n("prefs.oidc_claim_nets_title"),
|
|
description = i18n("prefs.oidc_claim_nets_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.claim_nets",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "oidc_claim_host_pools",
|
|
title = i18n("prefs.oidc_claim_host_pools_title"),
|
|
description = i18n("prefs.oidc_claim_host_pools_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.claim_host_pools",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "oidc_claim_allow_pcap",
|
|
title = i18n("prefs.oidc_claim_allow_pcap_title"),
|
|
description = i18n("prefs.oidc_claim_allow_pcap_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.claim_allow_pcap",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "oidc_claim_allow_historical",
|
|
title = i18n("prefs.oidc_claim_allow_historical_title"),
|
|
description = i18n("prefs.oidc_claim_allow_historical_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.claim_allow_historical",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "oidc_claim_allow_alerts",
|
|
title = i18n("prefs.oidc_claim_allow_alerts_title"),
|
|
description = i18n("prefs.oidc_claim_allow_alerts_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.oidc.claim_allow_alerts",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, -- x509 (HTTPS Client Authentication)
|
|
{
|
|
key = "toggle_client_x509_auth",
|
|
title = i18n("prefs.client_x509_auth_title", {
|
|
product = info.product
|
|
}),
|
|
description = i18n("prefs.client_x509_auth_descr", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_client_x509_auth_enabled",
|
|
default = "0",
|
|
section = i18n("prefs.x509_auth")
|
|
}, -- LDAP auth
|
|
{
|
|
key = "toggle_ldap_auth",
|
|
title = i18n("prefs.toggle_ldap_auth"),
|
|
description = i18n("prefs.toggle_ldap_auth_descr"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.ldap.auth_enabled",
|
|
default = "0",
|
|
hidden = (not hasLdap),
|
|
section = i18n("prefs.ldap_authentication"),
|
|
to_switch = {"multiple_ldap_account_type", "ldap_server_address", "toggle_ldap_anonymous_bind",
|
|
"bind_dn", "bind_pwd", "search_path", "admin_group", "user_group",
|
|
"toggle_ldap_ext_user_cap", "toggle_ldap_referrals", "toggle_ldap_debug"}
|
|
}, {
|
|
key = "multiple_ldap_account_type",
|
|
title = i18n("prefs.multiple_ldap_account_type_title"),
|
|
description = i18n("prefs.multiple_ldap_account_type_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.ldap.account_type",
|
|
default = "posix",
|
|
hidden = (not hasLdap),
|
|
options = {{
|
|
value = "posix",
|
|
label = i18n("prefs.posix")
|
|
}, {
|
|
value = "samaccount",
|
|
label = i18n("prefs.samaccount")
|
|
}}
|
|
}, {
|
|
key = "ldap_server_address",
|
|
title = i18n("prefs.ldap_server_address_title"),
|
|
description = i18n("prefs.ldap_server_address_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ldap.ldap_server_address",
|
|
default = "ldap://localhost:389",
|
|
hidden = (not hasLdap),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "toggle_ldap_anonymous_bind",
|
|
title = i18n("prefs.toggle_ldap_anonymous_bind_title"),
|
|
description = i18n("prefs.toggle_ldap_anonymous_bind_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.ldap.anonymous_bind",
|
|
default = "1",
|
|
hidden = (not hasLdap),
|
|
reverse_switch = true,
|
|
to_switch = {"bind_dn", "bind_pwd"}
|
|
}, {
|
|
key = "bind_dn",
|
|
title = i18n("prefs.bind_dn_title"),
|
|
description = i18n("prefs.bind_dn_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ldap.bind_dn",
|
|
default = "",
|
|
hidden = (not hasLdap),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "bind_pwd",
|
|
title = i18n("prefs.bind_pwd_title"),
|
|
description = i18n("prefs.bind_pwd_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.ldap.bind_pwd",
|
|
default = "",
|
|
hidden = (not hasLdap),
|
|
password = true,
|
|
attrs = {
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "search_path",
|
|
title = i18n("prefs.search_path_title"),
|
|
description = i18n("prefs.search_path_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ldap.search_path",
|
|
default = "",
|
|
hidden = (not hasLdap),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "admin_group",
|
|
title = i18n("prefs.admin_group_title"),
|
|
description = i18n("prefs.admin_group_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ldap.admin_group",
|
|
default = "",
|
|
hidden = (not hasLdap),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "user_group",
|
|
title = i18n("prefs.user_group_title"),
|
|
description = i18n("prefs.user_group_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ldap.user_group",
|
|
default = "",
|
|
hidden = (not hasLdap),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "toggle_ldap_ext_user_cap",
|
|
title = i18n("prefs.toggle_ldap_ext_user_cap_title"),
|
|
description = i18n("prefs.toggle_ldap_ext_user_cap_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.ldap.ext_user_cap",
|
|
default = "0",
|
|
hidden = (not hasLdap)
|
|
}, {
|
|
key = "toggle_ldap_referrals",
|
|
title = i18n("prefs.toggle_ldap_referrals_title"),
|
|
description = i18n("prefs.toggle_ldap_referrals_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.ldap.follow_referrals",
|
|
default = "1",
|
|
hidden = (not hasLdap)
|
|
}, {
|
|
key = "toggle_ldap_debug",
|
|
title = i18n("prefs.toggle_ldap_debug_title"),
|
|
description = i18n("prefs.toggle_ldap_debug_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.ldap_debug",
|
|
default = "0",
|
|
hidden = (not hasLdap)
|
|
}, -- RADIUS auth
|
|
{
|
|
key = "toggle_radius_auth",
|
|
title = i18n("prefs.toggle_radius_auth"),
|
|
description = i18n("prefs.toggle_radius_auth_descr", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.radius.auth_enabled",
|
|
default = "0",
|
|
hidden = (not hasRadius),
|
|
section = i18n("prefs.radius_auth"),
|
|
to_switch = {"radius_server", "radius_secret", "radius_auth_proto", "radius_admin_group",
|
|
"radius_unpriv_capabilties_group", "toggle_radius_external_auth_for_local_users",
|
|
"toggle_radius_accounting", "radius_accounting_server"}
|
|
}, {
|
|
key = "radius_server",
|
|
title = i18n("prefs.radius_server_title"),
|
|
description = i18n("prefs.radius_server_description", {
|
|
example = "127.0.0.1:1812"
|
|
}),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.radius.radius_server_address",
|
|
default = "127.0.0.1:1812",
|
|
hidden = (not hasRadius),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "radius_secret",
|
|
title = i18n("prefs.radius_secret_title"),
|
|
description = i18n("prefs.radius_secret_descroption"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.radius.radius_secret",
|
|
default = "",
|
|
hidden = (not hasRadius),
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "48"
|
|
}
|
|
}, {
|
|
key = "radius_auth_proto",
|
|
title = i18n("prefs.radius_auth_proto_title"),
|
|
description = i18n("prefs.radius_auth_proto_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.radius.radius_auth_proto",
|
|
default = "pap",
|
|
hidden = (not hasRadius),
|
|
options = {{
|
|
value = "pap",
|
|
label = i18n("prefs.pap")
|
|
}, {
|
|
value = "chap",
|
|
label = i18n("prefs.chap")
|
|
}}
|
|
}, {
|
|
key = "toggle_radius_external_auth_for_local_users",
|
|
title = i18n("prefs.toggle_radius_external_auth_for_local_users"),
|
|
description = i18n("prefs.toggle_radius_external_auth_for_local_users_descr", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.radius.external_auth_for_local_users_enabled",
|
|
default = "0",
|
|
hidden = (not hasRadius or not have_nedge),
|
|
reverse_switch = true,
|
|
to_switch = {"radius_admin_group", "radius_unpriv_capabilties_group"}
|
|
}, {
|
|
key = "radius_admin_group",
|
|
title = i18n("prefs.radius_admin_group_title"),
|
|
description = i18n("prefs.radius_admin_group_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.radius.radius_admin_group",
|
|
default = "",
|
|
hidden = (not hasRadius),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "radius_unpriv_capabilties_group",
|
|
title = i18n("prefs.radius_unpriv_capabilties_group_title"),
|
|
description = i18n("prefs.radius_unpriv_capabilties_group_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.radius.radius_unpriv_capabilties_group",
|
|
default = "",
|
|
hidden = (not hasRadius),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "toggle_radius_accounting",
|
|
title = i18n("prefs.toggle_radius_accounting"),
|
|
description = i18n("prefs.toggle_radius_accounting_descr", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.radius.accounting_enabled",
|
|
default = "0",
|
|
hidden = (not hasRadius or not have_nedge),
|
|
to_switch = {"radius_accounting_server"}
|
|
}, {
|
|
key = "radius_accounting_server",
|
|
title = i18n("prefs.radius_accounting_server_title"),
|
|
description = i18n("prefs.radius_accounting_server_description", {
|
|
example = "127.0.0.1:1813"
|
|
}),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.radius.radius_acct_server_address",
|
|
default = "127.0.0.1:1813",
|
|
hidden = (not hasRadius or not have_nedge),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, -- HTTP auth
|
|
{
|
|
key = "toggle_http_auth",
|
|
title = i18n("prefs.toggle_http_auth"),
|
|
description = i18n("prefs.toggle_http_auth_descr"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.http_authenticator.auth_enabled",
|
|
default = "0",
|
|
hidden = have_nedge,
|
|
section = i18n("prefs.http_auth"),
|
|
to_switch = {"http_auth_server"}
|
|
}, {
|
|
key = "http_auth_server",
|
|
title = i18n("prefs.http_auth_server_title"),
|
|
description = i18n("prefs.http_auth_server_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.http_authenticator.http_auth_url",
|
|
default = "",
|
|
hidden = have_nedge,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, -- Local auth
|
|
{
|
|
key = "toggle_local_auth",
|
|
title = i18n("prefs.toggle_local_auth"),
|
|
description = i18n("prefs.toggle_local_auth_descr", {
|
|
product = info.product
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.local.auth_enabled",
|
|
default = "1",
|
|
section = i18n("prefs.local_auth")
|
|
}}
|
|
},
|
|
|
|
-- Timeseries
|
|
{
|
|
id = "on_disk_ts",
|
|
label = i18n("prefs.timeseries"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {
|
|
-- Timeseries Database
|
|
{
|
|
key = "multiple_timeseries_database",
|
|
title = i18n("prefs.multiple_timeseries_database_title"),
|
|
description = i18n("prefs.multiple_timeseries_database_description"),
|
|
type = "select",
|
|
redis_key = "ntopng.prefs.timeseries_driver",
|
|
default = "rrd",
|
|
section = i18n("prefs.timeseries_database"),
|
|
options = {{
|
|
value = "rrd",
|
|
label = "RRD"
|
|
}, {
|
|
value = "influxdb",
|
|
label = "InfluxDB 1.x/2.x"
|
|
}, {
|
|
value = "clickhouse",
|
|
label = "ClickHouse"
|
|
}},
|
|
to_switch = {"influxdb_url", "influxdb_dbname", "toggle_influx_auth", "influxdb_username",
|
|
"influxdb_password", "influxdb_query_timeout"},
|
|
show_when = {
|
|
influxdb_url = {"influxdb"},
|
|
influxdb_dbname = {"influxdb"},
|
|
toggle_influx_auth = {"influxdb"},
|
|
influxdb_username = {"influxdb"},
|
|
influxdb_password = {"influxdb"},
|
|
influxdb_query_timeout = {"influxdb"},
|
|
timeseries_resolution_resolution = {"influxdb", "clickhouse"}
|
|
},
|
|
when_value_download = {
|
|
value = "clickhouse",
|
|
url = ntop.getHttpPrefix() .. "/misc/grafana/ntopng-clickhouse-dashboard.json",
|
|
filename = "ntopng-clickhouse-dashboard.json",
|
|
label = i18n("prefs.clickhouse_ts_grafana_dashboard_btn")
|
|
}
|
|
}, {
|
|
key = "influxdb_url",
|
|
title = i18n("prefs.influxdb_url_title"),
|
|
description = i18n("prefs.influxdb_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ts_post_data_url",
|
|
default = "http://localhost:8086",
|
|
section = i18n("prefs.timeseries_database"),
|
|
test_endpoint = "/lua/rest/v2/get/ntopng/test_url_connectivity.lua",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
}
|
|
}, {
|
|
key = "influxdb_dbname",
|
|
title = i18n("prefs.influxdb_dbname_title"),
|
|
description = i18n("prefs.influxdb_dbname_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.influx_dbname",
|
|
default = "ntopng",
|
|
section = i18n("prefs.timeseries_database"),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "64"
|
|
}
|
|
}, {
|
|
key = "toggle_influx_auth",
|
|
title = i18n("prefs.influxdb_auth_title"),
|
|
description = i18n("prefs.influxdb_auth_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.influx_auth_enabled",
|
|
default = "0",
|
|
section = i18n("prefs.timeseries_database"),
|
|
to_switch = {"influxdb_username", "influxdb_password"}
|
|
}, {
|
|
key = "influxdb_username",
|
|
title = i18n("login.username"),
|
|
description = i18n("prefs.influxdb_username_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.influx_username",
|
|
default = "",
|
|
section = i18n("prefs.timeseries_database"),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "64"
|
|
}
|
|
}, {
|
|
key = "influxdb_password",
|
|
title = i18n("login.password"),
|
|
description = i18n("prefs.influxdb_password_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.influx_password",
|
|
default = "",
|
|
password = true,
|
|
section = i18n("prefs.timeseries_database"),
|
|
attrs = {
|
|
maxlength = "64"
|
|
}
|
|
}, {
|
|
key = "timeseries_resolution_resolution",
|
|
title = i18n("prefs.timeseries_resolution_resolution_title"),
|
|
description = i18n("prefs.timeseries_resolution_resolution_description_2"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.ts_resolution",
|
|
default = "300",
|
|
section = i18n("prefs.timeseries_database"),
|
|
options = {{
|
|
value = "60",
|
|
label = "1m"
|
|
}, {
|
|
value = "300",
|
|
label = "5m"
|
|
}}
|
|
}, {
|
|
key = "influxdb_query_timeout",
|
|
title = i18n("prefs.influxdb_query_timeout_title"),
|
|
description = i18n("prefs.influxdb_query_timeout_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.influx_query_timeout",
|
|
default = "10",
|
|
section = i18n("prefs.timeseries_database"),
|
|
attrs = {
|
|
min = "1"
|
|
}
|
|
}, {
|
|
key = "ts_data_retention",
|
|
title = i18n("prefs.ts_and_stats_data_retention"),
|
|
description = i18n("prefs.ts_and_stats_data_retention_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.ts_and_stats_data_retention_days",
|
|
default = "30",
|
|
section = i18n("prefs.timeseries_database"),
|
|
attrs = {
|
|
min = "1",
|
|
max = tostring(365 * 10)
|
|
}
|
|
}, {
|
|
key = "rrd_files_retention",
|
|
title = i18n("prefs.rrd_files_retention_title"),
|
|
description = i18n("prefs.rrd_files_retention_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.rrd_files_retention_days",
|
|
default = "90",
|
|
hidden = (active_ts_driver ~= "rrd"),
|
|
section = i18n("prefs.timeseries_database"),
|
|
attrs = {
|
|
min = "7",
|
|
max = tostring(365 * 10)
|
|
}
|
|
}, -- Interfaces Timeseries
|
|
{
|
|
key = "toggle_interface_traffic_rrd_creation",
|
|
title = i18n("prefs.toggle_traffic_rrd_creation_title"),
|
|
description = i18n("prefs.toggle_traffic_rrd_creation_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.interface_rrd_creation",
|
|
default = "1",
|
|
section = i18n("prefs.interfaces_timeseries"),
|
|
to_switch = {"toggle_interface_ndpi_timeseries_creation"}
|
|
}, {
|
|
key = "toggle_interface_ndpi_timeseries_creation",
|
|
title = i18n("prefs.toggle_ndpi_timeseries_creation_title"),
|
|
description = i18n("prefs.toggle_ndpi_timeseries_creation_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.interface_ndpi_timeseries_creation",
|
|
default = "per_protocol",
|
|
section = i18n("prefs.interfaces_timeseries"),
|
|
options = {{
|
|
value = "none",
|
|
label = i18n("prefs.none")
|
|
}, {
|
|
value = "per_protocol",
|
|
label = i18n("prefs.per_protocol")
|
|
}, {
|
|
value = "per_category",
|
|
label = i18n("prefs.per_category")
|
|
}, {
|
|
value = "both",
|
|
label = i18n("prefs.per_protocol") .. " + " .. i18n("prefs.per_category")
|
|
}}
|
|
}, {
|
|
key = "toggle_split_ts_direction",
|
|
title = i18n("prefs.toggle_split_ts_direction_title"),
|
|
description = i18n("prefs.toggle_split_ts_direction_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.split_ts_direction",
|
|
default = "total",
|
|
section = i18n("prefs.interfaces_timeseries"),
|
|
options = {{
|
|
value = "total",
|
|
label = i18n("total")
|
|
}, {
|
|
value = "rx_tx",
|
|
label = i18n("prefs.rx_tx")
|
|
}}
|
|
},
|
|
-- Local Hosts Timeseries
|
|
{
|
|
key = "toggle_local_hosts_ts_creation",
|
|
title = i18n("prefs.toggle_local_hosts_ts_creation_title"),
|
|
description = i18n("prefs.toggle_local_hosts_ts_creation_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.hosts_ts_creation",
|
|
default = "light",
|
|
section = i18n("prefs.local_hosts_timeseries"),
|
|
options = {{
|
|
value = "off",
|
|
label = i18n("off")
|
|
}, {
|
|
value = "light",
|
|
label = i18n("light")
|
|
}, {
|
|
value = "full",
|
|
label = i18n("full")
|
|
}},
|
|
show_when = {
|
|
toggle_local_hosts_one_way_ts = {"light", "full"},
|
|
hosts_ndpi_timeseries_creation = {"full"}
|
|
}
|
|
}, {
|
|
key = "toggle_local_hosts_one_way_ts",
|
|
title = i18n("prefs.toggle_local_hosts_one_way_ts_title"),
|
|
description = i18n("prefs.toggle_local_hosts_one_way_ts_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.hosts_one_way_traffic_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.local_hosts_timeseries")
|
|
}, {
|
|
key = "hosts_ndpi_timeseries_creation",
|
|
title = i18n("prefs.toggle_ndpi_timeseries_creation_title"),
|
|
description = i18n("prefs.toggle_ndpi_timeseries_creation_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.host_ndpi_timeseries_creation",
|
|
default = "none",
|
|
section = i18n("prefs.local_hosts_timeseries"),
|
|
options = {{
|
|
value = "none",
|
|
label = i18n("prefs.none")
|
|
}, {
|
|
value = "per_protocol",
|
|
label = i18n("prefs.per_protocol")
|
|
}, {
|
|
value = "per_category",
|
|
label = i18n("prefs.per_category")
|
|
}, {
|
|
value = "both",
|
|
label = i18n("prefs.per_protocol") .. " + " .. i18n("prefs.per_category")
|
|
}}
|
|
},
|
|
-- MAC Addresses Timeseries
|
|
{
|
|
key = "toggle_l2_devices_traffic_rrd_creation",
|
|
title = i18n("prefs.toggle_traffic_rrd_creation_title"),
|
|
description = i18n("prefs.toggle_traffic_rrd_creation_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.l2_device_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.l2_devices_timeseries"),
|
|
to_switch = {"l2_device_ndpi_timeseries_creation"}
|
|
}, {
|
|
key = "l2_device_ndpi_timeseries_creation",
|
|
title = i18n("prefs.toggle_ndpi_timeseries_creation_title"),
|
|
description = i18n("prefs.toggle_ndpi_timeseries_creation_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.l2_device_ndpi_timeseries_creation",
|
|
default = "none",
|
|
section = i18n("prefs.l2_devices_timeseries"),
|
|
options = {{
|
|
value = "none",
|
|
label = i18n("prefs.none")
|
|
}, {
|
|
value = "per_category",
|
|
label = i18n("prefs.per_category")
|
|
}}
|
|
},
|
|
-- Flow Exporter Timeseries
|
|
{
|
|
key = "toggle_flow_rrds",
|
|
title = i18n("prefs.toggle_flow_rrds_title"),
|
|
description = i18n("prefs.toggle_flow_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.flow_device_port_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.exporter_timeseries")
|
|
}, {
|
|
key = "toggle_exporters_ndpi_ts_creation",
|
|
title = i18n("prefs.toggle_exporters_ndpi_ts_creation_title"),
|
|
description = i18n("prefs.toggle_exporters_ndpi_ts_creation_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.exporters_ndpi_ts_creation",
|
|
default = "none",
|
|
section = i18n("prefs.exporter_timeseries"),
|
|
options = {{
|
|
value = "none",
|
|
label = i18n("prefs.none")
|
|
}, {
|
|
value = "per_protocol",
|
|
label = i18n("prefs.per_protocol")
|
|
}}
|
|
}, {
|
|
key = "toggle_flow_rrds_resolution",
|
|
title = i18n("prefs.toggle_flow_rrds_resolution_title"),
|
|
description = i18n("prefs.toggle_flow_rrds_resolution_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.exporters_ts_resolution",
|
|
default = "300",
|
|
section = i18n("prefs.exporter_timeseries"),
|
|
options = {{
|
|
value = "60",
|
|
label = "1m"
|
|
}, {
|
|
value = "300",
|
|
label = "5m"
|
|
}}
|
|
}, {
|
|
key = "toggle_interface_usage_probes_timeseries",
|
|
title = i18n("prefs.toggle_exporter_interface_usage_timeseries_title"),
|
|
description = i18n("prefs.toggle_exporter_interface_usage_timeseries_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.interface_usage_probes_timeseries",
|
|
default = "1",
|
|
section = i18n("prefs.exporter_timeseries")
|
|
},
|
|
-- System Timeseries
|
|
{
|
|
key = "toggle_system_probes_timeseries",
|
|
title = i18n("prefs.toggle_system_probes_timeseries_title"),
|
|
description = i18n("prefs.toggle_system_probes_timeseries_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.system_probes_timeseries",
|
|
default = "1",
|
|
section = i18n("prefs.system_probes_timeseries")
|
|
},
|
|
-- Other Timeseries
|
|
{
|
|
key = "toggle_intranet_traffic_rrd_creation",
|
|
title = i18n("prefs.toggle_intranet_traffic_rrds_title"),
|
|
description = i18n("prefs.toggle_intranet_traffic_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.intranet_traffic_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries"),
|
|
hidden = (not is_pro)
|
|
}, {
|
|
key = "toggle_observation_points_rrd_creation",
|
|
title = i18n("prefs.toggle_observation_points_rrds_title"),
|
|
description = i18n("prefs.toggle_observation_points_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.observation_points_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries"),
|
|
hidden = (not is_pro)
|
|
}, {
|
|
key = "toggle_pools_rrds",
|
|
title = i18n(have_nedge and "prefs.toggle_users_rrds_title" or "prefs.toggle_pools_rrds_title"),
|
|
description = i18n(have_nedge and "prefs.toggle_users_rrds_description" or
|
|
"prefs.toggle_pools_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.host_pools_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries"),
|
|
hidden = (not is_pro)
|
|
}, {
|
|
key = "toggle_vlan_rrds",
|
|
title = i18n("prefs.toggle_vlan_rrds_title"),
|
|
description = i18n("prefs.toggle_vlan_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.vlan_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries")
|
|
}, {
|
|
key = "toggle_asn_rrds",
|
|
title = i18n("prefs.toggle_asn_rrds_title"),
|
|
description = i18n("prefs.toggle_asn_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.asn_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries")
|
|
}, {
|
|
key = "toggle_country_rrds",
|
|
title = i18n("prefs.toggle_country_rrds_title"),
|
|
description = i18n("prefs.toggle_country_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.country_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries")
|
|
}, {
|
|
key = "toggle_ndpi_flows_rrds",
|
|
title = i18n("prefs.toggle_ndpi_flows_rrds_title"),
|
|
description = i18n("prefs.toggle_ndpi_flows_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.ndpi_flows_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries"),
|
|
hidden = (not is_pro)
|
|
}, {
|
|
key = "toggle_internals_rrds",
|
|
title = i18n("prefs.toggle_internals_rrds_title"),
|
|
description = i18n("prefs.toggle_internals_rrds_description", {
|
|
url = ntop.getHttpPrefix() .. "/lua/if_stats.lua?page=internals"
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.internals_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries")
|
|
}, {
|
|
key = "toggle_os_rrds",
|
|
title = i18n("prefs.toggle_os_rrds_title"),
|
|
description = i18n("prefs.toggle_os_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.os_rrd_creation",
|
|
default = "0",
|
|
section = i18n("prefs.other_timeseries")
|
|
}}
|
|
},
|
|
|
|
-- In Memory Cache
|
|
{
|
|
id = "in_memory",
|
|
label = i18n("prefs.cache_settings"),
|
|
advanced = true,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {
|
|
-- Stats Reset
|
|
{
|
|
key = "toggle_midnight_stats_reset",
|
|
title = i18n("prefs.toggle_midnight_stats_reset_title"),
|
|
description = i18n("prefs.toggle_midnight_stats_reset_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.midnight_stats_reset_enabled",
|
|
default = "0",
|
|
section = i18n("prefs.stats_reset")
|
|
},
|
|
-- Local Hosts Cache Settings
|
|
{
|
|
key = "toggle_local_host_cache_enabled",
|
|
title = i18n("prefs.toggle_local_host_cache_enabled_title"),
|
|
description = i18n("prefs.toggle_local_host_cache_enabled_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_local_host_cache_enabled",
|
|
default = "1",
|
|
section = i18n("prefs.local_hosts_cache_settings"),
|
|
to_switch = {"local_host_cache_duration", "toggle_active_local_host_cache_enabled",
|
|
"active_local_host_cache_interval"}
|
|
}, {
|
|
key = "local_host_cache_duration",
|
|
title = i18n("prefs.local_host_cache_duration_title"),
|
|
description = i18n("prefs.local_host_cache_duration_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.local_host_cache_duration",
|
|
default = "3600",
|
|
tformat = "mhd",
|
|
attrs = {
|
|
min = "60"
|
|
}
|
|
}, {
|
|
key = "toggle_active_local_host_cache_enabled",
|
|
title = i18n("prefs.toggle_active_local_host_cache_enabled_title"),
|
|
description = i18n("prefs.toggle_active_local_host_cache_enabled_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.is_active_local_host_cache_enabled",
|
|
default = "0",
|
|
to_switch = {"active_local_host_cache_interval"}
|
|
}, {
|
|
key = "active_local_host_cache_interval",
|
|
title = i18n("prefs.active_local_host_cache_interval_title"),
|
|
description = i18n("prefs.active_local_host_cache_interval_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.active_local_host_cache_interval",
|
|
default = "3600",
|
|
tformat = "mhd",
|
|
attrs = {
|
|
min = "60"
|
|
}
|
|
},
|
|
-- Flow Cache Settings
|
|
{
|
|
key = "toggle_flow_swap_heuristic",
|
|
title = i18n("prefs.toggle_flow_swap_heuristic"),
|
|
description = i18n("prefs.toggle_flow_swap_heuristic_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_flow_swap_heuristic",
|
|
default = "1",
|
|
section = i18n("prefs.flow_cache_settings")
|
|
}, {
|
|
key = "toggle_skip_dpi_for_collected_flows",
|
|
title = i18n("prefs.toggle_skip_dpi_for_collected_flows"),
|
|
description = i18n("prefs.toggle_skip_dpi_for_collected_flows_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.skip_dpi_for_collected_flows",
|
|
default = "0"
|
|
},
|
|
-- Idle Timeout Settings
|
|
{
|
|
key = "flow_max_idle",
|
|
title = i18n("prefs.flow_max_idle_title"),
|
|
description = i18n("prefs.flow_max_idle_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.flow_max_idle",
|
|
default = "60",
|
|
tformat = "smh",
|
|
section = i18n("prefs.idle_timeout_settings"),
|
|
attrs = {
|
|
min = "1",
|
|
max = "3600"
|
|
}
|
|
}, {
|
|
key = "local_host_max_idle",
|
|
title = i18n("prefs.local_host_max_idle_title"),
|
|
description = i18n("prefs.local_host_max_idle_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.local_host_max_idle",
|
|
default = "300",
|
|
tformat = "smh",
|
|
attrs = {
|
|
min = "1",
|
|
max = tostring(7 * 86400)
|
|
}
|
|
}, {
|
|
key = "non_local_host_max_idle",
|
|
title = i18n("prefs.non_local_host_max_idle_title"),
|
|
description = i18n("prefs.non_local_host_max_idle_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.non_local_host_max_idle",
|
|
default = "60",
|
|
tformat = "smh",
|
|
attrs = {
|
|
min = "1",
|
|
max = tostring(7 * 86400)
|
|
}
|
|
}, {
|
|
key = "mac_address_cache_duration",
|
|
title = i18n("prefs.mac_address_cache_duration_title"),
|
|
description = i18n("prefs.mac_address_cache_duration_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.mac_address_cache_duration",
|
|
default = "300",
|
|
tformat = "mhd",
|
|
attrs = {
|
|
min = "5"
|
|
}
|
|
}}
|
|
},
|
|
|
|
-- Dump Settings
|
|
{
|
|
id = "dump_settings",
|
|
label = i18n("prefs.dump_settings"),
|
|
advanced = true,
|
|
pro_only = false,
|
|
hidden = (is_dump_flows_enabled == false),
|
|
entries = {{
|
|
key = "toggle_enable_runtime_flows_dump",
|
|
title = i18n("prefs.toggle_enable_runtime_flows_dump_title"),
|
|
description = i18n("prefs.toggle_enable_runtime_flows_dump_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_runtime_flows_dump",
|
|
default = "1"
|
|
}, {
|
|
key = "dump_frequency",
|
|
title = i18n("prefs.dump_frequency_title"),
|
|
description = i18n("prefs.dump_frequency_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.dump_frequency",
|
|
default = "60",
|
|
attrs = {
|
|
min = "1"
|
|
}
|
|
}, {
|
|
key = "toggle_tiny_flows_dump",
|
|
title = i18n("prefs.toggle_tiny_flows_dump_title"),
|
|
description = i18n("prefs.toggle_tiny_flows_dump_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.tiny_flows_export_enabled",
|
|
default = "1",
|
|
reverse_switch = true,
|
|
to_switch = {"max_num_packets_per_tiny_flow", "max_num_bytes_per_tiny_flow"}
|
|
}, {
|
|
key = "max_num_packets_per_tiny_flow",
|
|
title = i18n("prefs.max_num_packets_per_tiny_flow_title"),
|
|
description = i18n("prefs.max_num_packets_per_tiny_flow_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_num_packets_per_tiny_flow",
|
|
default = "10",
|
|
attrs = {
|
|
min = "1"
|
|
}
|
|
}, {
|
|
key = "max_num_bytes_per_tiny_flow",
|
|
title = i18n("prefs.max_num_bytes_per_tiny_flow_title"),
|
|
description = i18n("prefs.max_num_bytes_per_tiny_flow_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_num_bytes_per_tiny_flow",
|
|
default = "1024",
|
|
attrs = {
|
|
min = "1"
|
|
}
|
|
}}
|
|
},
|
|
|
|
-- Network Interfaces
|
|
{
|
|
id = "ifaces",
|
|
label = i18n("prefs.network_interfaces"),
|
|
advanced = true,
|
|
pro_only = false,
|
|
hidden = false,
|
|
nedge_hidden = true,
|
|
entries = {{
|
|
key = "ignored_interfaces",
|
|
title = i18n("prefs.ignored_interfaces_title"),
|
|
description = i18n("prefs.ignored_interfaces_description", {
|
|
product = info.product
|
|
}),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.ignored_interfaces",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "32",
|
|
pattern = "^([0-9]+,)*[0-9]+$"
|
|
}
|
|
}, {
|
|
key = "toggle_dst_with_post_nat_dst",
|
|
title = i18n("prefs.toggle_dst_with_post_nat_dst_title"),
|
|
description = i18n("prefs.toggle_dst_with_post_nat_dst_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.override_dst_with_post_nat_dst",
|
|
default = "0"
|
|
}, {
|
|
key = "toggle_src_with_post_nat_src",
|
|
title = i18n("prefs.toggle_src_with_post_nat_src_title"),
|
|
description = i18n("prefs.toggle_src_with_post_nat_src_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.override_src_with_post_nat_src",
|
|
default = "0"
|
|
}}
|
|
},
|
|
|
|
-- OT Protocols
|
|
{
|
|
id = "ot_protocols",
|
|
label = i18n("prefs.ot_protocols"),
|
|
advanced = true,
|
|
pro_only = false,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "iec60870_learning_period",
|
|
title = i18n("prefs.iec60870_learning_period_title"),
|
|
description = i18n("prefs.iec60870_learning_period_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.iec60870_learning_period",
|
|
default = "21600",
|
|
tformat = "hd",
|
|
attrs = {
|
|
min = "3600"
|
|
}
|
|
}, {
|
|
key = "modbus_learning_period",
|
|
title = i18n("prefs.modbus_learning_period_title"),
|
|
description = i18n("prefs.modbus_learning_period_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.modbus_learning_period",
|
|
default = "21600",
|
|
tformat = "hd",
|
|
attrs = {
|
|
min = "3600"
|
|
},
|
|
hidden = (not is_enterprise_l)
|
|
}, {
|
|
key = "s7comm_learning_period",
|
|
title = i18n("prefs.s7comm_learning_period_title"),
|
|
description = i18n("prefs.s7comm_learning_period_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.s7comm_learning_period",
|
|
default = "21600",
|
|
tformat = "hd",
|
|
attrs = {
|
|
min = "3600"
|
|
},
|
|
hidden = (not is_enterprise_l)
|
|
}}
|
|
},
|
|
|
|
-- Recording
|
|
{
|
|
id = "recording",
|
|
label = i18n("prefs.recording"),
|
|
advanced = false,
|
|
pro_only = false,
|
|
hidden = (not flags.recording_available and not have_nedge),
|
|
entries = {{
|
|
key = "n2disk_license",
|
|
title = i18n("prefs.n2disk_license_title"),
|
|
description = i18n("prefs.n2disk_license_description", {
|
|
purchase_url = "http://shop.ntop.org/",
|
|
universities_url = "http://www.ntop.org/support/faq/do-you-charge-universities-no-profit-and-research/"
|
|
}),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.n2disk_license",
|
|
default = "",
|
|
hidden = have_nedge,
|
|
attrs = {
|
|
maxlength = "64"
|
|
}
|
|
}, {
|
|
key = "max_extracted_pcap_bytes",
|
|
title = i18n("traffic_recording.max_extracted_pcap_bytes_title"),
|
|
description = i18n("traffic_recording.max_extracted_pcap_bytes_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
tformat = "mg",
|
|
redis_key = "ntopng.prefs.max_extracted_pcap_bytes",
|
|
default = tostring(prefs.max_extracted_pcap_bytes or 104857600),
|
|
attrs = {
|
|
min = tostring(10 * 1024 * 1024)
|
|
}
|
|
}, {
|
|
key = "max_extracted_pcap_files",
|
|
title = i18n("traffic_recording.max_extracted_pcap_files_title"),
|
|
description = i18n("traffic_recording.max_extracted_pcap_files_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_extracted_pcap_files",
|
|
default = tostring(prefs.max_extracted_pcap_files or 10),
|
|
attrs = {
|
|
min = "0"
|
|
}
|
|
}}
|
|
},
|
|
|
|
-- ASN Settings
|
|
{
|
|
id = "asn_settings",
|
|
label = i18n("prefs.asn_mode"),
|
|
advanced = true,
|
|
pro_only = false,
|
|
hidden = not flags.is_zmq_interface,
|
|
entries = {{
|
|
key = "asn_mode_enabled",
|
|
title = i18n("prefs.toggle_asn_mode_title"),
|
|
description = i18n("prefs.toggle_asn_mode_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.toggle_asn_mode",
|
|
default = "0"
|
|
}, {
|
|
key = "bgp_server_address",
|
|
title = i18n("prefs.bgp_server_address_title"),
|
|
description = i18n("prefs.bgp_server_address_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.bgp_server.ip_address",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "bgp_server_port",
|
|
title = i18n("prefs.bgp_server_port_title"),
|
|
description = i18n("prefs.bgp_server_port_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.bgp_server.port",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}, {
|
|
key = "bgp_prefix_changes_endpoint",
|
|
title = i18n("prefs.bgp_prefix_changes_endpoint_title"),
|
|
description = i18n("prefs.bgp_prefix_changes_endpoint_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.bgp_server.prefix_changes_endpoint",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
}
|
|
}}
|
|
}}
|
|
|
|
-- Pro / Enterprise sections
|
|
-- Always appended so community users see them as locked (pro_only=true).
|
|
-- The POST endpoint rejects writes when is_pro/is_enterprise is false.
|
|
|
|
local is_pro = flags.is_pro or false
|
|
local is_enterprise = flags.is_enterprise or false
|
|
local is_enterprise_m = flags.is_enterprise_m or false
|
|
local is_enterprise_l = flags.is_enterprise_l or false
|
|
local is_enterprise_xl = flags.is_enterprise_xl or false
|
|
local is_nedge_enterprise = flags.is_nedge_enterprise or false
|
|
local has_ch_support = flags.has_ch_support or false
|
|
local has_nanalyst = flags.has_nanalyst or false
|
|
|
|
-- Protocols
|
|
sections[#sections + 1] = {
|
|
id = "protocols",
|
|
label = i18n("prefs.protocols"),
|
|
advanced = false,
|
|
pro_only = true,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_top_sites",
|
|
title = i18n("prefs.toggle_top_sites_title"),
|
|
description = i18n("prefs.toggle_top_sites_description", {
|
|
url = "https://resources.sei.cmu.edu/asset_files/Presentation/2010_017_001_49763.pdf"
|
|
}),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.host_top_sites_creation",
|
|
default = "0",
|
|
hidden = (not is_pro)
|
|
}, {
|
|
key = "toggle_dns_cache",
|
|
title = i18n("prefs.toggle_dns_cache_title"),
|
|
description = i18n("prefs.toggle_dns_cache_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.dns_cache",
|
|
default = "0",
|
|
hidden = (not is_pro)
|
|
}, {
|
|
key = "toggle_tls_quic_hostnaming",
|
|
title = i18n("prefs.toggle_tls_quic_hostnaming_title"),
|
|
description = i18n("prefs.toggle_tls_quic_hostnaming_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.tls_quic_hostnaming",
|
|
default = "0",
|
|
hidden = (not is_pro)
|
|
}}
|
|
}
|
|
|
|
-- Assets / Wazuh
|
|
sections[#sections + 1] = {
|
|
id = "assets",
|
|
label = i18n("prefs.assets"),
|
|
advanced = false,
|
|
pro_only = true,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "wazuh_url",
|
|
title = i18n("prefs.wazuh_url_title"),
|
|
description = i18n("prefs.wazuh_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.wazuh.wazuh_url",
|
|
default = "",
|
|
test_endpoint = "/lua/rest/v2/get/ntopng/test_wazuh_connectivity.lua",
|
|
test_params = { username = "wazuh_username", password = "wazuh_password" },
|
|
section = i18n("prefs.wazuh"),
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255",
|
|
pattern = "https?://.+"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "wazuh_username",
|
|
title = i18n("prefs.wazuh_username_title"),
|
|
description = i18n("prefs.wazuh_username_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.wazuh.wazuh_username",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "wazuh_password",
|
|
title = i18n("prefs.wazuh_password_title"),
|
|
description = i18n("prefs.wazuh_password_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.wazuh.wazuh_password",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "toggle_wazuh_automerge",
|
|
title = i18n("prefs.toggle_wazuh_automerge_title"),
|
|
description = i18n("prefs.toggle_wazuh_automerge_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.wazuh_automerge_enabled",
|
|
default = "0",
|
|
hidden = (not is_enterprise_m)
|
|
}}
|
|
}
|
|
|
|
-- Traffic Behaviour
|
|
sections[#sections + 1] = {
|
|
id = "traffic_behaviour",
|
|
label = i18n("prefs.behaviour"),
|
|
advanced = true,
|
|
pro_only = true,
|
|
hidden = (not is_enterprise),
|
|
entries = {
|
|
-- Assets
|
|
{
|
|
key = "toggle_assets_inventory",
|
|
title = i18n("prefs.toggle_assets_inventory_title"),
|
|
description = i18n("prefs.toggle_assets_inventory_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_asset_inventory",
|
|
default = "1",
|
|
section = i18n("assets")
|
|
},
|
|
-- Service Map
|
|
-- tformat="hd": value stored in seconds; UI shows number + Hours/Days selector
|
|
-- LEARNING_STATUS (ntop_typedefs.h ServiceAcceptance): ALLOWED=0, DENIED=1, UNDECIDED=2
|
|
{
|
|
key = "behaviour_analysis_learning_period",
|
|
title = i18n("prefs.behaviour_analysis_learning_period_title"),
|
|
description = i18n("prefs.behaviour_analysis_learning_period_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.behaviour_analysis_learning_period",
|
|
default = tostring(prefs.behaviour_analysis_learning_period or 7200),
|
|
tformat = "hd",
|
|
section = i18n("prefs.service_map"),
|
|
attrs = {
|
|
min = "3600"
|
|
},
|
|
hidden = (not is_enterprise_l)
|
|
}, {
|
|
key = "behaviour_analysis_learning_status_during_learning",
|
|
title = i18n("prefs.behaviour_analysis_status_during_learning_title"),
|
|
description = i18n("prefs.behaviour_analysis_status_during_learning_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.behaviour_analysis_learning_status_during_learning",
|
|
default = "0",
|
|
options = {{
|
|
value = "2",
|
|
label = i18n("traffic_behaviour.undecided")
|
|
}, {
|
|
value = "0",
|
|
label = i18n("traffic_behaviour.allowed")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("traffic_behaviour.denied")
|
|
}},
|
|
section = i18n("prefs.service_map"),
|
|
hidden = (not is_enterprise_l)
|
|
}, {
|
|
key = "behaviour_analysis_learning_status_post_learning",
|
|
title = i18n("prefs.behaviour_analysis_status_post_learning_title"),
|
|
description = i18n("prefs.behaviour_analysis_status_post_learning_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.behaviour_analysis_learning_status_post_learning",
|
|
default = "0",
|
|
options = {{
|
|
value = "2",
|
|
label = i18n("traffic_behaviour.undecided")
|
|
}, {
|
|
value = "0",
|
|
label = i18n("traffic_behaviour.allowed")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("traffic_behaviour.denied")
|
|
}},
|
|
section = i18n("prefs.service_map"),
|
|
hidden = (not is_enterprise_l)
|
|
},
|
|
-- Devices Behaviour
|
|
{
|
|
key = "devices_learning_period",
|
|
title = i18n("prefs.devices_learning_period_title"),
|
|
description = i18n("prefs.devices_learning_period_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.devices_learning_period",
|
|
default = tostring(prefs.devices_learning_period or 7200),
|
|
tformat = "hd",
|
|
section = i18n("prefs.devices_behaviour"),
|
|
attrs = {
|
|
min = "7200"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "devices_status_during_learning",
|
|
title = i18n("prefs.devices_status_during_learning_title"),
|
|
description = i18n("prefs.devices_status_during_learning_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.devices_status_during_learning",
|
|
default = "0",
|
|
options = {{
|
|
value = "0",
|
|
label = i18n("traffic_behaviour.allowed")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("traffic_behaviour.denied")
|
|
}},
|
|
section = i18n("prefs.devices_behaviour"),
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "devices_status_post_learning",
|
|
title = i18n("prefs.devices_status_post_learning_title"),
|
|
description = i18n("prefs.devices_status_post_learning_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.devices_status_post_learning",
|
|
default = "0",
|
|
options = {{
|
|
value = "0",
|
|
label = i18n("traffic_behaviour.allowed")
|
|
}, {
|
|
value = "1",
|
|
label = i18n("traffic_behaviour.denied")
|
|
}},
|
|
section = i18n("prefs.devices_behaviour"),
|
|
hidden = (not is_enterprise_m)
|
|
},
|
|
-- Host Analysis
|
|
{
|
|
key = "host_port_learning_period",
|
|
title = i18n("prefs.host_port_learning_period_title"),
|
|
description = i18n("prefs.host_port_learning_period_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.host_port_learning_period",
|
|
default = tostring(prefs.host_port_learning_period or 7200),
|
|
tformat = "hd",
|
|
section = i18n("prefs.host_analysis"),
|
|
attrs = {
|
|
min = "7200"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}}
|
|
}
|
|
|
|
-- ClickHouse
|
|
local ch_enabled = (is_enterprise_m or is_nedge_enterprise) and ntop.isClickHouseEnabled and
|
|
ntop.isClickHouseEnabled()
|
|
-- aggregate flow prefs require EnterpriseXL + ClickHouse
|
|
local agg_flows_enabled = is_enterprise_xl and ch_enabled
|
|
sections[#sections + 1] = {
|
|
id = "clickhouse",
|
|
label = i18n("prefs.clickhouse"),
|
|
advanced = true,
|
|
pro_only = true,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "flow_data_retention",
|
|
title = i18n("prefs.flows_and_alerts_data_retention"),
|
|
description = i18n("prefs.flows_and_alerts_data_retention_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.flows_and_alerts_data_retention_days",
|
|
default = "30",
|
|
attrs = {
|
|
min = "1"
|
|
},
|
|
hidden = (not ch_enabled)
|
|
}, {
|
|
key = "aggregated_asn_data_retention",
|
|
title = i18n("prefs.aggregated_asn_data_retention_title"),
|
|
description = i18n("prefs.aggregated_asn_data_retention_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.aggregated_asn_data_retention_days",
|
|
default = "100",
|
|
attrs = {
|
|
min = "1"
|
|
},
|
|
hidden = (not ch_enabled)
|
|
}, {
|
|
key = "aggregated_flows_data_retention",
|
|
title = i18n("prefs.aggregated_flows_data_retention_title"),
|
|
description = i18n("prefs.aggregated_flows_data_retention_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.aggregated_flows_data_retention_days",
|
|
default = "365",
|
|
attrs = {
|
|
min = "1"
|
|
},
|
|
hidden = (not ch_enabled)
|
|
}, {
|
|
key = "vs_reports_data_retention",
|
|
title = i18n("prefs.vs_reports_data_retention_title"),
|
|
description = i18n("prefs.vs_reports_data_retention_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.vs_reports_retention_days",
|
|
default = "30",
|
|
attrs = {
|
|
min = "1"
|
|
},
|
|
hidden = (not ch_enabled)
|
|
}, {
|
|
key = "toggle_flow_aggregated_limit",
|
|
title = i18n("prefs.toggle_flow_aggregated_limit_title"),
|
|
description = i18n("prefs.toggle_flow_aggregated_limit_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_aggregated_flows_upperbound",
|
|
default = "10000",
|
|
attrs = {
|
|
min = "1000",
|
|
max = "10000000"
|
|
},
|
|
hidden = (not agg_flows_enabled)
|
|
}, {
|
|
key = "toggle_flow_aggregated_traffic_limit",
|
|
title = i18n("prefs.toggle_flow_aggregated_traffic_limit_title"),
|
|
description = i18n("prefs.toggle_flow_aggregated_traffic_limit_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.max_aggregated_flows_traffic_upperbound",
|
|
default = "5",
|
|
attrs = {
|
|
min = "0",
|
|
max = "5000"
|
|
},
|
|
hidden = (not agg_flows_enabled)
|
|
}, {
|
|
key = "toggle_flow_aggregated_alerted_flows",
|
|
title = i18n("prefs.toggle_flow_aggregated_alerted_flows_title"),
|
|
description = i18n("prefs.toggle_flow_aggregated_alerted_flows_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.include_alerted_flows_in_aggregated_flows",
|
|
default = "0",
|
|
hidden = (not agg_flows_enabled)
|
|
}, {
|
|
key = "toggle_dump_pcap_to_clickhouse",
|
|
title = i18n("prefs.toggle_dump_pcap_to_clickhouse_title"),
|
|
description = i18n("prefs.toggle_dump_pcap_to_clickhouse_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.dump_pcap_to_clickhouse",
|
|
default = "0",
|
|
hidden = (not ch_enabled)
|
|
}, {
|
|
key = "toggle_dump_duplicated_flows_to_clickhouse",
|
|
title = i18n("prefs.toggle_dump_duplicated_flows_to_clickhouse_title"),
|
|
description = i18n("prefs.toggle_dump_duplicated_flows_to_clickhouse_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.dump_duplicated_flows_to_clickhouse",
|
|
default = "0",
|
|
hidden = (not ch_enabled) or true
|
|
}, {
|
|
key = "toggle_query_performance_log",
|
|
title = i18n("prefs.toggle_query_performance_log_title"),
|
|
description = i18n("prefs.toggle_query_performance_log_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.enable_query_performance_log",
|
|
default = "0",
|
|
hidden = (not ch_enabled)
|
|
}, {
|
|
key = "toggle_data_archive_before_ttl_delete",
|
|
title = i18n("prefs.toggle_export_flows_to_archive_title"),
|
|
description = i18n("prefs.toggle_export_flows_to_archive_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.data_archive_before_ttl_delete",
|
|
default = "0",
|
|
to_switch = {"path_data_archive_before_ttl_delete"},
|
|
hidden = (not agg_flows_enabled)
|
|
}, {
|
|
key = "path_data_archive_before_ttl_delete",
|
|
title = i18n("prefs.path_export_flows_to_archive_title"),
|
|
description = i18n("prefs.path_export_flows_to_archive_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.path_data_archive_before_ttl_delete",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "512"
|
|
},
|
|
hidden = (not agg_flows_enabled)
|
|
}}
|
|
}
|
|
|
|
-- Message Broker
|
|
sections[#sections + 1] = {
|
|
id = "message_broker",
|
|
label = i18n("prefs.message_broker"),
|
|
advanced = false,
|
|
pro_only = true,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_message_broker",
|
|
title = i18n("prefs.toggle_message_broker_title"),
|
|
description = i18n("prefs.toggle_message_broker_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.toggle_message_broker",
|
|
default = "0",
|
|
to_switch = {"message_brokers_list", "message_broker_url", "message_broker_username",
|
|
"message_broker_password"},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "message_brokers_list",
|
|
title = i18n("prefs.message_brokers_title"),
|
|
description = i18n("prefs.message_brokers_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.message_broker",
|
|
default = "nats",
|
|
options = {{
|
|
value = "nats",
|
|
label = "NATS"
|
|
}},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "message_broker_url",
|
|
title = i18n("prefs.message_broker_url_title"),
|
|
description = i18n("prefs.message_broker_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.message_broker_url",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "message_broker_username",
|
|
title = i18n("login.username"),
|
|
description = i18n("prefs.message_broker_username_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.message_broker_username",
|
|
default = "",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}, {
|
|
key = "message_broker_password",
|
|
title = i18n("login.password"),
|
|
description = i18n("prefs.message_broker_password_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.message_broker_password",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
maxlength = "255"
|
|
},
|
|
hidden = (not is_enterprise_m)
|
|
}}
|
|
}
|
|
|
|
-- LLM Providers (Pro + nAnalyst)
|
|
sections[#sections + 1] = {
|
|
id = "llm_providers",
|
|
label = i18n("prefs.llm_providers"),
|
|
advanced = false,
|
|
pro_only = true,
|
|
hidden = not(ntop.hasnAnalyst()),
|
|
entries = {{
|
|
key = "local_llm_url",
|
|
title = i18n("prefs.llm_url_title"),
|
|
description = i18n("prefs.llm_local_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.local_llm_url",
|
|
default = "http://localhost:11434/v1/chat/completions",
|
|
test_endpoint = "/lua/rest/v2/get/ntopng/test_llm_connectivity.lua",
|
|
test_params = { llm_token = "local_llm_token", model = "local_llm_model" },
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_local"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "local_llm_token",
|
|
title = i18n("prefs.llm_token_title"),
|
|
description = i18n("prefs.llm_local_token_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.llm.local_llm_token",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_local"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "local_llm_model",
|
|
title = i18n("prefs.llm_model_title"),
|
|
description = i18n("prefs.llm_local_model_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.local_llm_model",
|
|
default = "Qwen3.5-9B",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
},
|
|
section = i18n("prefs.llm_local"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "qwen_url",
|
|
title = i18n("prefs.llm_url_title"),
|
|
description = i18n("prefs.llm_qwen_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.qwen_url",
|
|
default = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",
|
|
test_endpoint = "/lua/rest/v2/get/ntopng/test_llm_connectivity.lua",
|
|
test_params = { llm_token = "qwen_token", model = "qwen_model" },
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_qwen"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "qwen_token",
|
|
title = i18n("prefs.llm_token_title"),
|
|
description = i18n("prefs.llm_qwen_token_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.llm.qwen_token",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_qwen"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "qwen_model",
|
|
title = i18n("prefs.llm_model_title"),
|
|
description = i18n("prefs.llm_qwen_model_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.qwen_model",
|
|
default = "qwen-plus",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
},
|
|
section = i18n("prefs.llm_qwen"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "anthropic_url",
|
|
title = i18n("prefs.llm_url_title"),
|
|
description = i18n("prefs.llm_anthropic_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.anthropic_url",
|
|
default = "https://api.anthropic.com/v1/messages",
|
|
test_endpoint = "/lua/rest/v2/get/ntopng/test_llm_connectivity.lua",
|
|
test_params = { llm_token = "anthropic_token", model = "anthropic_model" },
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_anthropic"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "anthropic_token",
|
|
title = i18n("prefs.llm_token_title"),
|
|
description = i18n("prefs.llm_anthropic_token_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.llm.anthropic_token",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_anthropic"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "anthropic_model",
|
|
title = i18n("prefs.llm_model_title"),
|
|
description = i18n("prefs.llm_anthropic_model_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.anthropic_model",
|
|
default = "claude-opus-4-5",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
},
|
|
section = i18n("prefs.llm_anthropic"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "openai_url",
|
|
title = i18n("prefs.llm_url_title"),
|
|
description = i18n("prefs.llm_openai_url_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.openai_url",
|
|
default = "https://api.openai.com/v1/chat/completions",
|
|
test_endpoint = "/lua/rest/v2/get/ntopng/test_llm_connectivity.lua",
|
|
test_params = { llm_token = "openai_token", model = "openai_model" },
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_openai"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "openai_token",
|
|
title = i18n("prefs.llm_token_title"),
|
|
description = i18n("prefs.llm_openai_token_description"),
|
|
type = "input",
|
|
input_type = "password",
|
|
redis_key = "ntopng.prefs.llm.openai_token",
|
|
default = "",
|
|
password = true,
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "255"
|
|
},
|
|
section = i18n("prefs.llm_openai"),
|
|
hidden = (not has_nanalyst)
|
|
}, {
|
|
key = "openai_model",
|
|
title = i18n("prefs.llm_model_title"),
|
|
description = i18n("prefs.llm_openai_model_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.llm.openai_model",
|
|
default = "gpt-4o",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "128"
|
|
},
|
|
section = i18n("prefs.llm_openai"),
|
|
hidden = (not has_nanalyst)
|
|
}}
|
|
}
|
|
|
|
-- Reports
|
|
sections[#sections + 1] = {
|
|
id = "reports",
|
|
label = i18n("prefs.reports"),
|
|
advanced = false,
|
|
pro_only = true,
|
|
hidden = false,
|
|
entries = {{
|
|
key = "toggle_enable_automatic_reports",
|
|
title = i18n("prefs.toggle_enable_automatic_reports_title"),
|
|
description = i18n("prefs.toggle_enable_automatic_reports_descr"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.automatic_reports_enabled",
|
|
default = "0",
|
|
hidden = (not is_enterprise_l)
|
|
}, {
|
|
key = "reports_data_retention_time",
|
|
title = i18n("prefs.reports_data_retention_time_title"),
|
|
description = i18n("prefs.reports_data_retention_time_descr"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.reports_data_retention_days",
|
|
default = "30",
|
|
attrs = {
|
|
min = "1"
|
|
},
|
|
hidden = (not is_enterprise_l)
|
|
}}
|
|
}
|
|
|
|
-- SNMP
|
|
sections[#sections + 1] = {
|
|
id = "snmp",
|
|
label = i18n("prefs.snmp"),
|
|
advanced = true,
|
|
pro_only = true,
|
|
hidden = (not (is_enterprise_m or have_nedge)),
|
|
entries = {{
|
|
key = "toggle_snmp_rrds",
|
|
title = i18n("prefs.toggle_snmp_rrds_title"),
|
|
description = i18n("prefs.toggle_snmp_rrds_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.snmp_devices_rrd_creation",
|
|
default = "0",
|
|
to_switch = {"snmp_devices_exporters_rrds_resolution"},
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "snmp_devices_exporters_rrds_resolution",
|
|
title = i18n("prefs.snmp_devices_exporters_rrds_resolution_title"),
|
|
description = i18n("prefs.snmp_devices_exporters_rrds_resolution_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.snmp_devices_exporters_rrd",
|
|
default = "60",
|
|
options = {{
|
|
value = "0",
|
|
label = i18n("disabled")
|
|
}, {
|
|
value = "60",
|
|
label = "1m"
|
|
}, {
|
|
value = "300",
|
|
label = "5m"
|
|
}},
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "toggle_snmp_polling",
|
|
title = i18n("prefs.toggle_snmp_polling_title"),
|
|
description = i18n("prefs.toggle_snmp_polling_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.snmp_polling",
|
|
default = "0",
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "default_snmp_proto_version",
|
|
title = i18n("prefs.default_snmp_proto_version_title"),
|
|
description = i18n("prefs.default_snmp_proto_version_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.default_snmp_version",
|
|
default = "1",
|
|
options = {{
|
|
value = "0",
|
|
label = "v1"
|
|
}, {
|
|
value = "1",
|
|
label = "v2c"
|
|
}},
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "default_snmp_community",
|
|
title = i18n("prefs.default_snmp_community_title"),
|
|
description = i18n("prefs.default_snmp_community_description"),
|
|
type = "input",
|
|
input_type = "text",
|
|
redis_key = "ntopng.prefs.default_snmp_community",
|
|
default = "public",
|
|
attrs = {
|
|
spellcheck = "false",
|
|
maxlength = "64"
|
|
},
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "snmp_interface_format",
|
|
title = i18n("prefs.snmp_interface_format_title"),
|
|
description = i18n("prefs.snmp_interface_format_description"),
|
|
type = "button_group",
|
|
redis_key = "ntopng.prefs.snmp_interface_format",
|
|
default = "0",
|
|
options = {{
|
|
value = "0",
|
|
label = "ifAlias"
|
|
}, {
|
|
value = "1",
|
|
label = "ifName"
|
|
}},
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "default_snmp_timeout",
|
|
title = i18n("prefs.default_snmp_timeout_title"),
|
|
description = i18n("prefs.default_snmp_timeout_description"),
|
|
type = "input",
|
|
input_type = "number",
|
|
redis_key = "ntopng.prefs.snmp_timeout_sec",
|
|
default = "3",
|
|
attrs = {
|
|
min = "1",
|
|
max = "10"
|
|
},
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}, {
|
|
key = "toggle_snmp_excluded_from_usage",
|
|
title = i18n("prefs.toggle_snmp_excluded_from_usage_title"),
|
|
description = i18n("prefs.toggle_snmp_excluded_from_usage_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.toggle_snmp_excluded_from_usage",
|
|
default = "0",
|
|
hidden = (not is_enterprise_l)
|
|
}, {
|
|
key = "toggle_snmp_trap",
|
|
title = i18n("prefs.toggle_snmp_trap_title"),
|
|
description = i18n("prefs.toggle_snmp_trap_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.toggle_snmp_trap",
|
|
default = "0",
|
|
hidden = (not is_enterprise_xl)
|
|
}, {
|
|
key = "toggle_snmp_debug",
|
|
title = i18n("prefs.toggle_snmp_debug_title"),
|
|
description = i18n("prefs.toggle_snmp_debug_description"),
|
|
type = "toggle",
|
|
redis_key = "ntopng.prefs.snmp_debug",
|
|
default = "0",
|
|
hidden = (not (is_enterprise_m or have_nedge))
|
|
}}
|
|
}
|
|
|
|
return sections
|
|
end
|
|
|
|
return M
|