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