Compare commits

...

2 Commits

Author SHA1 Message Date
librelad
8716ac42f3 Merge claude/2 2026-05-31 01:52:33 +01:00
librelad
7988778f73 refactor(task): move processor out of crontab/ + launch via stable CLI entry
The task processor is a systemd-service daemon, not a cron job — move it out
of the misleadingly-named scripts/crontab/task/ to scripts/task/.

To stop the systemd unit from baking the processor's in-tree path (the footprint
coupling that forces a reinstall on every reorg), the unit now ExecStarts the
stable wrapper: /usr/local/bin/libreportal __task-processor. start.sh intercepts
that early (after paths.sh, before the heavy load), exports install_scripts_dir,
and exec's the processor with start_script. Future moves/renames need only the
one hand-off updated + a regen — no footprint bump.

- git mv scripts/crontab/task -> scripts/task (filenames kept; cron-watchdog grep
  + function names unchanged)
- libreportal-svc: ExecStart -> stable wrapper launcher
- start.sh: __task-processor internal launcher (export install_scripts_dir; exec)
- crontab_task_processor.sh: fix self-location ../.. -> .. for the new 1-level
  depth (latent bug the move would otherwise have introduced)
- regen files_*/function_manifest; add task_scripts to the app/cli aggregates
- footprint_version 3 -> 4 (root-owned svc unit changed -> needs a root reinstall)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: librelad <librelad@digitalangels.vip>
2026-05-31 01:52:33 +01:00
15 changed files with 149 additions and 101 deletions

View File

@ -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

View File

@ -23,6 +23,7 @@ files_libreportal_app=(
"${source_scripts[@]}"
"${ssh_scripts[@]}"
"${start_scripts[@]}"
"${task_scripts[@]}"
"${update_scripts[@]}"
"${webui_scripts[@]}"
)

View File

@ -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"

View File

@ -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"
)

View File

@ -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"
)

View File

@ -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"

View File

@ -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 "$@"; }

View File

@ -23,6 +23,7 @@ files_libreportal_cli=(
"${source_scripts[@]}"
"${ssh_scripts[@]}"
"${start_scripts[@]}"
"${task_scripts[@]}"
"${update_scripts[@]}"
"${webui_scripts[@]}"
)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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