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: /volume1/@appstore/MailPlus-Server/hook/MailPlusServerShareSet.sh
#!/bin/bash

###############################################################
#   This script should be hooked when invoking SYNOShareSet()
#   Usable environment variable:
#       ORIGIN_SHARE_NAME, SHARE_NAME, ORIGIN_SHARE_PATH, SHARE_PATH,
#       ORIGIN_SHARE_STATUS, SHARE_STATUS
#
#   Note: The script should bear to be invoked multiple times
###############################################################

#Include common scripts
. /var/packages/MailPlus-Server/target/scripts/MailPlusServerCommon
. /var/packages/MailPlus-Server/target/backend_hook/hookUtils.conf
. /var/packages/MailPlus-Server/target/hook/MailPlusServerShareCommon.sh

#At begining, acquire package settings
PackageInfoGet;
PATH_SUFFIX=""

LocationChangeCheck(){
	# Only hooked when share name or share path changed
	if [ "${ORIGIN_SHARE_NAME}" != "${SHARE_NAME}" ] || [ "${ORIGIN_SHARE_PATH}" != "${SHARE_PATH}" ]; then
		NEED_HOOK=1;
	else
		NEED_HOOK=0;
	fi
}

LogAction(){
	#Check if service share
	ARCHIVE_DEST_SHARE=""
	ARCHIVE_ENABLED="no"
	GetArchiveSetting

	CHK_SHARE=${ORIGIN_SHARE_PATH};
	SvrShareCheck;
	if [ "1" != "${IS_DEST_SHARE}" ]; then
		return 0
	fi

	#Check hook condition
	LocationChangeCheck;
	if [ "1" != "${NEED_HOOK}" ]; then
		return 0
	fi

	#Check action success or not
	if [ "" = "$PATH_SUFFIX" ]; then
		${MAILPLUS_SERVER_BACKEND_BINARY} --setConfKeyVal "archive_destination" "${SHARE_PATH}"
	else
		${MAILPLUS_SERVER_BACKEND_BINARY} --setConfKeyVal "archive_destination" "${SHARE_PATH}${PATH_SUFFIX}"
	fi
}

MAILDIR_SHARE="MailPlus"
MailDirSharePreCheck(){
	## Create the share no need to do things
	if [ -z "${ORIGIN_SHARE_PATH}" ]; then
		return 1
	fi
	if [ "${SHARE_NAME}" != "${MAILDIR_SHARE}" -o "${SHARE_PATH}" == "${ORIGIN_SHARE_PATH}" ]; then
		return 1
	fi
	return 0
}
ParseVolume(){
	local fullPath="$1"
	## TODO: support usb,encription share
	echo "${fullPath}" | awk -F"/" '{print $2}'
}
SetNewVolume(){
	local newVolume="$1"
	local hostID="$(${MAILPLUS_SERVER_BACKEND_BINARY} --getHostID)"
	local volumeKey="general_storage_volume-${hostID}"

	${MAILPLUS_SERVER_BACKEND_BINARY} --setConfKeyVal "${volumeKey}" "${newVolume}"
}
MailDirChangePre(){
	if ! MailDirSharePreCheck; then
		return 0
	fi

	## Stop package
	info_log "[Share hook] - Change voluem path so stop postfix and dovecot"
	/var/packages/MailPlus-Server/target/scripts/PostfixCollection.sh stop
	/var/packages/MailPlus-Server/target/scripts/daemon/dovecot.sh stop
}
MailDirChangePost(){
	if ! MailDirSharePreCheck; then
		return 0
	fi

	## Check if volume move success
	if [ "0" == "${RESULT}" ]; then
		## Set new volume
		local volume="$(ParseVolume "${SHARE_PATH}")"
		SetNewVolume "${volume}"
		info_log "[Share hook] - Set new volume to ${volume}"
	else
		err_log "[Share hook] - Move filaed so would not set new volume to ${volume}"
	fi

	## Start package
	log "[Share hook] - Change voluem path done so start postfix and dovecot"
	/var/packages/MailPlus-Server/target/scripts/PostfixCollection.sh start
	/var/packages/MailPlus-Server/target/scripts/daemon/dovecot.sh start
}

case $1 in
	--sdk-mod-ver)
		#Print SDK support version
		echo "2.0";
		;;
	--name)
		#Print package name
		echo "${MAIL_SERVER_PKG_NAME}";
		;;
	--pkg-ver)
		#Print package version
		echo "${MAIL_SERVER_PKG_VERSION}";
		;;
	--vendor)
		#Print package vendor
		echo "${MAIL_SERVER_PKG_VENDOR}";
		;;
	--pre)
		#check if the package is initialized
		if ! ${MAILPLUS_SERVER_BACKEND_BINARY} --isClusterInit; then
			exit 0
		fi

		MailDirChangePre
		;;
	--post)
		#check if the package is initialized
		if ! ${MAILPLUS_SERVER_BACKEND_BINARY} --isClusterInit; then
			exit 0
		fi

		#Actions after share set
		MailDirChangePost
		LogAction
		################################################
		# PS: Service is resumed/disabled by service framework
		################################################
		;;
	*)
		echo "Usage: $0 --sdk-mod-ver|--name|--pkg-ver|--vendor|--pre|--post"
		;;
esac