Reworks factory reset

This commit is contained in:
Simone Mainardi 2020-10-13 15:16:59 +02:00
parent 6a23f59bcf
commit 6fc182412f
6 changed files with 85 additions and 31 deletions

View file

@ -8,6 +8,7 @@
local os_utils = require "os_utils"
local prefs_reload_utils = require "prefs_reload_utils"
local prefs_factory_reset_utils = require "prefs_factory_reset_utils"
local prefs_dump_utils = {}
@ -20,14 +21,6 @@ local patterns = {"ntopng.prefs.*", "ntopng.user.*"}
-- ###########################################
local function set_admin_prefs()
-- User admin is always an administrator, let's make sure serialized values are correct
ntop.setCache("ntopng.user.admin.group", "administrator")
ntop.setCache("ntopng.user.admin.allowed_nets", "0.0.0.0/0,::/0")
end
-- ###########################################
local debug = false
function prefs_dump_utils.check_dump_prefs_to_disk()
@ -70,6 +63,17 @@ end
-- ###########################################
local function delete_all_keys()
for _, pattern in pairs(patterns) do
local keys = ntop.getKeysCache(pattern)
for k, _ in pairs(keys or {}) do
ntop.delCache(k)
end
end
end
-- ###########################################
function prefs_dump_utils.check_restore_prefs_from_disk()
if not prefs_reload_utils.is_dump_prefs_to_disk_enabled() then
-- nothing to do
@ -94,12 +98,7 @@ function prefs_dump_utils.check_restore_prefs_from_disk()
-- Failing to do this delete could result in inconsistent redis state as:
-- 1. There could be redis keys not yet backed up to file (backup is done at most once every few seconds)
-- 2. Redis keys not backed up to file could rely/depends on other keys that won't be restored.
for _, pattern in pairs(patterns) do
local keys = ntop.getKeysCache(pattern)
for k, _ in pairs(keys or {}) do
ntop.delCache(k)
end
end
delete_all_keys()
local json = require("dkjson")
local restore = json.decode(dump, 1, nil)
@ -115,9 +114,24 @@ function prefs_dump_utils.check_restore_prefs_from_disk()
ntop.restoreCache(k,v)
end
end
end
set_admin_prefs()
-- Necessary to reload all the restored and deleted preferences
ntop.reloadPreferences(true --[[ also reset Redis defaults (e.g., admin user name, group, password) --]])
end
end
-- ###########################################
-- @brief Perform a factory reset, if requested.
-- NOTE: must be performed right after the startup of ntopng
function prefs_dump_utils.check_prefs_factory_reset()
if prefs_factory_reset_utils.is_prefs_factory_reset_requested() then
-- Delete all the configuration keys
delete_all_keys()
-- Necessary as all the preferences have been deleted: defaults will be reloaded
ntop.reloadPreferences(true --[[also reset Redis defaults (e..g, admin user name, group, password) --]])
end
end
return prefs_dump_utils