postinst 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/bin/bash
  2. set -e
  3. NAME=jellyfin
  4. DEFAULT_FILE=/etc/default/${NAME}
  5. # Source Jellyfin default configuration
  6. if [[ -f $DEFAULT_FILE ]]; then
  7. . $DEFAULT_FILE
  8. fi
  9. JELLYFIN_USER=${JELLYFIN_USER:-jellyfin}
  10. # Data directories for program data (cache, db), configs, and logs
  11. PROGRAMDATA=${JELLYFIN_DATA_DIRECTORY-/var/lib/$NAME}
  12. CONFIGDATA=${JELLYFIN_CONFIG_DIRECTORY-/etc/$NAME}
  13. LOGDATA=${JELLYFIN_LOG_DIRECTORY-/var/log/$NAME}
  14. CACHEDATA=${JELLYFIN_CACHE_DIRECTORY-/var/cache/$NAME}
  15. case "$1" in
  16. configure)
  17. # create jellyfin group if it does not exist
  18. if [[ -z "$(getent group ${JELLYFIN_USER})" ]]; then
  19. addgroup --quiet --system ${JELLYFIN_USER} > /dev/null 2>&1
  20. fi
  21. # create jellyfin user if it does not exist
  22. if [[ -z "$(getent passwd ${JELLYFIN_USER})" ]]; then
  23. adduser --system --ingroup ${JELLYFIN_USER} --shell /bin/false ${JELLYFIN_USER} --no-create-home --home ${PROGRAMDATA} \
  24. --gecos "Jellyfin default user" > /dev/null 2>&1
  25. fi
  26. # ensure $PROGRAMDATA exists
  27. if [[ ! -d $PROGRAMDATA ]]; then
  28. mkdir $PROGRAMDATA
  29. fi
  30. # ensure $CONFIGDATA exists
  31. if [[ ! -d $CONFIGDATA ]]; then
  32. mkdir $CONFIGDATA
  33. fi
  34. # ensure $LOGDATA exists
  35. if [[ ! -d $LOGDATA ]]; then
  36. mkdir $LOGDATA
  37. fi
  38. # ensure $CACHEDATA exists
  39. if [[ ! -d $CACHEDATA ]]; then
  40. mkdir $CACHEDATA
  41. fi
  42. # Ensure permissions are correct on all config directories
  43. chown -R ${JELLYFIN_USER} $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  44. chgrp adm $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  45. chmod 0750 $PROGRAMDATA $CONFIGDATA $LOGDATA $CACHEDATA
  46. chmod +x /usr/lib/jellyfin/restart.sh > /dev/null 2>&1 || true
  47. # Install jellyfin symlink into /usr/bin
  48. ln -sf /usr/lib/jellyfin/bin/jellyfin /usr/bin/jellyfin
  49. ;;
  50. abort-upgrade|abort-remove|abort-deconfigure)
  51. ;;
  52. *)
  53. echo "postinst called with unknown argument \`$1'" >&2
  54. exit 1
  55. ;;
  56. esac
  57. #DEBHELPER
  58. if [[ -x "/usr/bin/deb-systemd-helper" ]]; then
  59. # Manual init script handling
  60. deb-systemd-helper unmask jellyfin.service >/dev/null || true
  61. # was-enabled defaults to true, so new installations run enable.
  62. if deb-systemd-helper --quiet was-enabled jellyfin.service; then
  63. # Enables the unit on first installation, creates new
  64. # symlinks on upgrades if the unit file has changed.
  65. deb-systemd-helper enable jellyfin.service >/dev/null || true
  66. else
  67. # Update the statefile to add new symlinks (if any), which need to be
  68. # cleaned up on purge. Also remove old symlinks.
  69. deb-systemd-helper update-state jellyfin.service >/dev/null || true
  70. fi
  71. fi
  72. # End automatically added section
  73. # Automatically added by dh_installinit
  74. if [[ "$1" == "configure" ]] || [[ "$1" == "abort-upgrade" ]]; then
  75. if [[ -d "/run/systemd/systemd" ]]; then
  76. systemctl --system daemon-reload >/dev/null || true
  77. deb-systemd-invoke start jellyfin >/dev/null || true
  78. elif [[ -x "/etc/init.d/jellyfin" ]] || [[ -e "/etc/init/jellyfin.conf" ]]; then
  79. update-rc.d jellyfin defaults >/dev/null
  80. invoke-rc.d jellyfin start || exit $?
  81. fi
  82. fi
  83. exit 0