diff --git a/init.sh b/init.sh index 7da64a5..756721e 100755 --- a/init.sh +++ b/init.sh @@ -134,7 +134,7 @@ command_symlink="/usr/local/bin/libreportal" # `update apply` runs as the manager and CANNOT rewrite root-owned files, so a bump # tells the updater the new release needs a root re-install (which re-bakes them). # Recorded at install in $lp_lib_dir/.footprint_version. See docs/contributing/development.md. -footprint_version=3 +footprint_version=4 footprint_marker="$lp_lib_dir/.footprint_version" # Directories — three independently-relocatable roots (see scripts/source/paths.sh diff --git a/scripts/source/files/app_files.sh b/scripts/source/files/app_files.sh index c2e3f5b..8173f4e 100755 --- a/scripts/source/files/app_files.sh +++ b/scripts/source/files/app_files.sh @@ -23,6 +23,7 @@ files_libreportal_app=( "${source_scripts[@]}" "${ssh_scripts[@]}" "${start_scripts[@]}" + "${task_scripts[@]}" "${update_scripts[@]}" "${webui_scripts[@]}" ) diff --git a/scripts/source/files/arrays/files_cli.sh b/scripts/source/files/arrays/files_cli.sh index ada4a0b..dd3edb3 100755 --- a/scripts/source/files/arrays/files_cli.sh +++ b/scripts/source/files/arrays/files_cli.sh @@ -42,6 +42,8 @@ cli_scripts=( "cli/commands/system/cli_system_header.sh" "cli/commands/update/cli_update_commands.sh" "cli/commands/update/cli_update_header.sh" + "cli/commands/updater/cli_updater_commands.sh" + "cli/commands/updater/cli_updater_header.sh" "cli/commands/validation/cli_validation_commands.sh" "cli/commands/validation/cli_validation_header.sh" "cli/commands/verify/cli_verify_commands.sh" diff --git a/scripts/source/files/arrays/files_crontab.sh b/scripts/source/files/arrays/files_crontab.sh index 38e1e51..351145d 100755 --- a/scripts/source/files/arrays/files_crontab.sh +++ b/scripts/source/files/arrays/files_crontab.sh @@ -11,9 +11,5 @@ crontab_scripts=( "crontab/crontab_refresh.sh" "crontab/crontab_setup.sh" "crontab/system/crontab_setup_system_info_updater.sh" - "crontab/task/crontab_check_processor.sh" - "crontab/task/crontab_setup_check_processor.sh" - "crontab/task/crontab_setup_task_processor.sh" - "crontab/task/crontab_task_processor.sh" ) diff --git a/scripts/source/files/arrays/files_task.sh b/scripts/source/files/arrays/files_task.sh new file mode 100644 index 0000000..7c820dc --- /dev/null +++ b/scripts/source/files/arrays/files_task.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# This file is auto-generated by generate_arrays.sh +# Do not edit manually - run './scripts/source/files/generate_arrays.sh run' to regenerate + +task_scripts=( + "task/crontab_check_processor.sh" + "task/crontab_setup_check_processor.sh" + "task/crontab_setup_task_processor.sh" + "task/crontab_task_processor.sh" + +) diff --git a/scripts/source/files/arrays/files_webui.sh b/scripts/source/files/arrays/files_webui.sh index 1324ddf..76d1749 100755 --- a/scripts/source/files/arrays/files_webui.sh +++ b/scripts/source/files/arrays/files_webui.sh @@ -33,6 +33,7 @@ webui_scripts=( "webui/data/generators/system/webui_system_memory.sh" "webui/data/generators/system/webui_system_metrics.sh" "webui/data/generators/system/webui_system_update.sh" + "webui/data/generators/updater/webui_updater_scan.sh" "webui/data/lock/webui_check_update_lock.sh" "webui/data/lock/webui_create_update_lock.sh" "webui/data/lock/webui_remove_setup_lock.sh" diff --git a/scripts/source/files/arrays/function_manifest.sh b/scripts/source/files/arrays/function_manifest.sh index cbfacf0..85fa4a2 100644 --- a/scripts/source/files/arrays/function_manifest.sh +++ b/scripts/source/files/arrays/function_manifest.sh @@ -11,7 +11,7 @@ # install_scripts_dir for "scripts" entries, install_containers_dir for # "containers" entries — see LP_FN_ROOT below. declare -gA LP_FN_MAP=( - [acquireSingletonLock]="crontab/task/crontab_task_processor.sh" + [acquireSingletonLock]="task/crontab_task_processor.sh" [adguard_install_message_data]="adguard/scripts/adguard_install_hooks.sh" [adguard_install_post_start]="adguard/scripts/adguard_install_hooks.sh" [adoptDockerSubnet]="checks/requirements/check_docker_network.sh" @@ -237,13 +237,13 @@ declare -gA LP_FN_MAP=( [checkSuccess]="function/checks/check_success.sh" [checkSuggestInstallsRequirement]="checks/requirements/check_suggest_installs.sh" [checkSwapfileRequirement]="checks/requirements/check_swapfile.sh" - [check_task_processor_health]="crontab/task/crontab_check_processor.sh" + [check_task_processor_health]="task/crontab_check_processor.sh" [checkTraefikRequirement]="checks/requirements/check_traefik.sh" [checkUFWDRequirement]="checks/requirements/check_ufwd.sh" [checkUFWRequirement]="checks/requirements/check_ufw.sh" [checkUpdates]="update/check_update.sh" [checkWebUISystemdRequirement]="checks/requirements/check_webui_systemd.sh" - [cleanupZeroByteFiles]="crontab/task/crontab_task_processor.sh" + [cleanupZeroByteFiles]="task/crontab_task_processor.sh" [cliAppRestore]="cli/commands/app/cli_app_restore.sh" [cliAppToolList]="cli/commands/app/cli_app_tool_list.sh" [cliDebugLoadTrace]="cli/commands/debug/cli_debug_commands.sh" @@ -265,6 +265,7 @@ declare -gA LP_FN_MAP=( [cliHandleSshCommands]="cli/commands/ssh/cli_ssh_commands.sh" [cliHandleSystemCommands]="cli/commands/system/cli_system_commands.sh" [cliHandleUpdateCommands]="cli/commands/update/cli_update_commands.sh" + [cliHandleUpdaterCommands]="cli/commands/updater/cli_updater_commands.sh" [cliHandleValidationCommands]="cli/commands/validation/cli_validation_commands.sh" [cliHandleVerifyCommands]="cli/commands/verify/cli_verify_commands.sh" [cliHandleWebuiCommands]="cli/commands/webui/cli_webui_commands.sh" @@ -286,6 +287,7 @@ declare -gA LP_FN_MAP=( [cliShowSshHelp]="cli/commands/ssh/cli_ssh_header.sh" [cliShowSystemHelp]="cli/commands/system/cli_system_header.sh" [cliShowUpdateHelp]="cli/commands/update/cli_update_header.sh" + [cliShowUpdaterHelp]="cli/commands/updater/cli_updater_header.sh" [cliShowValidationHelp]="cli/commands/validation/cli_validation_header.sh" [cliShowVerifyHelp]="cli/commands/verify/cli_verify_header.sh" [cliShowWebuiHelp]="cli/commands/webui/cli_webui_header.sh" @@ -311,9 +313,9 @@ declare -gA LP_FN_MAP=( [crontabRefresh]="crontab/crontab_refresh.sh" [crontabSetup]="crontab/crontab_setup.sh" [crontabSetupBackupScheduler]="crontab/app/crontab_backup_scheduler.sh" - [crontabSetupCheckProcessor]="crontab/task/crontab_setup_check_processor.sh" + [crontabSetupCheckProcessor]="task/crontab_setup_check_processor.sh" [crontabSetupSystemInfoUpdater]="crontab/system/crontab_setup_system_info_updater.sh" - [crontabSetupTaskProcessor]="crontab/task/crontab_setup_task_processor.sh" + [crontabSetupTaskProcessor]="task/crontab_setup_task_processor.sh" [crontabToolsMenu]="menu/tools/manage_crontab.sh" [crowdsecToggleLibrePortalLogMounts]="crowdsec/scripts/crowdsec_install_host.sh" [dashyToolsMenu]="menu/tools/manage_dashy.sh" @@ -334,8 +336,8 @@ declare -gA LP_FN_MAP=( [databaseRestoreInsert]="database/insert/db_insert_restore.sh" [databaseUninstallApp]="database/app/db_uninstall_app.sh" [detectOS]="function/checks/detect_os.sh" - [dispatchPending]="crontab/task/crontab_task_processor.sh" - [dispatchSpecific]="crontab/task/crontab_task_processor.sh" + [dispatchPending]="task/crontab_task_processor.sh" + [dispatchSpecific]="task/crontab_task_processor.sh" [dockerAppRunTool]="docker/app/functions/function_app_tool.sh" [dockerCheckAppHealthDetails]="docker/checks/app_health_details.sh" [dockerCheckAppHealthStatus]="docker/checks/app_health_status.sh" @@ -423,7 +425,7 @@ declare -gA LP_FN_MAP=( [fixPermissionsBeforeStart]="function/permission/before_start.sh" [_focalboardBcrypt]="focalboard/scripts/focalboard_auth.sh" [_focalboardSqlite]="focalboard/scripts/focalboard_auth.sh" - [generateHealthReport]="crontab/task/crontab_check_processor.sh" + [generateHealthReport]="task/crontab_check_processor.sh" [generateInstallName]="checks/generate_install_name.sh" [generateRandomPassword]="config/password/password_generate.sh" [generateRandomUsername]="config/password/password_user_generator.sh" @@ -450,10 +452,10 @@ declare -gA LP_FN_MAP=( [headscaleCommands]="headscale/scripts/headscale_commands.sh" [headscaleEditConfig]="headscale/scripts/headscale_edit_config.sh" [headscale_install_post_compose]="headscale/scripts/headscale_install_hooks.sh" - [healthLogError]="crontab/task/crontab_check_processor.sh" - [healthLogInfo]="crontab/task/crontab_check_processor.sh" - [healthLogSuccess]="crontab/task/crontab_check_processor.sh" - [healthLogWarning]="crontab/task/crontab_check_processor.sh" + [healthLogError]="task/crontab_check_processor.sh" + [healthLogInfo]="task/crontab_check_processor.sh" + [healthLogSuccess]="task/crontab_check_processor.sh" + [healthLogWarning]="task/crontab_check_processor.sh" [hostAppInstall]="install/host_app.sh" [hostSshAuthKeysFile]="ssh/host_access.sh" [hostSshEnsureDir]="ssh/host_access.sh" @@ -548,9 +550,9 @@ declare -gA LP_FN_MAP=( [localDnsServerIp]="network/dns/setup_local_dns.sh" [locationAdd]="backup/locations/location_add.sh" [locationRemove]="backup/locations/location_remove.sh" - [logDebug]="crontab/task/crontab_task_processor.sh" - [logError]="crontab/task/crontab_task_processor.sh" - [logInfo]="crontab/task/crontab_task_processor.sh" + [logDebug]="task/crontab_task_processor.sh" + [logError]="task/crontab_task_processor.sh" + [logInfo]="task/crontab_task_processor.sh" [_lpDownload]="source/fetch.sh" [lpFetchRelease]="source/fetch.sh" [lpFetchSource]="source/fetch.sh" @@ -570,7 +572,7 @@ declare -gA LP_FN_MAP=( [lpVerifyInstall]="source/verify.sh" [lpVerifyPubKeyPath]="source/verify.sh" [lpVersionGt]="source/fetch.sh" - [mainLoop]="crontab/task/crontab_task_processor.sh" + [mainLoop]="task/crontab_task_processor.sh" [mainMenu]="menu/menu_main.sh" [manifestCollect]="backup/manifest/manifest_collect.sh" [manifestReadField]="backup/manifest/manifest_read.sh" @@ -578,7 +580,7 @@ declare -gA LP_FN_MAP=( [manifestRemove]="backup/manifest/manifest_write.sh" [manifestWrite]="backup/manifest/manifest_write.sh" [mattermostToolsMenu]="menu/tools/manage_mattermost.sh" - [maybeRegenPoll]="crontab/task/crontab_task_processor.sh" + [maybeRegenPoll]="task/crontab_task_processor.sh" [menuContinue]="menu/message/continue.sh" [menuLoginRequired]="menu/message/login.sh" [menuShowFinalMessages]="menu/message/final.sh" @@ -614,7 +616,7 @@ declare -gA LP_FN_MAP=( [_nextcloudOcc]="nextcloud/scripts/nextcloud_auth.sh" [_nextcloudOccWithPass]="nextcloud/scripts/nextcloud_auth.sh" [onlyoffice_install_message_data]="onlyoffice/scripts/onlyoffice_install_hooks.sh" - [openFifoReader]="crontab/task/crontab_task_processor.sh" + [openFifoReader]="task/crontab_task_processor.sh" [owncloud_install_post_compose]="owncloud/scripts/owncloud_install_hooks.sh" [passwordValidation]="function/validation/password.sh" [peerAdd]="peer/peer_add.sh" @@ -649,7 +651,7 @@ declare -gA LP_FN_MAP=( [_peerSshTarget]="peer/peer_remote.sh" [peerValidateKind]="peer/peer_helpers.sh" [peerValidateName]="peer/peer_helpers.sh" - [performMaintenance]="crontab/task/crontab_check_processor.sh" + [performMaintenance]="task/crontab_check_processor.sh" [portAllocate]="network/ports/allocation/port_allocate.sh" [portFindNextAvailablePort]="network/ports/core/port_find_next_available.sh" [portGetPublicPorts]="network/ports/core/port_get_public_ports.sh" @@ -668,22 +670,22 @@ declare -gA LP_FN_MAP=( [processBcryptPassword]="config/password/bcrypt/password_process_bcrypt.sh" [prometheus_install_post_compose]="prometheus/scripts/prometheus_install_hooks.sh" [prometheus_install_post_start]="prometheus/scripts/prometheus_install_hooks.sh" - [readTaskField]="crontab/task/crontab_task_processor.sh" + [readTaskField]="task/crontab_task_processor.sh" [reclaimDockerSpace]="cli/commands/system/cli_system_commands.sh" [reconcileConfigFile]="config/core/variables/config_scan_variables.sh" [reconcileContainersTopOwnership]="function/permission/libreportal_folders.sh" [reconcileDockerOwnership]="function/permission/libreportal_folders.sh" [_reconcileSplitValueComment]="config/core/variables/config_scan_variables.sh" [reconcileWebuiDirOwnership]="function/permission/libreportal_folders.sh" - [recoverOrphans]="crontab/task/crontab_task_processor.sh" + [recoverOrphans]="task/crontab_task_processor.sh" [removeDockerImages]="cli/commands/system/cli_system_commands.sh" [removeEmptyLineAtFileEnd]="function/file/empty_line/remove_line.sh" - [repairDirectoryStructure]="crontab/task/crontab_check_processor.sh" - [repairFileSystem]="crontab/task/crontab_check_processor.sh" - [repairPermissions]="crontab/task/crontab_check_processor.sh" - [repairSystemIssues]="crontab/task/crontab_check_processor.sh" - [repairSystemService]="crontab/task/crontab_check_processor.sh" - [repairTaskSystem]="crontab/task/crontab_check_processor.sh" + [repairDirectoryStructure]="task/crontab_check_processor.sh" + [repairFileSystem]="task/crontab_check_processor.sh" + [repairPermissions]="task/crontab_check_processor.sh" + [repairSystemIssues]="task/crontab_check_processor.sh" + [repairSystemService]="task/crontab_check_processor.sh" + [repairTaskSystem]="task/crontab_check_processor.sh" [replaceBcryptPasswords]="config/password/bcrypt/password_replace_bcrypt.sh" [replaceHexKeys]="config/password/password_replace hex.sh" [replaceLaravelAppKeys]="config/password/password_replace_appkey.sh" @@ -753,8 +755,8 @@ declare -gA LP_FN_MAP=( [runSshAccess]="docker/command/run_privileged.sh" [runSvc]="docker/command/run_privileged.sh" [runSystem]="docker/command/run_privileged.sh" - [runTask]="crontab/task/crontab_task_processor.sh" - [run_task_processor]="crontab/task/crontab_task_processor.sh" + [runTask]="task/crontab_task_processor.sh" + [run_task_processor]="task/crontab_task_processor.sh" [scanConfigsForRandomPassword]="config/password/password_update_all.sh" [scanFileForRandomPasswordKeysUsers]="config/password/password_scan_file.sh" [searxng_install_post_start]="searxng/scripts/searxng_install_hooks.sh" @@ -775,7 +777,7 @@ declare -gA LP_FN_MAP=( [setupHeadscaleUser]="headscale/scripts/headscale_user.sh" [setupHeadscaleVariables]="network/variables/headscale_variables.sh" [setupLocalDnsRewrites]="network/dns/setup_local_dns.sh" - [setupTaskDir]="crontab/task/crontab_task_processor.sh" + [setupTaskDir]="task/crontab_task_processor.sh" [setupWizardMarkComplete]="setup/setup_lock.sh" [setupWizardReset]="setup/setup_lock.sh" [setupWizardTerminal]="checks/first_install.sh" @@ -827,20 +829,25 @@ declare -gA LP_FN_MAP=( [updateDockerSudoPassword]="docker/update_docker_sudo_pass.sh" [updateFileOwnership]="function/permission/ownership/file.sh" [updateHostIPToWhitelist]="config/utils/update_whitelist.sh" - [updateTaskFields]="crontab/task/crontab_task_processor.sh" + [updaterApplyAll]="cli/commands/updater/cli_updater_commands.sh" + [updaterApplyApp]="cli/commands/updater/cli_updater_commands.sh" + [updaterComposePull]="cli/commands/updater/cli_updater_commands.sh" + [updaterRecordHistory]="cli/commands/updater/cli_updater_commands.sh" + [updaterRollbackApp]="cli/commands/updater/cli_updater_commands.sh" + [updateTaskFields]="task/crontab_task_processor.sh" [userExists]="function/checks/user_exists.sh" - [validateContainerHealth]="crontab/task/crontab_check_processor.sh" - [validateDirectoryStructure]="crontab/task/crontab_check_processor.sh" - [validateDiskSpace]="crontab/task/crontab_check_processor.sh" - [validateDockerService]="crontab/task/crontab_check_processor.sh" - [validateFileSystem]="crontab/task/crontab_check_processor.sh" - [validateLibrePortalInstallation]="crontab/task/crontab_check_processor.sh" - [validateLogHealth]="crontab/task/crontab_check_processor.sh" - [validatePermissions]="crontab/task/crontab_check_processor.sh" - [validateSystemHealth]="crontab/task/crontab_check_processor.sh" - [validateSystemService]="crontab/task/crontab_check_processor.sh" - [validateTaskSystem]="crontab/task/crontab_check_processor.sh" - [validateWebUIReadiness]="crontab/task/crontab_check_processor.sh" + [validateContainerHealth]="task/crontab_check_processor.sh" + [validateDirectoryStructure]="task/crontab_check_processor.sh" + [validateDiskSpace]="task/crontab_check_processor.sh" + [validateDockerService]="task/crontab_check_processor.sh" + [validateFileSystem]="task/crontab_check_processor.sh" + [validateLibrePortalInstallation]="task/crontab_check_processor.sh" + [validateLogHealth]="task/crontab_check_processor.sh" + [validatePermissions]="task/crontab_check_processor.sh" + [validateSystemHealth]="task/crontab_check_processor.sh" + [validateSystemService]="task/crontab_check_processor.sh" + [validateTaskSystem]="task/crontab_check_processor.sh" + [validateWebUIReadiness]="task/crontab_check_processor.sh" [viewAppCategoryConfigs]="config/application/application_menu_category.sh" [viewAppConfigs]="config/application/application_menu_apps.sh" [viewComposeFiles]="config/docker/docker_compose_menu.sh" @@ -895,13 +902,14 @@ declare -gA LP_FN_MAP=( [webuiSystemVerify]="webui/data/generators/system/webui_system_update.sh" [webuiUpdateAppLog]="webui/data/utils/webui_app_log.sh" [webuiUpdateAppStatus]="webui/data/generators/apps/webui_app_status.sh" + [webuiUpdaterScan]="webui/data/generators/updater/webui_updater_scan.sh" [webuiUpdateSystemConfig]="webui/data/generators/config/webui_update_config.sh" [webuiValidateConfigValue]="webui/data/generators/config/webui_update_config.sh" [whitelistPortUpdater]="docker/whitelist_port_updater.sh" [wireguard_install_post_compose]="wireguard/scripts/wireguard_install_hooks.sh" [wireguard_install_post_start]="wireguard/scripts/wireguard_install_hooks.sh" [wireguard_install_pre]="wireguard/scripts/wireguard_install_hooks.sh" - [writeAtomic]="crontab/task/crontab_task_processor.sh" + [writeAtomic]="task/crontab_task_processor.sh" [_writeTaskFile]="cli/task/cli_task_run.sh" [zipFile]="function/file/zip_file.sh" ) @@ -1163,6 +1171,7 @@ declare -gA LP_FN_ROOT=( [cliHandleSshCommands]="scripts" [cliHandleSystemCommands]="scripts" [cliHandleUpdateCommands]="scripts" + [cliHandleUpdaterCommands]="scripts" [cliHandleValidationCommands]="scripts" [cliHandleVerifyCommands]="scripts" [cliHandleWebuiCommands]="scripts" @@ -1184,6 +1193,7 @@ declare -gA LP_FN_ROOT=( [cliShowSshHelp]="scripts" [cliShowSystemHelp]="scripts" [cliShowUpdateHelp]="scripts" + [cliShowUpdaterHelp]="scripts" [cliShowValidationHelp]="scripts" [cliShowVerifyHelp]="scripts" [cliShowWebuiHelp]="scripts" @@ -1725,6 +1735,11 @@ declare -gA LP_FN_ROOT=( [updateDockerSudoPassword]="scripts" [updateFileOwnership]="scripts" [updateHostIPToWhitelist]="scripts" + [updaterApplyAll]="scripts" + [updaterApplyApp]="scripts" + [updaterComposePull]="scripts" + [updaterRecordHistory]="scripts" + [updaterRollbackApp]="scripts" [updateTaskFields]="scripts" [userExists]="scripts" [validateContainerHealth]="scripts" @@ -1793,6 +1808,7 @@ declare -gA LP_FN_ROOT=( [webuiSystemVerify]="scripts" [webuiUpdateAppLog]="scripts" [webuiUpdateAppStatus]="scripts" + [webuiUpdaterScan]="scripts" [webuiUpdateSystemConfig]="scripts" [webuiValidateConfigValue]="scripts" [whitelistPortUpdater]="scripts" @@ -1812,12 +1828,12 @@ declare -gA LP_FN_ROOT=( LP_EAGER_FILES=( "scripts:backup/db/backup_db.sh" "scripts:backup/files/backup_files.sh" - "scripts:crontab/task/crontab_check_processor.sh" - "scripts:crontab/task/crontab_task_processor.sh" "scripts:docker/install/rootless/rootless_apparmor.sh" "scripts:docker/type_switcher/swap_docker_type.sh" "scripts:migrate/migrate_url_rewrite.sh" "scripts:setup/setup_lock.sh" + "scripts:task/crontab_check_processor.sh" + "scripts:task/crontab_task_processor.sh" "scripts:webui/data/generators/apps/webui_config.sh" "scripts:webui/data/generators/apps/webui_services.sh" "scripts:webui/data/generators/categories/webui_create_app_field_mappings.sh" @@ -1827,7 +1843,7 @@ LP_EAGER_FILES=( # real file (which redefines this stub with the real body), then # re-invokes. Sourced inline instead of eval-in-loop because bash # parses one large file faster than it evals snippets at startup. -acquireSingletonLock() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; acquireSingletonLock "$@"; } +acquireSingletonLock() { source "${install_scripts_dir}task/crontab_task_processor.sh"; acquireSingletonLock "$@"; } adguard_install_message_data() { source "${install_containers_dir}adguard/scripts/adguard_install_hooks.sh"; adguard_install_message_data "$@"; } adguard_install_post_start() { source "${install_containers_dir}adguard/scripts/adguard_install_hooks.sh"; adguard_install_post_start "$@"; } adoptDockerSubnet() { source "${install_scripts_dir}checks/requirements/check_docker_network.sh"; adoptDockerSubnet "$@"; } @@ -2053,13 +2069,13 @@ checkSSLCertsRequirement() { source "${install_scripts_dir}checks/requirements/c checkSuccess() { source "${install_scripts_dir}function/checks/check_success.sh"; checkSuccess "$@"; } checkSuggestInstallsRequirement() { source "${install_scripts_dir}checks/requirements/check_suggest_installs.sh"; checkSuggestInstallsRequirement "$@"; } checkSwapfileRequirement() { source "${install_scripts_dir}checks/requirements/check_swapfile.sh"; checkSwapfileRequirement "$@"; } -check_task_processor_health() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; check_task_processor_health "$@"; } +check_task_processor_health() { source "${install_scripts_dir}task/crontab_check_processor.sh"; check_task_processor_health "$@"; } checkTraefikRequirement() { source "${install_scripts_dir}checks/requirements/check_traefik.sh"; checkTraefikRequirement "$@"; } checkUFWDRequirement() { source "${install_scripts_dir}checks/requirements/check_ufwd.sh"; checkUFWDRequirement "$@"; } checkUFWRequirement() { source "${install_scripts_dir}checks/requirements/check_ufw.sh"; checkUFWRequirement "$@"; } checkUpdates() { source "${install_scripts_dir}update/check_update.sh"; checkUpdates "$@"; } checkWebUISystemdRequirement() { source "${install_scripts_dir}checks/requirements/check_webui_systemd.sh"; checkWebUISystemdRequirement "$@"; } -cleanupZeroByteFiles() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; cleanupZeroByteFiles "$@"; } +cleanupZeroByteFiles() { source "${install_scripts_dir}task/crontab_task_processor.sh"; cleanupZeroByteFiles "$@"; } cliAppRestore() { source "${install_scripts_dir}cli/commands/app/cli_app_restore.sh"; cliAppRestore "$@"; } cliAppToolList() { source "${install_scripts_dir}cli/commands/app/cli_app_tool_list.sh"; cliAppToolList "$@"; } cliDebugLoadTrace() { source "${install_scripts_dir}cli/commands/debug/cli_debug_commands.sh"; cliDebugLoadTrace "$@"; } @@ -2081,6 +2097,7 @@ cliHandleSetupCommands() { source "${install_scripts_dir}cli/commands/setup/cli_ cliHandleSshCommands() { source "${install_scripts_dir}cli/commands/ssh/cli_ssh_commands.sh"; cliHandleSshCommands "$@"; } cliHandleSystemCommands() { source "${install_scripts_dir}cli/commands/system/cli_system_commands.sh"; cliHandleSystemCommands "$@"; } cliHandleUpdateCommands() { source "${install_scripts_dir}cli/commands/update/cli_update_commands.sh"; cliHandleUpdateCommands "$@"; } +cliHandleUpdaterCommands() { source "${install_scripts_dir}cli/commands/updater/cli_updater_commands.sh"; cliHandleUpdaterCommands "$@"; } cliHandleValidationCommands() { source "${install_scripts_dir}cli/commands/validation/cli_validation_commands.sh"; cliHandleValidationCommands "$@"; } cliHandleVerifyCommands() { source "${install_scripts_dir}cli/commands/verify/cli_verify_commands.sh"; cliHandleVerifyCommands "$@"; } cliHandleWebuiCommands() { source "${install_scripts_dir}cli/commands/webui/cli_webui_commands.sh"; cliHandleWebuiCommands "$@"; } @@ -2102,6 +2119,7 @@ cliShowSetupHelp() { source "${install_scripts_dir}cli/commands/setup/cli_setup_ cliShowSshHelp() { source "${install_scripts_dir}cli/commands/ssh/cli_ssh_header.sh"; cliShowSshHelp "$@"; } cliShowSystemHelp() { source "${install_scripts_dir}cli/commands/system/cli_system_header.sh"; cliShowSystemHelp "$@"; } cliShowUpdateHelp() { source "${install_scripts_dir}cli/commands/update/cli_update_header.sh"; cliShowUpdateHelp "$@"; } +cliShowUpdaterHelp() { source "${install_scripts_dir}cli/commands/updater/cli_updater_header.sh"; cliShowUpdaterHelp "$@"; } cliShowValidationHelp() { source "${install_scripts_dir}cli/commands/validation/cli_validation_header.sh"; cliShowValidationHelp "$@"; } cliShowVerifyHelp() { source "${install_scripts_dir}cli/commands/verify/cli_verify_header.sh"; cliShowVerifyHelp "$@"; } cliShowWebuiHelp() { source "${install_scripts_dir}cli/commands/webui/cli_webui_header.sh"; cliShowWebuiHelp "$@"; } @@ -2127,9 +2145,9 @@ crontabClear() { source "${install_scripts_dir}crontab/crontab_clear.sh"; cronta crontabRefresh() { source "${install_scripts_dir}crontab/crontab_refresh.sh"; crontabRefresh "$@"; } crontabSetup() { source "${install_scripts_dir}crontab/crontab_setup.sh"; crontabSetup "$@"; } crontabSetupBackupScheduler() { source "${install_scripts_dir}crontab/app/crontab_backup_scheduler.sh"; crontabSetupBackupScheduler "$@"; } -crontabSetupCheckProcessor() { source "${install_scripts_dir}crontab/task/crontab_setup_check_processor.sh"; crontabSetupCheckProcessor "$@"; } +crontabSetupCheckProcessor() { source "${install_scripts_dir}task/crontab_setup_check_processor.sh"; crontabSetupCheckProcessor "$@"; } crontabSetupSystemInfoUpdater() { source "${install_scripts_dir}crontab/system/crontab_setup_system_info_updater.sh"; crontabSetupSystemInfoUpdater "$@"; } -crontabSetupTaskProcessor() { source "${install_scripts_dir}crontab/task/crontab_setup_task_processor.sh"; crontabSetupTaskProcessor "$@"; } +crontabSetupTaskProcessor() { source "${install_scripts_dir}task/crontab_setup_task_processor.sh"; crontabSetupTaskProcessor "$@"; } crontabToolsMenu() { source "${install_scripts_dir}menu/tools/manage_crontab.sh"; crontabToolsMenu "$@"; } crowdsecToggleLibrePortalLogMounts() { source "${install_containers_dir}crowdsec/scripts/crowdsec_install_host.sh"; crowdsecToggleLibrePortalLogMounts "$@"; } dashyToolsMenu() { source "${install_scripts_dir}menu/tools/manage_dashy.sh"; dashyToolsMenu "$@"; } @@ -2150,8 +2168,8 @@ databaseRemoveFile() { source "${install_scripts_dir}database/delete_db_file.sh" databaseRestoreInsert() { source "${install_scripts_dir}database/insert/db_insert_restore.sh"; databaseRestoreInsert "$@"; } databaseUninstallApp() { source "${install_scripts_dir}database/app/db_uninstall_app.sh"; databaseUninstallApp "$@"; } detectOS() { source "${install_scripts_dir}function/checks/detect_os.sh"; detectOS "$@"; } -dispatchPending() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; dispatchPending "$@"; } -dispatchSpecific() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; dispatchSpecific "$@"; } +dispatchPending() { source "${install_scripts_dir}task/crontab_task_processor.sh"; dispatchPending "$@"; } +dispatchSpecific() { source "${install_scripts_dir}task/crontab_task_processor.sh"; dispatchSpecific "$@"; } dockerAppRunTool() { source "${install_scripts_dir}docker/app/functions/function_app_tool.sh"; dockerAppRunTool "$@"; } dockerCheckAppHealthDetails() { source "${install_scripts_dir}docker/checks/app_health_details.sh"; dockerCheckAppHealthDetails "$@"; } dockerCheckAppHealthStatus() { source "${install_scripts_dir}docker/checks/app_health_status.sh"; dockerCheckAppHealthStatus "$@"; } @@ -2239,7 +2257,7 @@ fixFolderPermissions() { source "${install_scripts_dir}function/permission/libre fixPermissionsBeforeStart() { source "${install_scripts_dir}function/permission/before_start.sh"; fixPermissionsBeforeStart "$@"; } _focalboardBcrypt() { source "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; _focalboardBcrypt "$@"; } _focalboardSqlite() { source "${install_containers_dir}focalboard/scripts/focalboard_auth.sh"; _focalboardSqlite "$@"; } -generateHealthReport() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; generateHealthReport "$@"; } +generateHealthReport() { source "${install_scripts_dir}task/crontab_check_processor.sh"; generateHealthReport "$@"; } generateInstallName() { source "${install_scripts_dir}checks/generate_install_name.sh"; generateInstallName "$@"; } generateRandomPassword() { source "${install_scripts_dir}config/password/password_generate.sh"; generateRandomPassword "$@"; } generateRandomUsername() { source "${install_scripts_dir}config/password/password_user_generator.sh"; generateRandomUsername "$@"; } @@ -2266,10 +2284,10 @@ hashPassword() { source "${install_scripts_dir}config/password/password_hash.sh" headscaleCommands() { source "${install_containers_dir}headscale/scripts/headscale_commands.sh"; headscaleCommands "$@"; } headscaleEditConfig() { source "${install_containers_dir}headscale/scripts/headscale_edit_config.sh"; headscaleEditConfig "$@"; } headscale_install_post_compose() { source "${install_containers_dir}headscale/scripts/headscale_install_hooks.sh"; headscale_install_post_compose "$@"; } -healthLogError() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; healthLogError "$@"; } -healthLogInfo() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; healthLogInfo "$@"; } -healthLogSuccess() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; healthLogSuccess "$@"; } -healthLogWarning() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; healthLogWarning "$@"; } +healthLogError() { source "${install_scripts_dir}task/crontab_check_processor.sh"; healthLogError "$@"; } +healthLogInfo() { source "${install_scripts_dir}task/crontab_check_processor.sh"; healthLogInfo "$@"; } +healthLogSuccess() { source "${install_scripts_dir}task/crontab_check_processor.sh"; healthLogSuccess "$@"; } +healthLogWarning() { source "${install_scripts_dir}task/crontab_check_processor.sh"; healthLogWarning "$@"; } hostAppInstall() { source "${install_scripts_dir}install/host_app.sh"; hostAppInstall "$@"; } hostSshAuthKeysFile() { source "${install_scripts_dir}ssh/host_access.sh"; hostSshAuthKeysFile "$@"; } hostSshEnsureDir() { source "${install_scripts_dir}ssh/host_access.sh"; hostSshEnsureDir "$@"; } @@ -2364,9 +2382,9 @@ localDnsDomains() { source "${install_scripts_dir}network/dns/setup_local_dns.sh localDnsServerIp() { source "${install_scripts_dir}network/dns/setup_local_dns.sh"; localDnsServerIp "$@"; } locationAdd() { source "${install_scripts_dir}backup/locations/location_add.sh"; locationAdd "$@"; } locationRemove() { source "${install_scripts_dir}backup/locations/location_remove.sh"; locationRemove "$@"; } -logDebug() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; logDebug "$@"; } -logError() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; logError "$@"; } -logInfo() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; logInfo "$@"; } +logDebug() { source "${install_scripts_dir}task/crontab_task_processor.sh"; logDebug "$@"; } +logError() { source "${install_scripts_dir}task/crontab_task_processor.sh"; logError "$@"; } +logInfo() { source "${install_scripts_dir}task/crontab_task_processor.sh"; logInfo "$@"; } _lpDownload() { source "${install_scripts_dir}source/fetch.sh"; _lpDownload "$@"; } lpFetchRelease() { source "${install_scripts_dir}source/fetch.sh"; lpFetchRelease "$@"; } lpFetchSource() { source "${install_scripts_dir}source/fetch.sh"; lpFetchSource "$@"; } @@ -2386,7 +2404,7 @@ _lpSha256() { source "${install_scripts_dir}source/fetch.sh"; _lpSha256 "$@"; } lpVerifyInstall() { source "${install_scripts_dir}source/verify.sh"; lpVerifyInstall "$@"; } lpVerifyPubKeyPath() { source "${install_scripts_dir}source/verify.sh"; lpVerifyPubKeyPath "$@"; } lpVersionGt() { source "${install_scripts_dir}source/fetch.sh"; lpVersionGt "$@"; } -mainLoop() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; mainLoop "$@"; } +mainLoop() { source "${install_scripts_dir}task/crontab_task_processor.sh"; mainLoop "$@"; } mainMenu() { source "${install_scripts_dir}menu/menu_main.sh"; mainMenu "$@"; } manifestCollect() { source "${install_scripts_dir}backup/manifest/manifest_collect.sh"; manifestCollect "$@"; } manifestReadField() { source "${install_scripts_dir}backup/manifest/manifest_read.sh"; manifestReadField "$@"; } @@ -2394,7 +2412,7 @@ manifestReadFromSnapshot() { source "${install_scripts_dir}backup/manifest/manif manifestRemove() { source "${install_scripts_dir}backup/manifest/manifest_write.sh"; manifestRemove "$@"; } manifestWrite() { source "${install_scripts_dir}backup/manifest/manifest_write.sh"; manifestWrite "$@"; } mattermostToolsMenu() { source "${install_scripts_dir}menu/tools/manage_mattermost.sh"; mattermostToolsMenu "$@"; } -maybeRegenPoll() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; maybeRegenPoll "$@"; } +maybeRegenPoll() { source "${install_scripts_dir}task/crontab_task_processor.sh"; maybeRegenPoll "$@"; } menuContinue() { source "${install_scripts_dir}menu/message/continue.sh"; menuContinue "$@"; } menuLoginRequired() { source "${install_scripts_dir}menu/message/login.sh"; menuLoginRequired "$@"; } menuShowFinalMessages() { source "${install_scripts_dir}menu/message/final.sh"; menuShowFinalMessages "$@"; } @@ -2430,7 +2448,7 @@ moveFile() { source "${install_scripts_dir}function/file/move_file.sh"; moveFile _nextcloudOcc() { source "${install_containers_dir}nextcloud/scripts/nextcloud_auth.sh"; _nextcloudOcc "$@"; } _nextcloudOccWithPass() { source "${install_containers_dir}nextcloud/scripts/nextcloud_auth.sh"; _nextcloudOccWithPass "$@"; } onlyoffice_install_message_data() { source "${install_containers_dir}onlyoffice/scripts/onlyoffice_install_hooks.sh"; onlyoffice_install_message_data "$@"; } -openFifoReader() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; openFifoReader "$@"; } +openFifoReader() { source "${install_scripts_dir}task/crontab_task_processor.sh"; openFifoReader "$@"; } owncloud_install_post_compose() { source "${install_containers_dir}owncloud/scripts/owncloud_install_hooks.sh"; owncloud_install_post_compose "$@"; } passwordValidation() { source "${install_scripts_dir}function/validation/password.sh"; passwordValidation "$@"; } peerAdd() { source "${install_scripts_dir}peer/peer_add.sh"; peerAdd "$@"; } @@ -2465,7 +2483,7 @@ _peerSshOpts() { source "${install_scripts_dir}peer/peer_remote.sh"; _peerSshOpt _peerSshTarget() { source "${install_scripts_dir}peer/peer_remote.sh"; _peerSshTarget "$@"; } peerValidateKind() { source "${install_scripts_dir}peer/peer_helpers.sh"; peerValidateKind "$@"; } peerValidateName() { source "${install_scripts_dir}peer/peer_helpers.sh"; peerValidateName "$@"; } -performMaintenance() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; performMaintenance "$@"; } +performMaintenance() { source "${install_scripts_dir}task/crontab_check_processor.sh"; performMaintenance "$@"; } portAllocate() { source "${install_scripts_dir}network/ports/allocation/port_allocate.sh"; portAllocate "$@"; } portFindNextAvailablePort() { source "${install_scripts_dir}network/ports/core/port_find_next_available.sh"; portFindNextAvailablePort "$@"; } portGetPublicPorts() { source "${install_scripts_dir}network/ports/core/port_get_public_ports.sh"; portGetPublicPorts "$@"; } @@ -2484,22 +2502,22 @@ portUpdateComposeTags() { source "${install_scripts_dir}network/ports/allocation processBcryptPassword() { source "${install_scripts_dir}config/password/bcrypt/password_process_bcrypt.sh"; processBcryptPassword "$@"; } prometheus_install_post_compose() { source "${install_containers_dir}prometheus/scripts/prometheus_install_hooks.sh"; prometheus_install_post_compose "$@"; } prometheus_install_post_start() { source "${install_containers_dir}prometheus/scripts/prometheus_install_hooks.sh"; prometheus_install_post_start "$@"; } -readTaskField() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; readTaskField "$@"; } +readTaskField() { source "${install_scripts_dir}task/crontab_task_processor.sh"; readTaskField "$@"; } reclaimDockerSpace() { source "${install_scripts_dir}cli/commands/system/cli_system_commands.sh"; reclaimDockerSpace "$@"; } reconcileConfigFile() { source "${install_scripts_dir}config/core/variables/config_scan_variables.sh"; reconcileConfigFile "$@"; } reconcileContainersTopOwnership() { source "${install_scripts_dir}function/permission/libreportal_folders.sh"; reconcileContainersTopOwnership "$@"; } reconcileDockerOwnership() { source "${install_scripts_dir}function/permission/libreportal_folders.sh"; reconcileDockerOwnership "$@"; } _reconcileSplitValueComment() { source "${install_scripts_dir}config/core/variables/config_scan_variables.sh"; _reconcileSplitValueComment "$@"; } reconcileWebuiDirOwnership() { source "${install_scripts_dir}function/permission/libreportal_folders.sh"; reconcileWebuiDirOwnership "$@"; } -recoverOrphans() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; recoverOrphans "$@"; } +recoverOrphans() { source "${install_scripts_dir}task/crontab_task_processor.sh"; recoverOrphans "$@"; } removeDockerImages() { source "${install_scripts_dir}cli/commands/system/cli_system_commands.sh"; removeDockerImages "$@"; } removeEmptyLineAtFileEnd() { source "${install_scripts_dir}function/file/empty_line/remove_line.sh"; removeEmptyLineAtFileEnd "$@"; } -repairDirectoryStructure() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; repairDirectoryStructure "$@"; } -repairFileSystem() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; repairFileSystem "$@"; } -repairPermissions() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; repairPermissions "$@"; } -repairSystemIssues() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; repairSystemIssues "$@"; } -repairSystemService() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; repairSystemService "$@"; } -repairTaskSystem() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; repairTaskSystem "$@"; } +repairDirectoryStructure() { source "${install_scripts_dir}task/crontab_check_processor.sh"; repairDirectoryStructure "$@"; } +repairFileSystem() { source "${install_scripts_dir}task/crontab_check_processor.sh"; repairFileSystem "$@"; } +repairPermissions() { source "${install_scripts_dir}task/crontab_check_processor.sh"; repairPermissions "$@"; } +repairSystemIssues() { source "${install_scripts_dir}task/crontab_check_processor.sh"; repairSystemIssues "$@"; } +repairSystemService() { source "${install_scripts_dir}task/crontab_check_processor.sh"; repairSystemService "$@"; } +repairTaskSystem() { source "${install_scripts_dir}task/crontab_check_processor.sh"; repairTaskSystem "$@"; } replaceBcryptPasswords() { source "${install_scripts_dir}config/password/bcrypt/password_replace_bcrypt.sh"; replaceBcryptPasswords "$@"; } replaceHexKeys() { source "${install_scripts_dir}config/password/password_replace hex.sh"; replaceHexKeys "$@"; } replaceLaravelAppKeys() { source "${install_scripts_dir}config/password/password_replace_appkey.sh"; replaceLaravelAppKeys "$@"; } @@ -2569,8 +2587,8 @@ runSocket() { source "${install_scripts_dir}docker/command/run_privileged.sh"; r runSshAccess() { source "${install_scripts_dir}docker/command/run_privileged.sh"; runSshAccess "$@"; } runSvc() { source "${install_scripts_dir}docker/command/run_privileged.sh"; runSvc "$@"; } runSystem() { source "${install_scripts_dir}docker/command/run_privileged.sh"; runSystem "$@"; } -runTask() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; runTask "$@"; } -run_task_processor() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; run_task_processor "$@"; } +runTask() { source "${install_scripts_dir}task/crontab_task_processor.sh"; runTask "$@"; } +run_task_processor() { source "${install_scripts_dir}task/crontab_task_processor.sh"; run_task_processor "$@"; } scanConfigsForRandomPassword() { source "${install_scripts_dir}config/password/password_update_all.sh"; scanConfigsForRandomPassword "$@"; } scanFileForRandomPasswordKeysUsers() { source "${install_scripts_dir}config/password/password_scan_file.sh"; scanFileForRandomPasswordKeysUsers "$@"; } searxng_install_post_start() { source "${install_containers_dir}searxng/scripts/searxng_install_hooks.sh"; searxng_install_post_start "$@"; } @@ -2591,7 +2609,7 @@ setupHeadscaleRemote() { source "${install_containers_dir}headscale/scripts/head setupHeadscaleUser() { source "${install_containers_dir}headscale/scripts/headscale_user.sh"; setupHeadscaleUser "$@"; } setupHeadscaleVariables() { source "${install_scripts_dir}network/variables/headscale_variables.sh"; setupHeadscaleVariables "$@"; } setupLocalDnsRewrites() { source "${install_scripts_dir}network/dns/setup_local_dns.sh"; setupLocalDnsRewrites "$@"; } -setupTaskDir() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; setupTaskDir "$@"; } +setupTaskDir() { source "${install_scripts_dir}task/crontab_task_processor.sh"; setupTaskDir "$@"; } setupWizardMarkComplete() { source "${install_scripts_dir}setup/setup_lock.sh"; setupWizardMarkComplete "$@"; } setupWizardReset() { source "${install_scripts_dir}setup/setup_lock.sh"; setupWizardReset "$@"; } setupWizardTerminal() { source "${install_scripts_dir}checks/first_install.sh"; setupWizardTerminal "$@"; } @@ -2643,20 +2661,25 @@ updateDockerNetworkSubnet() { source "${install_scripts_dir}docker/network/netwo updateDockerSudoPassword() { source "${install_scripts_dir}docker/update_docker_sudo_pass.sh"; updateDockerSudoPassword "$@"; } updateFileOwnership() { source "${install_scripts_dir}function/permission/ownership/file.sh"; updateFileOwnership "$@"; } updateHostIPToWhitelist() { source "${install_scripts_dir}config/utils/update_whitelist.sh"; updateHostIPToWhitelist "$@"; } -updateTaskFields() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; updateTaskFields "$@"; } +updaterApplyAll() { source "${install_scripts_dir}cli/commands/updater/cli_updater_commands.sh"; updaterApplyAll "$@"; } +updaterApplyApp() { source "${install_scripts_dir}cli/commands/updater/cli_updater_commands.sh"; updaterApplyApp "$@"; } +updaterComposePull() { source "${install_scripts_dir}cli/commands/updater/cli_updater_commands.sh"; updaterComposePull "$@"; } +updaterRecordHistory() { source "${install_scripts_dir}cli/commands/updater/cli_updater_commands.sh"; updaterRecordHistory "$@"; } +updaterRollbackApp() { source "${install_scripts_dir}cli/commands/updater/cli_updater_commands.sh"; updaterRollbackApp "$@"; } +updateTaskFields() { source "${install_scripts_dir}task/crontab_task_processor.sh"; updateTaskFields "$@"; } userExists() { source "${install_scripts_dir}function/checks/user_exists.sh"; userExists "$@"; } -validateContainerHealth() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateContainerHealth "$@"; } -validateDirectoryStructure() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateDirectoryStructure "$@"; } -validateDiskSpace() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateDiskSpace "$@"; } -validateDockerService() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateDockerService "$@"; } -validateFileSystem() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateFileSystem "$@"; } -validateLibrePortalInstallation() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateLibrePortalInstallation "$@"; } -validateLogHealth() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateLogHealth "$@"; } -validatePermissions() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validatePermissions "$@"; } -validateSystemHealth() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateSystemHealth "$@"; } -validateSystemService() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateSystemService "$@"; } -validateTaskSystem() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateTaskSystem "$@"; } -validateWebUIReadiness() { source "${install_scripts_dir}crontab/task/crontab_check_processor.sh"; validateWebUIReadiness "$@"; } +validateContainerHealth() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateContainerHealth "$@"; } +validateDirectoryStructure() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateDirectoryStructure "$@"; } +validateDiskSpace() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateDiskSpace "$@"; } +validateDockerService() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateDockerService "$@"; } +validateFileSystem() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateFileSystem "$@"; } +validateLibrePortalInstallation() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateLibrePortalInstallation "$@"; } +validateLogHealth() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateLogHealth "$@"; } +validatePermissions() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validatePermissions "$@"; } +validateSystemHealth() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateSystemHealth "$@"; } +validateSystemService() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateSystemService "$@"; } +validateTaskSystem() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateTaskSystem "$@"; } +validateWebUIReadiness() { source "${install_scripts_dir}task/crontab_check_processor.sh"; validateWebUIReadiness "$@"; } viewAppCategoryConfigs() { source "${install_scripts_dir}config/application/application_menu_category.sh"; viewAppCategoryConfigs "$@"; } viewAppConfigs() { source "${install_scripts_dir}config/application/application_menu_apps.sh"; viewAppConfigs "$@"; } viewComposeFiles() { source "${install_scripts_dir}config/docker/docker_compose_menu.sh"; viewComposeFiles "$@"; } @@ -2711,12 +2734,13 @@ webuiSystemUpdateCheck() { source "${install_scripts_dir}webui/data/generators/s webuiSystemVerify() { source "${install_scripts_dir}webui/data/generators/system/webui_system_update.sh"; webuiSystemVerify "$@"; } webuiUpdateAppLog() { source "${install_scripts_dir}webui/data/utils/webui_app_log.sh"; webuiUpdateAppLog "$@"; } webuiUpdateAppStatus() { source "${install_scripts_dir}webui/data/generators/apps/webui_app_status.sh"; webuiUpdateAppStatus "$@"; } +webuiUpdaterScan() { source "${install_scripts_dir}webui/data/generators/updater/webui_updater_scan.sh"; webuiUpdaterScan "$@"; } webuiUpdateSystemConfig() { source "${install_scripts_dir}webui/data/generators/config/webui_update_config.sh"; webuiUpdateSystemConfig "$@"; } webuiValidateConfigValue() { source "${install_scripts_dir}webui/data/generators/config/webui_update_config.sh"; webuiValidateConfigValue "$@"; } whitelistPortUpdater() { source "${install_scripts_dir}docker/whitelist_port_updater.sh"; whitelistPortUpdater "$@"; } wireguard_install_post_compose() { source "${install_containers_dir}wireguard/scripts/wireguard_install_hooks.sh"; wireguard_install_post_compose "$@"; } wireguard_install_post_start() { source "${install_containers_dir}wireguard/scripts/wireguard_install_hooks.sh"; wireguard_install_post_start "$@"; } wireguard_install_pre() { source "${install_containers_dir}wireguard/scripts/wireguard_install_hooks.sh"; wireguard_install_pre "$@"; } -writeAtomic() { source "${install_scripts_dir}crontab/task/crontab_task_processor.sh"; writeAtomic "$@"; } +writeAtomic() { source "${install_scripts_dir}task/crontab_task_processor.sh"; writeAtomic "$@"; } _writeTaskFile() { source "${install_scripts_dir}cli/task/cli_task_run.sh"; _writeTaskFile "$@"; } zipFile() { source "${install_scripts_dir}function/file/zip_file.sh"; zipFile "$@"; } diff --git a/scripts/source/files/cli_files.sh b/scripts/source/files/cli_files.sh index b5c0e6e..e3824ba 100755 --- a/scripts/source/files/cli_files.sh +++ b/scripts/source/files/cli_files.sh @@ -23,6 +23,7 @@ files_libreportal_cli=( "${source_scripts[@]}" "${ssh_scripts[@]}" "${start_scripts[@]}" + "${task_scripts[@]}" "${update_scripts[@]}" "${webui_scripts[@]}" ) diff --git a/scripts/system/libreportal-svc b/scripts/system/libreportal-svc index 611947e..99ab2a2 100644 --- a/scripts/system/libreportal-svc +++ b/scripts/system/libreportal-svc @@ -27,7 +27,7 @@ BACKUPS_DIR="__BACKUPS_DIR__" SERVICE_FILE="/etc/systemd/system/libreportal.service" INSTALL_SCRIPTS_DIR="$SYSTEM_DIR/install/scripts" -TASK_PROCESSOR="$INSTALL_SCRIPTS_DIR/crontab/task/crontab_task_processor.sh" +LP_COMMAND="/usr/local/bin/libreportal" # stable wrapper symlink; runs the processor via start.sh, so the unit is decoupled from the script's in-tree path DB_CFG="$SYSTEM_DIR/configs/general/general_docker_install" _mode() { @@ -64,7 +64,7 @@ Environment=LP_SYSTEM_DIR=$SYSTEM_DIR Environment=LP_CONTAINERS_DIR=$CONTAINERS_DIR Environment=LP_BACKUPS_DIR=$BACKUPS_DIR Environment=LP_MANAGER_USER=$MANAGER -ExecStart=$TASK_PROCESSOR start_script +ExecStart=$LP_COMMAND __task-processor Restart=always RestartSec=5 SyslogIdentifier=libreportal diff --git a/scripts/crontab/task/crontab_check_processor.sh b/scripts/task/crontab_check_processor.sh similarity index 100% rename from scripts/crontab/task/crontab_check_processor.sh rename to scripts/task/crontab_check_processor.sh diff --git a/scripts/crontab/task/crontab_setup_check_processor.sh b/scripts/task/crontab_setup_check_processor.sh similarity index 90% rename from scripts/crontab/task/crontab_setup_check_processor.sh rename to scripts/task/crontab_setup_check_processor.sh index 82cb660..e75e9d5 100755 --- a/scripts/crontab/task/crontab_setup_check_processor.sh +++ b/scripts/task/crontab_setup_check_processor.sh @@ -2,7 +2,7 @@ crontabSetupCheckProcessor() { - local task_check_script="$install_scripts_dir/crontab/task/crontab_check_processor.sh" + local task_check_script="$install_scripts_dir/task/crontab_check_processor.sh" local task_dir="$containers_dir/libreportal/frontend/data/tasks" # Update TASK_DIR in the task processor script diff --git a/scripts/crontab/task/crontab_setup_task_processor.sh b/scripts/task/crontab_setup_task_processor.sh similarity index 89% rename from scripts/crontab/task/crontab_setup_task_processor.sh rename to scripts/task/crontab_setup_task_processor.sh index 2e485b7..a3d7af1 100755 --- a/scripts/crontab/task/crontab_setup_task_processor.sh +++ b/scripts/task/crontab_setup_task_processor.sh @@ -2,7 +2,7 @@ crontabSetupTaskProcessor() { - local task_processor_script="$install_scripts_dir/crontab/task/crontab_task_processor.sh" + local task_processor_script="$install_scripts_dir/task/crontab_task_processor.sh" local task_dir="$containers_dir/libreportal/frontend/data/tasks" # Update TASK_DIR in the task processor script diff --git a/scripts/crontab/task/crontab_task_processor.sh b/scripts/task/crontab_task_processor.sh similarity index 99% rename from scripts/crontab/task/crontab_task_processor.sh rename to scripts/task/crontab_task_processor.sh index 8ba768e..4a9d24e 100755 --- a/scripts/crontab/task/crontab_task_processor.sh +++ b/scripts/task/crontab_task_processor.sh @@ -36,7 +36,7 @@ script_task_processor_flag="$1" # relocatable path roots — paths.sh sets docker_dir/containers_dir/configs_dir/… # (the data + backup roots can't be derived from our own location). LP_SELF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)" -LP_SCRIPTS="${install_scripts_dir:-$(cd "$LP_SELF_DIR/../.." 2>/dev/null && pwd)/}" +LP_SCRIPTS="${install_scripts_dir:-$(cd "$LP_SELF_DIR/.." 2>/dev/null && pwd)/}" [[ -f "${LP_SCRIPTS}source/paths.sh" ]] && source "${LP_SCRIPTS}source/paths.sh" LP_SCRIPTS="${install_scripts_dir:-$LP_SCRIPTS}" LP_DOCKER_CFG="${configs_dir:-/libreportal-system/configs/}general/general_docker_install" diff --git a/scripts/webui/webui_install_systemd.sh b/scripts/webui/webui_install_systemd.sh index 8ab91d4..e213359 100755 --- a/scripts/webui/webui_install_systemd.sh +++ b/scripts/webui/webui_install_systemd.sh @@ -13,7 +13,7 @@ installLibrePortalWebUITaskService() { [[ "$CFG_REQUIREMENT_WEBUI_SERVICE" == "true" ]] || return 0 - local task_processor_script="$install_scripts_dir/crontab/task/crontab_task_processor.sh" + local task_processor_script="$install_scripts_dir/task/crontab_task_processor.sh" local task_dir="$containers_dir/libreportal/frontend/data/tasks" # Point the processor at the task dir (idempotent). This edits the diff --git a/start.sh b/start.sh index 53365e0..ebbd186 100755 --- a/start.sh +++ b/start.sh @@ -39,6 +39,17 @@ initLibrePortal() # dir, so the relative path resolves. [[ -f "scripts/source/paths.sh" ]] && source "scripts/source/paths.sh" + # Internal launcher: the systemd unit starts the task processor through this + # stable entry (`libreportal __task-processor`) so the unit never bakes the + # processor's in-tree path — only this hand-off knows where the script lives. + # paths.sh above resolved install_scripts_dir; export it so the exec'd + # processor inherits the roots and skips its own self-location. Intercept here, + # before the heavy load_sources — we only need to hand off to the daemon. + if [[ "$initial_command1" == "__task-processor" ]]; then + export install_scripts_dir + exec "${install_scripts_dir}task/crontab_task_processor.sh" start_script + fi + # For the full application loading if [[ "$initial_command1" == "run" ]]; then if [[ -z "$initial_command2" ]]; then