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/DovecotUserGroupHook.sh
#!/bin/bash

###############################################################
#	This script should be hooked when invoking SYNOUserSet()
#	Usable environment variable:
#		NITEMS, ORIGIN_USER_NAME_{n}, USER_NAME_{n}, UID_{n},
#		USER_OP_RESULT_{n}, RESULT
#
#	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/scripts/DsmVersionUtil.sh

#At begining, acquire package settings
PackageInfoGet;

MAIL_SERVER_PKG="/var/packages/MailPlus-Server"
USER_SET_PLUGIN_LOCK=/var/lock/mailplus_server/user_set_lock
USER_SET_PLUGIN_FLAG=/var/lock/mailplus_server/user_set_flag
WAITING_TIME=90
GOT_LOCK=0

case $1 in
	--sdk-mod-ver)
		#Print SDK support version
		echo "1.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)
		if ! isPackageStarted; then
			exit 0
		fi

		#LOCK is used to prevent 2 hooks execute pre action at the same time
		FLOCK_FD=100
		eval "exec ${FLOCK_FD}>${USER_SET_PLUGIN_LOCK}"
		for i in $(seq 1 ${WAITING_TIME}); do
			flock -x -n "${FLOCK_FD}"
			if [ 0 -eq $? ]; then
				GOT_LOCK=1
				break
			fi
			sleep 1
		done

		#FLAG is used to prevent another hook executes pre action before last
		#post action is done
		for i in $(seq 1 ${WAITING_TIME}); do
			if [ ! -e "${USER_SET_PLUGIN_FLAG}" ]; then
				touch "${USER_SET_PLUGIN_FLAG}"
				break
			fi
			sleep 1
		done
		[ "${GOT_LOCK}" -eq 1 ] && flock -u "${FLOCK_FD}"
		;;
	--post)
		. /var/packages/MailPlus-Server/target/hook/ShareMailboxHook.sh
		isUserHook=$2
		isDeleteHook=$3

		# 1:Local User Set
		# 2:Local User Delete
		# 3:Ldap/Domain User Set
		# 4:Ldap/Domain User Delete
		# 5:Local Group Set
		# 6:Local Group Detele
		# 7:Ldap/Domain Group Rename
		# 8:Ldap/Domain Group Delete
		hookType=1
		[ "${isUserHook}" == "0" ] && hookType=$((hookType + 4))
		[ "${isDeleteHook}" == "1" ] && hookType=$((hookType + 1))
		[ -n "${SERVER_TYPE}" ] && hookType=$((hookType + 2))
		UpdateShareMailbox "${hookType}"
		rm -f "${USER_SET_PLUGIN_FLAG}"
		;;
	*)
	echo "Usage: $0 --sdk-mod-ver|--name|--pkg-ver|--vendor|--pre|--post"
		;;
esac