HEX
Server: Apache/2.4.63 (Unix)
System: Linux Synopilou92 4.4.302+ #72806 SMP Mon Jul 21 23:16:00 CST 2025 x86_64
User: pilou92 (1026)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: //var/packages/HyperBackup/scripts/start-stop-status
#!/bin/sh

PACKAGE_TARGET=/var/packages/HyperBackup/target
SYNOBACKUP_TOOL_BIN="/usr/syno/bin/synobackup"
SCHEDULE_BACKUPAPP_DSM="SYNO.SDS.Backup.Application"
SCHEDULE_BACKUPAPP_LUN="SYNO.SDS.BackupApp.LUNBackup"
SYNOIMGBKP_TOOL_BIN=$PACKAGE_TARGET/bin/synoimgbkptool
SYNOBACKUP_TASK_RELINK=/var/packages/HyperBackup/scripts/backup/2.x/task_relink

HBED_DIR="/var/lib/hbed/"

# enable/disable SynoRBD into correct state according to state of current list of tasks.
correct_synorbd() {
	# According package loading flow, WebAPIs in package is callable in this moment.
	/usr/syno/bin/synowebapi --exec 'api=SYNO.Backup.Task' 'method=correct_synorbd' 'version=1'
}

migrate_to_new_synolog() {
	OLD_LOG_PATH="/var/log/synolog/synobackup.log"
	NEW_LOG_PATH="/var/packages/HyperBackup/var/log/synolog/synobackup.log"

	if [ ! -s $NEW_LOG_PATH ]; then
		/usr/bin/mkdir -p $(/bin/dirname $NEW_LOG_PATH)
		/usr/bin/cp "$OLD_LOG_PATH" "$NEW_LOG_PATH"
	fi
}

case $1 in
	prestart)
		exit 0
		;;
	start)
		if [ -f /var/packages/HyperBackup/tmp/first_start_after_install ]; then
			rm -f /var/packages/HyperBackup/tmp/first_start_after_install
			/var/packages/HyperBackup/target/bin/update_hyperbackup_ed.sh &
		fi

		$PACKAGE_TARGET/bin/dsmbackup --clean-backup-snapshot
		$PACKAGE_TARGET/bin/dsmbackup --check-and-reset-sched-id

		# enable list schedule
		if [ -e ${SYNOBACKUP_TOOL_BIN} ]; then
			${SYNOBACKUP_TOOL_BIN} --schedule-enable-list-by-app ${SCHEDULE_BACKUPAPP_DSM}
			${SYNOBACKUP_TOOL_BIN} --schedule-enable-list-by-app ${SCHEDULE_BACKUPAPP_LUN}
		fi

		${SYNOIMGBKP_TOOL_BIN} -e || true &
		${SYNOIMGBKP_TOOL_BIN} -U || true &
		${SYNOIMGBKP_TOOL_BIN} -G -y local && ${SYNOIMGBKP_TOOL_BIN} -M -y local && ${SYNOIMGBKP_TOOL_BIN} -n -y local &

		if [ -d "$HBED_DIR" ]; then
			"$PACKAGE_TARGET/bin/relink_the_task_of_restore.sh"
			/bin/rmdir "$HBED_DIR"
		fi

		# Run only after list of tasks is stable and won't be modified after this call.
		correct_synorbd

		# Inorder to keep these two keys after entire DSM restore, move key update from install/uninstall to start/stop.
		/usr/syno/bin/synosetkeyvalue /etc.defaults/synoinfo.conf hyperbackup_ed_preview 1
		/usr/syno/bin/synosetkeyvalue /etc.defaults/synoinfo.conf hyperbackup_ed_c2_target_preview 1

		# Migrate to new synolog.
		migrate_to_new_synolog

		exit 0
	;;
	prestop)
		$PACKAGE_TARGET/bin/hook/poweroff_backup
		if [ $? -eq 1 ]; then
			SYNOBACKUP_BACKUP_WARNING=`/bin/get_key_value $PACKAGE_TARGET/ui/texts/$SYNOPKG_DSM_LANGUAGE/strings "backup_poweroff"`
			echo $SYNOBACKUP_BACKUP_WARNING > $SYNOPKG_TEMP_LOGFILE
			exit 1
		fi
		$PACKAGE_TARGET/bin/hook/poweroff_restore
		if [ $? -eq 1 ]; then
			SYNOBACKUP_RESTORE_WARNING=`get_key_value $PACKAGE_TARGET/ui/texts/$SYNOPKG_DSM_LANGUAGE/strings "restore_poweroff"`
			echo $SYNOBACKUP_RESTORE_WARNING > $SYNOPKG_TEMP_LOGFILE
			exit 1
		fi
		exit 0
		;;
	stop)
		$PACKAGE_TARGET/bin/dsmbackup --cancel-backup

		# disable list schedule
		if [ -e ${SYNOBACKUP_TOOL_BIN} ]; then
			${SYNOBACKUP_TOOL_BIN} --schedule-disable-list-by-app ${SCHEDULE_BACKUPAPP_DSM}
			${SYNOBACKUP_TOOL_BIN} --schedule-disable-list-by-app ${SCHEDULE_BACKUPAPP_LUN}
		fi
		killall -9 ${SYNOIMGBKP_TOOL_BIN}
		killall -9 ${SYNOBACKUP_TASK_RELINK}
		$PACKAGE_TARGET/bin/synohbkpvfs_mgr -u

		/usr/syno/bin/synosetkeyvalue /etc.defaults/synoinfo.conf hyperbackup_ed_preview ""
		/usr/syno/bin/synosetkeyvalue /etc.defaults/synoinfo.conf hyperbackup_ed_c2_target_preview ""
		exit 0
	;;
	status)
		exit 0
	;;
	killall)
		exit 0
        ;;
	log)
		exit 0
	;;
esac