diff options
Diffstat (limited to 'debian/bin')
| -rw-r--r-- | debian/bin/emby-server | 121 | ||||
| -rw-r--r-- | debian/bin/jellyfin-sudoers | 37 | ||||
| -rw-r--r-- | debian/bin/restart.sh | 18 |
3 files changed, 55 insertions, 121 deletions
diff --git a/debian/bin/emby-server b/debian/bin/emby-server deleted file mode 100644 index 704e37158..000000000 --- a/debian/bin/emby-server +++ /dev/null @@ -1,121 +0,0 @@ -#!/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 diff --git a/debian/bin/jellyfin-sudoers b/debian/bin/jellyfin-sudoers new file mode 100644 index 000000000..4eb91366b --- /dev/null +++ b/debian/bin/jellyfin-sudoers @@ -0,0 +1,37 @@ +#Allow jellyfin group to start, stop and restart itself +Cmnd_Alias RESTARTSERVER_SYSV = /sbin/service jellyfin restart, /usr/sbin/service jellyfin restart +Cmnd_Alias STARTSERVER_SYSV = /sbin/service jellyfin start, /usr/sbin/service jellyfin start +Cmnd_Alias STOPSERVER_SYSV = /sbin/service jellyfin stop, /usr/sbin/service jellyfin stop +Cmnd_Alias RESTARTSERVER_SYSTEMD = /usr/bin/systemctl restart jellyfin, /bin/systemctl restart jellyfin +Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemctl start jellyfin +Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin +Cmnd_Alias RESTARTSERVER_INITD = /etc/init.d/jellyfin restart +Cmnd_Alias STARTSERVER_INITD = /etc/init.d/jellyfin start +Cmnd_Alias STOPSERVER_INITD = /etc/init.d/jellyfin stop + + +%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSV +%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSV +%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSV +%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD +%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD +%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD +%jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_INITD +%jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_INITD +%jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_INITD + +Defaults!RESTARTSERVER_SYSV !requiretty +Defaults!STARTSERVER_SYSV !requiretty +Defaults!STOPSERVER_SYSV !requiretty +Defaults!RESTARTSERVER_SYSTEMD !requiretty +Defaults!STARTSERVER_SYSTEMD !requiretty +Defaults!STOPSERVER_SYSTEMD !requiretty +Defaults!RESTARTSERVER_INITD !requiretty +Defaults!STARTSERVER_INITD !requiretty +Defaults!STOPSERVER_INITD !requiretty + +#Allow the server to mount iso images +%jellyfin ALL=(ALL) NOPASSWD: /bin/mount +%jellyfin ALL=(ALL) NOPASSWD: /bin/umount + +Defaults:%jellyfin !requiretty diff --git a/debian/bin/restart.sh b/debian/bin/restart.sh new file mode 100644 index 000000000..a6f4632ba --- /dev/null +++ b/debian/bin/restart.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +NAME=jellyfin + +restart_cmds=("s6-svc -t /var/run/s6/services/${NAME}" \ + "systemctl restart ${NAME}" \ + "service ${NAME} restart" \ + "/etc/init.d/${NAME} restart") + +for restart_cmd in "${restart_cmds[@]}"; do + cmd=$(echo "$restart_cmd" | awk '{print $1}') + cmd_loc=$(command -v ${cmd}) + if [[ -n "$cmd_loc" ]]; then + restart_cmd=$(echo "$restart_cmd" | sed -e "s%${cmd}%${cmd_loc}%") + echo "sleep 2; sudo $restart_cmd > /dev/null 2>&1" | at now > /dev/null 2>&1 + exit 0 + fi +done |
