Merge pull request #4615 from strugee/fix-restart.sh

This commit is contained in:
Claus Vium 2021-09-06 13:53:23 +02:00 committed by GitHub
commit 06242121c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 68 additions and 29 deletions

40
debian/bin/restart.sh vendored
View File

@ -11,23 +11,43 @@
#
# This script is used by the Debian/Ubuntu/Fedora/CentOS packages.
get_service_command() {
for command in systemctl service; do
if which $command &>/dev/null; then
echo $command && return
# This is the Right Way(tm) to check if we are booted with
# systemd, according to sd_booted(3)
if [ -d /run/systemd/system ]; then
cmd=systemctl
else
# Everything else is really hard to figure out, so we just use
# service(8) if it's available - that works with most init
# systems/distributions I know of, including FreeBSD
if type service >/dev/null 2>&1; then
cmd=service
else
# If even service(8) isn't available, we just try /etc/init.d
# and hope for the best
if [ -d /etc/init.d ]; then
cmd=sysv
else
echo "Unable to detect a way to restart Jellyfin; bailing out" 1>&2
echo "Please report this bug to https://github.com/jellyfin/jellyfin/issues" 1>&2
exit 1
fi
done
echo "sysv"
}
fi
fi
if type sudo >/dev/null 2>&1; then
sudo_command=sudo
else
sudo_command=
fi
cmd="$( get_service_command )"
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
case $cmd in
'systemctl')
echo "sleep 0.5; /usr/bin/sudo $( which systemctl ) start jellyfin" | at now
# Without systemd-run here, `jellyfin.service`'s shutdown terminates this process too
$sudo_command systemd-run systemctl restart jellyfin
;;
'service')
echo "sleep 0.5; /usr/bin/sudo $( which service ) jellyfin start" | at now
echo "sleep 0.5; $sudo_command service jellyfin start" | at now
;;
'sysv')
echo "sleep 0.5; /usr/bin/sudo /etc/init.d/jellyfin start" | at now

View File

@ -2,9 +2,9 @@
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_SYSTEMD = /usr/bin/systemd-run systemctl restart jellyfin
Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemd-run systemctl start jellyfin
Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemd-run 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

2
debian/control vendored
View File

@ -23,6 +23,6 @@ Depends: at,
libfontconfig1,
libfreetype6,
libssl1.1
Recommends: jellyfin-web
Recommends: jellyfin-web, sudo
Description: Jellyfin is the Free Software Media System.
This package provides the Jellyfin server backend and API.

View File

@ -40,7 +40,7 @@ Jellyfin is a free software media system that puts you in control of managing an
Summary: The Free Software Media System Server backend
Requires(pre): shadow-utils
Requires: ffmpeg
Requires: libcurl, fontconfig, freetype, openssl, glibc, libicu, at
Requires: libcurl, fontconfig, freetype, openssl, glibc, libicu, at, sudo
%description server
The Jellyfin media server backend.

View File

@ -1,8 +1,7 @@
# Allow jellyfin group to start, stop and restart itself
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_SYSTEMD = /usr/bin/systemd-run systemctl restart jellyfin
Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemd-run systemctl start jellyfin
Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemd-run systemctl stop jellyfin
jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD
jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD

View File

@ -11,23 +11,43 @@
#
# This script is used by the Debian/Ubuntu/Fedora/CentOS packages.
get_service_command() {
for command in systemctl service; do
if which $command &>/dev/null; then
echo $command && return
# This is the Right Way(tm) to check if we are booted with
# systemd, according to sd_booted(3)
if [ -d /run/systemd/system ]; then
cmd=systemctl
else
# Everything else is really hard to figure out, so we just use
# service(8) if it's available - that works with most init
# systems/distributions I know of, including FreeBSD
if type service >/dev/null 2>&1; then
cmd=service
else
# If even service(8) isn't available, we just try /etc/init.d
# and hope for the best
if [ -d /etc/init.d ]; then
cmd=sysv
else
echo "Unable to detect a way to restart Jellyfin; bailing out" 1>&2
echo "Please report this bug to https://github.com/jellyfin/jellyfin/issues" 1>&2
exit 1
fi
done
echo "sysv"
}
fi
fi
if type sudo >/dev/null 2>&1; then
sudo_command=sudo
else
sudo_command=
fi
cmd="$( get_service_command )"
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
case $cmd in
'systemctl')
echo "sleep 0.5; /usr/bin/sudo $( which systemctl ) start jellyfin" | at now
# Without systemd-run here, `jellyfin.service`'s shutdown terminates this process too
$sudo_command systemd-run systemctl restart jellyfin
;;
'service')
echo "sleep 0.5; /usr/bin/sudo $( which service ) jellyfin start" | at now
echo "sleep 0.5; $sudo_command service jellyfin start" | at now
;;
'sysv')
echo "sleep 0.5; /usr/bin/sudo /etc/init.d/jellyfin start" | at now