mirror of https://github.com/Sonarr/Sonarr
110 lines
3.6 KiB
Bash
110 lines
3.6 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
BUILD_VERSION={version}
|
|
UPDATER={updater}
|
|
|
|
. /usr/share/debconf/confmodule
|
|
db_get sonarr/owning_user
|
|
USER="$RET"
|
|
db_get sonarr/owning_group
|
|
GROUP="$RET"
|
|
db_get sonarr/owning_umask
|
|
UMASK="$RET"
|
|
db_get sonarr/config_directory
|
|
CONFDIR="$RET"
|
|
|
|
# Add User and Group
|
|
if ! getent group "$GROUP" >/dev/null; then
|
|
groupadd "$GROUP"
|
|
fi
|
|
if ! getent passwd "$USER" >/dev/null; then
|
|
adduser --system --no-create-home --ingroup "$GROUP" "$USER"
|
|
fi
|
|
|
|
if [ $1 = "configure" ]; then
|
|
# Migrate old Sonarr v3 alpha data dir from /var/opt/sonarr or user home
|
|
if [ -d "/var/opt/sonarr" ] && [ "$CONFDIR" != "/var/opt/sonarr" ] && [ ! -d "$CONFDIR" ]; then
|
|
varoptRoot="/var/opt/sonarr"
|
|
varoptAppData="$varoptRoot/.config/Sonarr"
|
|
sonarrUserHome=`getent passwd $USER | cut -d ':' -f 6`
|
|
sonarrAppData="$sonarrUserHome/.config/Sonarr"
|
|
if [ -f "$varoptRoot/sonarr.db" ]; then
|
|
# Handle /var/opt/sonarr/sonarr.db
|
|
mv "$varoptRoot" "$CONFDIR"
|
|
elif [ -f "$varoptAppData/sonarr.db" ]; then
|
|
# Handle /var/opt/sonarr/.config/Sonarr/sonarr.db
|
|
mv "$varoptAppData" "$CONFDIR"
|
|
rm -rf "$varoptRoot"
|
|
elif [ -f "$sonarrAppData/sonarr.db" ]; then
|
|
# Handle ~/.config/Sonarr/sonarr.db
|
|
mv "$sonarrAppData" "$CONFDIR"
|
|
rm -rf "$sonarrAppData"
|
|
else
|
|
mv "$varoptRoot" "$CONFDIR"
|
|
fi
|
|
chown -R $USER:$GROUP "$CONFDIR"
|
|
chmod -R 775 "$CONFDIR"
|
|
fi
|
|
|
|
# Migrate old NzbDrone data dir
|
|
if [ -d "/usr/lib/sonarr/nzbdrone-appdata" ] && [ ! -d "$CONFDIR" ]; then
|
|
NZBDRONE_DATA=`readlink /usr/lib/sonarr/nzbdrone-appdata`
|
|
if [ -f "$NZBDRONE_DATA/config.xml" ] && [ -f "$NZBDRONE_DATA/nzbdrone.db" ]; then
|
|
echo "Found NzbDrone database in $NZBDRONE_DATA, copying to $CONFDIR."
|
|
mkdir -p "$CONFDIR"
|
|
cp $NZBDRONE_DATA/config.xml $NZBDRONE_DATA/nzbdrone.db* "$CONFDIR/"
|
|
chown -R $USER:$GROUP "$CONFDIR"
|
|
chmod -R 775 "$CONFDIR"
|
|
else
|
|
echo "Missing NzbDrone database in $NZBDRONE_DATA, skipping migration."
|
|
fi
|
|
rm /usr/lib/sonarr/nzbdrone-appdata
|
|
fi
|
|
fi
|
|
|
|
# Create data directory
|
|
if [ ! -d "$CONFDIR" ]; then
|
|
mkdir -p "$CONFDIR"
|
|
chown -R $USER:$GROUP "$CONFDIR"
|
|
fi
|
|
|
|
#BEGIN BUILTIN UPDATER
|
|
# Apply patch if present
|
|
if [ "$UPDATER" = "BuiltIn" ] && [ -f /usr/lib/sonarr/bin_patch/release_info ]; then
|
|
# It shouldn't be possible to get a wrong bin_patch, but let's check anyway and throw it away if it's wrong
|
|
currentVersion=`cat /usr/lib/sonarr/bin_patch/release_info | grep 'ReleaseVersion=' | cut -d= -f 2`
|
|
currentRelease=`echo "$currentVersion" | cut -d. -f1,2,3`
|
|
currentBuild=`echo "$currentVersion" | cut -d. -f4`
|
|
targetVersion=$BUILD_VERSION
|
|
targetRelease=`echo "$targetVersion" | cut -d. -f1,2,3`
|
|
targetBuild=`echo "$targetVersion" | cut -d. -f4`
|
|
|
|
if [ "$currentRelease" = "$targetRelease" ] && [ "$currentBuild" -gt "$targetBuild" ]; then
|
|
echo "Applying $currentVersion from BuiltIn updater instead of downgrading to $targetVersion"
|
|
rm -rf /usr/lib/sonarr/bin
|
|
mv /usr/lib/sonarr/bin_patch /usr/lib/sonarr/bin
|
|
else
|
|
rm -rf /usr/lib/sonarr/bin_patch
|
|
fi
|
|
fi
|
|
#END BUILTIN UPDATER
|
|
|
|
# Set permissions on /usr/lib/sonarr
|
|
chown -R $USER:$GROUP /usr/lib/sonarr
|
|
|
|
# Update sonarr.service file
|
|
sed -i "s:User=\w*:User=$USER:g; s:Group=\w*:Group=$GROUP:g; s:UMask=[0-9]*:UMask=$UMASK:g; s:-data=.*$:-data=$CONFDIR:g" /lib/systemd/system/sonarr.service
|
|
|
|
#BEGIN BUILTIN UPDATER
|
|
if [ "$UPDATER" = "BuiltIn" ]; then
|
|
# If we upgraded, signal Sonarr to do an update check on startup instead of scheduled.
|
|
touch $CONFDIR/update_required
|
|
chown $USER:$GROUP $CONFDIR/update_required
|
|
fi
|
|
#END BUILTIN UPDATER
|
|
|
|
#DEBHELPER#
|
|
|
|
exit 0
|