diff --git a/httpdocs/templates/pages/components/pool-select.template b/httpdocs/templates/pages/components/pool-select.template new file mode 100644 index 0000000000..0a41e755af --- /dev/null +++ b/httpdocs/templates/pages/components/pool-select.template @@ -0,0 +1,10 @@ +
+
+ +
+ +
\ No newline at end of file diff --git a/scripts/lua/if_stats.lua b/scripts/lua/if_stats.lua index c6a098988b..f2e95eaca8 100644 --- a/scripts/lua/if_stats.lua +++ b/scripts/lua/if_stats.lua @@ -20,6 +20,9 @@ local format_utils = require "format_utils" local top_talkers_utils = require "top_talkers_utils" local internals_utils = require "internals_utils" local page_utils = require("page_utils") +local ui_utils = require("ui_utils") +local interface_pools = require ("interface_pools") + require "lua_utils" require "prefs_utils" @@ -31,6 +34,7 @@ local recording_utils = require "recording_utils" local companion_interface_utils = require "companion_interface_utils" local storage_utils = require "storage_utils" + local have_nedge = ntop.isnEdge() if ntop.isPro() then @@ -1411,6 +1415,7 @@ elseif(page == "config") then return end + local interface_pools_instance = interface_pools:create() local messages = {} -- Flow dump check @@ -1434,6 +1439,13 @@ elseif(page == "config") then end end + if _SERVER["REQUEST_METHOD"] == "POST" then + -- bind interface to pool + if (_POST["pool"]) then + interface_pools_instance:bind_member(ifid, tonumber(_POST["pool"])) + end + end + if not table.empty(messages) then printMessageBanners(messages) print("
") @@ -1460,6 +1472,16 @@ elseif(page == "config") then ]] + -- Interface Pool + print([[ + + ]].. i18n("pools.pool") ..[[ + + ]].. ui_utils.render_pools_dropdown(interface_pools_instance, ifid, "interface") ..[[ + + + ]]) + -- Interface speed if not have_nedge then print[[ diff --git a/scripts/lua/modules/ui_utils.lua b/scripts/lua/modules/ui_utils.lua index aad0ecfcea..8e6d9c78a8 100644 --- a/scripts/lua/modules/ui_utils.lua +++ b/scripts/lua/modules/ui_utils.lua @@ -17,7 +17,7 @@ end function ui_utils.render_notes(notes_items) if notes_items == nil then - traceError(TRACE_ERROR, TRACE_DEBUG, "The notes table is nil!") + traceError(TRACE_DEBUG, TRACE_CONSOLE, "The notes table is nil!") return "" end @@ -26,6 +26,30 @@ function ui_utils.render_notes(notes_items) }) end +function ui_utils.render_pools_dropdown(pools_instance, member, key) + + if (pools_instance == nil) then + traceError(TRACE_DEBUG, TRACE_CONSOLE, "The pools instance is nil!") + return "" + end + + if (member == nil) then + traceError(TRACE_DEBUG, TRACE_CONSOLE, "The member is nil!") + return "" + end + + local selected_pool = pools_instance:get_pool_by_member(member) + local selected_pool_id = selected_pool and selected_pool.pool_id or pools_instance.DEFAULT_POOL_ID + + local all_pools = pools_instance:get_all_pools() + + return template_utils.gen("pages/components/pool-select.template", { + pools = all_pools, + selected_pool_id = selected_pool_id, + key = key, + }) +end + function ui_utils.create_navbar_title(title, subpage, title_link) if isEmptyString(subpage) then return title end diff --git a/scripts/lua/network_details.lua b/scripts/lua/network_details.lua index 50d908a9ab..6be0f7aceb 100644 --- a/scripts/lua/network_details.lua +++ b/scripts/lua/network_details.lua @@ -15,6 +15,8 @@ local graph_utils = require "graph_utils" local alert_utils = require "alert_utils" local page_utils = require("page_utils") local ts_utils = require("ts_utils") +local ui_utils = require("ui_utils") +local local_network_pools = require ("local_network_pools") local network = _GET["network"] local network_name = _GET["network_cidr"] @@ -110,6 +112,8 @@ elseif (page == "config") then return end + local local_network_pools_instance = local_network_pools:create() + print[[
@@ -118,6 +122,10 @@ elseif (page == "config") then if _SERVER["REQUEST_METHOD"] == "POST" then setLocalNetworkAlias(network_name, _POST["custom_name"]) custom_name = getLocalNetworkAlias(network_name) + -- bind local network to pool + if (_POST["pool"]) then + local_network_pools_instance:bind_member(network_name, tonumber(_POST["pool"])) + end end print [[ @@ -127,6 +135,16 @@ elseif (page == "config") then ]] + -- Local Network Pool + print([[ + + ]].. i18n("pools.pool") ..[[ + + ]].. ui_utils.render_pools_dropdown(local_network_pools_instance, network_name,"local_network") ..[[ + + + ]]) + print[[