mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 13:57:14 -04:00
122 lines
3.8 KiB
Bash
122 lines
3.8 KiB
Bash
#!/bin/bash
|
|
# vim:set ft=sh sw=2 sts=2 st=2 et:
|
|
# Author: HurricaneHernandez <carlos@techbyte.ca>
|
|
# Modified for CentOS/Fedora by: FC7 <casasfernando@outlook.com>
|
|
|
|
DESC=EmbyServer
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
NAME=emby-server
|
|
CONF_FILE=/etc/${NAME}.conf
|
|
DEFAULT_FILE=/etc/default/${NAME}
|
|
SCRIPTNAME=/usr/bin/emby-server
|
|
|
|
# Source Emby server default configuration
|
|
. $DEFAULT_FILE
|
|
|
|
# Source Emby server user configuration overrides
|
|
if [[ -f $CONF_FILE ]]; then
|
|
. $CONF_FILE
|
|
else
|
|
echo "${CONF_FILE} not found using default settings.";
|
|
fi
|
|
|
|
# Ensure the runas user has restart privilege to restart the service if not try to add the user to emby group. WARN on failure
|
|
if [[ "$EMBY_USER" != "emby" ]]; then
|
|
groups $EMBY_USER | grep -q emby
|
|
if [[ $? -ne 0 ]]; then
|
|
if [[ $EUID -eq 0 ]]; then
|
|
usermod -a -G emby $EMBY_USER
|
|
else
|
|
echo "WARNING: The runas user is not part of emby group and you don't have enough privileges to add it. The restart button in the GUI will probably fail."
|
|
echo "To solve this start the emby-server service using the startup scripts (systemd/sysv) or"
|
|
echo "add the runas user ($EMBY_USER) to the emby group manually and restart Emby."
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Data directory where Emby database, cache and logs are stored
|
|
PROGRAMDATA=$EMBY_DATA
|
|
PROGRAMDATA_OPT="-programdata $PROGRAMDATA"
|
|
|
|
# Path to store PID file
|
|
PIDFILE=$EMBY_PIDFILE
|
|
|
|
# Full path of Emby binary
|
|
EMBY_EXEC=$EMBY_BIN
|
|
|
|
# Path of emby program files
|
|
EMBY_PATH=$EMBY_DIR
|
|
|
|
# path to mono bin
|
|
MONO_EXEC=$MONO_BIN
|
|
|
|
# umask
|
|
UMASK=${UMASK:-002}
|
|
|
|
# Mono environment variables
|
|
MAGICK_HOME_ENV="MAGICK_HOME=${EMBY_PATH}"
|
|
EMBY_LIBRARY_PATH=$(find /usr/lib/emby-server/ -maxdepth 1 -mindepth 1 -type d| grep -v bin | grep -v etc | grep -v -e "/\.")
|
|
MAGICK_CODER_FILTER_PATH_ENV="MAGICK_CODER_FILTER_PATH=$(find ${EMBY_LIBRARY_PATH} -type d -name "filters" | grep EmbyMagick)"
|
|
MAGICK_CODER_MODULE_PATH_ENV="MAGICK_CODER_MODULE_PATH=$(find ${EMBY_LIBRARY_PATH} -type d -name "coders" | grep EmbyMagick)"
|
|
MONO_EXEC_ENV="$MONO_ENV ${EMBY_LIBRARY_PATH:+"LD_LIBRARY_PATH=${EMBY_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"}"
|
|
|
|
# Mono options
|
|
MONO_EXEC_OPTS=$MONO_OPTS
|
|
|
|
# restart function
|
|
RESTART_OPTS="-restartpath ${EMBY_PATH}/restart.sh"
|
|
|
|
# Emby options
|
|
EMBY_OPTS="$PROGRAMDATA_OPT $RESTART_OPTS $EMBY_ADD_OPTS"
|
|
|
|
PID_PATH=$(dirname $PIDFILE)
|
|
|
|
# Exit if the mono-sgen not installed
|
|
if [[ ! -x $MONO_EXEC ]]; then
|
|
if [[ -n "$(command -v mono-sgen)" ]]; then
|
|
MONO_EXEC=$(command -v mono-sgen)
|
|
else
|
|
MONO_EXEC=$(command -v mono)
|
|
fi
|
|
fi
|
|
|
|
# Create programdata directory if not exist and ensure the emby user can write to it
|
|
if [[ ! -d $PROGRAMDATA ]]; then
|
|
if [[ $EUID -eq 0 ]]; then
|
|
mkdir -p $PROGRAMDATA
|
|
else
|
|
echo "WARNING: $EMBY_DATA directory does not exist."
|
|
echo "To solve this, if it is an upgrade verify that \"EMBY_DATA\" is set to the correct path in /etc/emby-server.conf."
|
|
echo "You may need to locate the path of your library files and set EMBY_DATA to that path."
|
|
echo "If this is an new installation please rerun last command with elevated permissions."
|
|
fi
|
|
fi
|
|
|
|
# Set right permission for directories
|
|
DATA_CURRENT_USER=$(ls -lad $PROGRAMDATA | awk '{print $3}')
|
|
|
|
if [[ "$DATA_CURRENT_USER" != "$EMBY_USER" ]]; then
|
|
if [[ $EUID -eq 0 ]]; then
|
|
chown -R $EMBY_USER.$EMBY_GROUP $PROGRAMDATA
|
|
else
|
|
echo "WARNING: $EMBY_DATA directory does not have the correct permissions."
|
|
echo "Please rerun this script with elevated permissions."
|
|
fi
|
|
fi
|
|
|
|
case "$1" in
|
|
start)
|
|
echo $$ > $PIDFILE
|
|
exec su -s /bin/sh -c 'umask $0; exec "$1" "$@"' $EMBY_USER -- \
|
|
$UMASK env $MAGICK_HOME_ENV $MAGICK_CODER_FILTER_PATH_ENV $MAGICK_CODER_MODULE_PATH_ENV \
|
|
$MONO_EXEC_ENV $MONO_EXEC $MONO_EXEC_OPTS $EMBY_EXEC $EMBY_OPTS
|
|
;;
|
|
clear)
|
|
[[ -e $PIDFILE ]] && rm -rf $PIDFILE
|
|
;;
|
|
*)
|
|
echo "Usage: $SCRIPTNAME {start|clear}" >&2
|
|
exit 3
|
|
;;
|
|
esac
|