aboutsummaryrefslogtreecommitdiff
path: root/debian/preinst
blob: 2ce29a0cf1bd78b8fc9b3ce960cc16145c9b24da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
set -e

NAME=jellyfin
CONF_FILE=/etc/${NAME}.conf
DEFAULT_FILE=/etc/default/${NAME}

# Source Jellyfin default configuration
if [[ -f $DEFAULT_FILE ]]; then
  . $DEFAULT_FILE
fi

# Source Jellyfin user configuration overrides
if [[ -f $CONF_FILE ]]; then
  . $CONF_FILE
fi

# Data directory where Jellyfin database, cache and logs are stored
PROGRAMDATA=${JELLYFIN_DATA-/var/lib/$NAME}

# In case this system is running systemd, we make systemd reload the unit files
# to pick up changes.
if [[ -d /run/systemd/system ]] ; then
  systemctl --system daemon-reload >/dev/null || true
fi

case "$1" in
  install|upgrade)
    # try graceful termination;
    if [[ -d /run/systemd/system ]]; then
      deb-systemd-invoke stop ${NAME}.service > /dev/null 2>&1 || true
    elif [ -x "/etc/init.d/${NAME}" ] || [ -e "/etc/init/${NAME}.conf" ]; then
      invoke-rc.d ${NAME} stop > /dev/null 2>&1 || true
    fi
    # try and figure out if jellyfin is running
    PIDFILE=$(find /var/run/ -maxdepth 1 -mindepth 1  -name "jellyfin*.pid" -print -quit)
    [[ -n "$PIDFILE" ]] && [[ -s "$PIDFILE" ]] && JELLYFIN_PID=$(cat ${PIDFILE})
    # if its running, let's stop it
    if [[ -n "$JELLYFIN_PID" ]]; then
      echo "Stopping Jellyfin!"
      # if jellyfin is still running, kill it
      if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
        CPIDS=$(pgrep -P $JELLYFIN_PID)
        sleep 2 && kill -KILL $CPIDS
        kill -TERM $CPIDS > /dev/null 2>&1
      fi
      sleep 1
      # if it's still running, show error
      if [[ -n "$(ps -p $JELLYFIN_PID -o pid=)" ]]; then
        echo "Could not successfully stop JellyfinServer, please do so before uninstalling."
        exit 1
      else
        [[ -f $PIDFILE ]] && rm $PIDFILE
      fi
    fi

    # Clean up old Emby cruft that can break the user's system
    [[ -f /etc/sudoers.d/emby ]] && rm -f /etc/sudoers.d/emby

    ;;
  abort-upgrade)
    ;;
  *)
    echo "preinst called with unknown argument \`$1'" >&2
    exit 1
    ;;
esac
#DEBHELPER#

exit 0