Add Fleet Profile MVP for replicating settings across kiosks; bump to v2.13.0
New menus/fleet_profile.sh (Advanced), for the "set up one kiosk, then stand up a dozen more like it" use case. Not a port of the legacy Export/Import Settings - a narrower, deliberately-scoped feature: - Export: writes config.json's portable fields (sites, display/touch/ navigation, lockout, password protection) plus a list of addons present at export time to a JSON profile file. - Apply: merges those fields onto a target kiosk's config.json (same merge-not-replace pattern as save_config, so the target's own fields survive untouched) and prints a checklist of which listed addons are/ aren't installed on the target. Deliberately excludes machine-bound credentials rather than silently mishandling them: Authelia's encrypted password is keyed off /etc/machine-id and decrypts to garbage elsewhere; a WireGuard private key is a device identity, reusing one across machines is a peer conflict; most Asterisk PBXes reject duplicate registrations to the same extension. Apply prints all three as an explicit "needs a human" checklist. Non-interactive addon installation (for a fully scriptable fleet rollout) is a deliberate follow-up, not part of this MVP. Full command-level stubbed test suite covering export (site/setting content, Authelia stripped, addon detection) and apply (merge correctness, target's own Authelia preserved, bad path/invalid JSON handled cleanly). Full 20-suite regression + real end-to-end menu navigation via install.sh all pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VfsFSoRqfbRG7XAg5RoE7e
This commit is contained in:
+9
-3
@@ -30,7 +30,10 @@
|
||||
# manual update, fix blank screen), Factory Reset
|
||||
# (menus/advanced_factory_reset.sh), Virtual Consoles
|
||||
# (menus/advanced_virtual_consoles.sh), Emergency Hotspot
|
||||
# (menus/advanced_emergency_hotspot.sh).
|
||||
# (menus/advanced_emergency_hotspot.sh), Fleet Profile
|
||||
# (menus/fleet_profile.sh - export/apply portable settings across
|
||||
# several kiosks; deliberately excludes machine-bound credentials
|
||||
# like Authelia/WireGuard/Asterisk Intercom - see the file header).
|
||||
#
|
||||
# Usage (once the kiosk has already been installed):
|
||||
# git clone <repo>
|
||||
@@ -84,6 +87,9 @@ source "$SCRIPT_DIR/menus/advanced_emergency_hotspot.sh"
|
||||
# Sourced last: composes the *_do_uninstall/*_do_remove_all/*_do_disable
|
||||
# helpers defined in every file above it.
|
||||
source "$SCRIPT_DIR/menus/complete_uninstall.sh"
|
||||
# shellcheck source=menus/fleet_profile.sh
|
||||
# Also composes detection helpers (*_is_installed) from every addon above.
|
||||
source "$SCRIPT_DIR/menus/fleet_profile.sh"
|
||||
|
||||
################################################################################
|
||||
# Preflight
|
||||
@@ -158,8 +164,8 @@ addons_menu() {
|
||||
}
|
||||
|
||||
advanced_menu_builder() {
|
||||
MENU_LABELS=("Diagnostics" "Electron Maintenance" "Factory Reset" "Virtual Consoles" "Emergency Hotspot")
|
||||
MENU_HANDLERS=(diagnostics_menu advanced_electron_menu advanced_factory_reset_menu advanced_virtual_consoles_menu advanced_emergency_hotspot_menu)
|
||||
MENU_LABELS=("Diagnostics" "Electron Maintenance" "Factory Reset" "Virtual Consoles" "Emergency Hotspot" "Fleet Profile")
|
||||
MENU_HANDLERS=(diagnostics_menu advanced_electron_menu advanced_factory_reset_menu advanced_virtual_consoles_menu advanced_emergency_hotspot_menu fleet_profile_menu)
|
||||
}
|
||||
|
||||
advanced_menu() {
|
||||
|
||||
Reference in New Issue
Block a user