HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: //usr/libexec/volume/delete/SynologanVolumeDelete.sh
#!/bin/sh

PKG_NAME="synologan alert database volume delete hook"
PKG_VERSION="1.0"
PKG_VENDOR="Synology Inc."
SDK_MODVER="1.0"

case $1 in
	--sdk-mod-ver)
		echo ${SDK_MODVER}
	;;
	--name)
		echo ${PKG_NAME}
	;;
	--pkg-ver)
		echo ${PKG_VERSION}
	;;
	--vendor)
		echo ${PKG_VENDOR}
	;;
	--pre)
		SYNOLOGAN_ALERT_DATABASE="/var/lib/synologan/database/alert.sqlite"

		if [ ! -L "$SYNOLOGAN_ALERT_DATABASE" ]; then
			exit
		fi

		SYNOLOGAN_ALERT_DATABASE_REALPATH="$(readlink $SYNOLOGAN_ALERT_DATABASE)"

		if [ "$(df "$SYNOLOGAN_ALERT_DATABASE_REALPATH" | tail -1 | awk '{print $6}')" != "$MOUNTPOINT" ]; then
			logger -p 3 "[$SYNOLOGAN_ALERT_DATABASE_REALPATH] is not on [$MOUNTPOINT], skip..."
			exit
		fi

		/usr/syno/sbin/synoservice --pause-by-reason synologanalyzer volume-action-hook

		DB_SIZE="$(du -m "$SYNOLOGAN_ALERT_DATABASE_REALPATH" | awk '{print $1}')"
		REQUIRED_SIZE="$(($DB_SIZE * 2))"
		ROOT_SIZE="$(df -m | grep  '/$' | awk '{print $4}')"
		ALIVE_VOLUME="$(/usr/syno/bin/servicetool --get-alive-volume-for-winbindd $REQUIRED_SIZE $MOUNTPOINT)"

		if [ ! -d "$ALIVE_VOLUME" ]; then
			rm -f "$SYNOLOGAN_ALERT_DATABASE"

			if [ "$ROOT_SIZE" -gt "$REQUIRED_SIZE" ]; then
				logger -p 3 "Begin to move [$SYNOLOGAN_ALERT_DATABASE_REALPATH] to [$SYNOLOGAN_ALERT_DATABASE]."
				cp -f "$SYNOLOGAN_ALERT_DATABASE_REALPATH" "$SYNOLOGAN_ALERT_DATABASE"
				logger -p 3 "Finish moving [$SYNOLOGAN_ALERT_DATABASE_REALPATH] to [$SYNOLOGAN_ALERT_DATABASE]."
			else
				logger -p 3 "No available place to store [$SYNOLOGAN_ALERT_DATABASE]."
			fi

			exit
		fi

		SYNOLOGAN_ALERT_DATABASE_NEWPATH="$(realpath -sm "$ALIVE_VOLUME/${SYNOLOGAN_ALERT_DATABASE_REALPATH:${#MOUNTPOINT}}")"

		logger -p 3 "Begin to move [$SYNOLOGAN_ALERT_DATABASE_REALPATH] to [$SYNOLOGAN_ALERT_DATABASE_NEWPATH]."
		mkdir -p $(dirname $SYNOLOGAN_ALERT_DATABASE_NEWPATH)
		cp -f "$SYNOLOGAN_ALERT_DATABASE_REALPATH" "$SYNOLOGAN_ALERT_DATABASE_NEWPATH"
		ln -sf "$SYNOLOGAN_ALERT_DATABASE_NEWPATH" "$SYNOLOGAN_ALERT_DATABASE"
		logger -p 3 "Finish moving [$SYNOLOGAN_ALERT_DATABASE_REALPATH] to [$SYNOLOGAN_ALERT_DATABASE_NEWPATH]."
	;;
	--post)
		/usr/syno/sbin/synoservice --resume-by-reason synologanalyzer volume-action-hook
	;;
	*)
		echo "Usage: $0 --sdk-mod-ver|--name|--pkg-ver|--vendor|--pre|--post"
	;;
esac