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: //usr/syno/plugin/user_set/synocgi-libexec.user_set.sh
#!/bin/sh

SYNOCGID_BINARY=/usr/syno/sbin/synocgitool

SYNOCGID_PKG_NAME="synocgid"
SYNOCGID_PKG_VERSION="1.0"
SYNOCGID_PKG_VENDOR="Synology Inc."
SYNOCGID_PKG_MODVER="1.0"

case $1 in
	--sdk-mod-ver)
		echo ${SYNOCGID_PKG_MODVER}
	;;
	--name)
		echo ${SYNOCGID_PKG_NAME}
	;;
	--pkg-ver)
		echo ${SYNOCGID_PKG_VERSION}
	;;
	--vendor)
		echo ${SYNOCGID_PKG_VENDOR}
	;;
	--pre)
	;;
	--post)
		if [ -f "${SYNOCGID_BINARY}" ]; then
			INDEX=1
			while [ "${INDEX}" -le "${NITEMS}" ]
			do
				eval "OP_RET=\$USER_OP_RESULT_${INDEX}"
				if [ "0x0000" == "${OP_RET}" ]; then
					eval "ORIGIN_USER=\$ORIGIN_USER_NAME_${INDEX}"

					if [ -n "${ORIGIN_USER}" ]; then
						eval "USER=\$USER_NAME_$INDEX"
						if [ "${USER}" != "${ORIGIN_USER}" ]; then
							logger -p user.warn -t synocgitool "hook[user_set] Username changed([${ORIGIN_USER}] -> [${USER}]) - Kick user[${ORIGIN_USER}]"
							${SYNOCGID_BINARY} --kick_user_session "${ORIGIN_USER}"
							/bin/sqlite3 /usr/syno/etc/private/session/syno-pam-key.db "UPDATE key SET user='${USER}' WHERE user='${ORIGIN_USER}'"
						fi
						/usr/syno/sbin/synouser  --get "${ORIGIN_USER}" | grep  "Expired"|grep true
						if [ $? == 0 ]; then
							logger -p user.warn -t synocgitool "hook[user_set] Username expired([${ORIGIN_USER}]) - Kick user[${ORIGIN_USER}]"
							${SYNOCGID_BINARY} --kick_user_session "${ORIGIN_USER}"
						fi
					fi
				fi
				INDEX=$((INDEX + 1))
			done
		fi
		;;
	*)
		echo "Usage: $0 --sdk-mod-ver|--name|--pkg-ver|--vendor|--pre|--post"
	;;
esac