HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: //var/packages/FileStation/scripts/start-stop-status
#!/bin/sh
# Copyright (c) 2000-2016 Synology Inc. All rights reserved.

. "$(dirname $0)"/common
. "$(dirname $0)"/dumpstring

prepare_folder()
{
	[ -d $GVFSD_DIR ] || mkdir -p $GVFSD_DIR
	[ -d $DBUS_CONF_DIR ] || mkdir -p $DBUS_CONF_DIR
	[ -d $GIO_MODULE_DIR ] || mkdir -p $GIO_MODULE_DIR
	[ -d $SHARING_PLUGIN_SO_DIR ] || mkdir -p $SHARING_PLUGIN_SO_DIR
	[ -d $SHARING_PLUGIN_CONF_DIR ] || mkdir -p $SHARING_PLUGIN_CONF_DIR
	[ -d $VFS_MOUNT_CONF_DIR ] || mkdir -p $VFS_MOUNT_CONF_DIR
}

install_vfs_file()
{
	cp $TARGET_DIR/$DBUS_CONF_DIR/gvfs-daemon.service $DBUS_CONF_DIR/
	cp $TARGET_DIR/$GVFSD_DIR/* $GVFSD_DIR/
	cp $TARGET_DIR/lib/gio/modules/* $GIO_MODULE_DIR/
	cp $TARGET_DIR/$VFS_MOUNT_CONF_DIR/* $VFS_MOUNT_CONF_DIR
}

load_fuse_module()
{
	local FUSE_MOD=`lsmod | grep fuse`
	local SECS=1
	local CHANGE_STATUS="false"

	if [ -z "$FUSE_MOD" ] ; then
		modprobe fuse
	fi

	while [ ! -c "/dev/fuse" ] && [ $SECS -le 60 ]; do
		SECS=$((SECS + 1))
		sleep 1
	done

	sleep 3 # wait for modprobe fuse ready

	SECS=1
	while [ $CHANGE_STATUS != "true" ] && [ $SECS -le 30 ]; do
		chmod 666 /dev/fuse || echo "chmod: $?"
		chown root:users /dev/fuse || echo "chown: $?"

		local CHANGE_RESULT=`stat -c "%a:%G" /dev/fuse`

		if [ $CHANGE_RESULT == "666:users" ]; then
			CHANGE_STATUS="true"
		else
			local INODE=`stat -c "%i" /dev/fuse`
			echo "change failed, inode: $INODE"
		fi
		SECS=$((SECS + 1))
		sleep 1;
	done
}

link_webfm()
{
	remove_webfm
	# link sharing hook
	ln -sf $TARGET_DIR/template/SYNO.SDS.App.FileStation3.Instance.so $SHARING_PLUGIN_SO_DIR/
	ln -sf $TARGET_DIR/template/SYNO.SDS.App.SharingUpload.Application.so $SHARING_PLUGIN_SO_DIR/
	ln -sf $TARGET_DIR/template/SYNO.SDS.App.FileStation3.Instance $SHARING_PLUGIN_CONF_DIR/
	ln -sf $TARGET_DIR/template/SYNO.SDS.App.SharingUpload.Application $SHARING_PLUGIN_CONF_DIR/
}

remove_webfm()
{
	rm -rf $SHARING_PLUGIN_SO_DIR/SYNO.SDS.App.FileStation3.Instance.so
	rm -rf $SHARING_PLUGIN_SO_DIR/SYNO.SDS.App.SharingUpload.Application.so
	rm -rf $SHARING_PLUGIN_CONF_DIR/SYNO.SDS.App.FileStation3.Instance
	rm -rf $SHARING_PLUGIN_CONF_DIR/SYNO.SDS.App.SharingUpload.Application
}

start_vfs_service()
{
	install_vfs_file
	load_fuse_module
}

stop_vfs_service()
{
	$SYSTEMCTL stop pkg-FileStation-synovfsd
}

start()
{
	prepare_folder
	link_webfm
	start_vfs_service
	$SYSTEMCTL start pkg-FileStation-thumbd
}

stop()
{
	remove_webfm
	stop_vfs_service
	$SYSTEMCTL stop pkg-FileStation-thumbd
}

case $1 in
	start)
		start
		exit 0
		;;
	stop)
		stop
		exit 0
		;;
	status)
		if [ -f ${PACKAGE_ENABLED} ]; then
			exit 0
		else
			exit 1
		fi
		;;
	killall)
		;;
	log)
		exit 0
		;;
esac

exit 0