#!/bin/sh

PACKAGE_DEST=$SYNOPKG_PKGDEST
PRIVATE_LOCATION="/var/packages/SynologyDrive/target"
PKG_MAIL_DIR="${PRIVATE_LOCATION}/UI/texts/"
PKG_USERCONF_DIR="/usr/syno/etc/packages/SynologyDrive" # /var/packages/SynologyDrive/etc is a symlink to here
OLD_PKG_INSTALL_DIR="/var/packages/CloudStation"
OLD_PKG_USERCONF_DIR="/usr/syno/etc/packages/CloudStation"
OLD_UPGRADE_FILE="/tmp/cloudstation.upgrade"

. /var/packages/SynologyDrive/scripts/pkg_utils

# migrate from Cloud Station
if [ -d "${OLD_PKG_INSTALL_DIR}" ]; then
	logger -p 3 "Found old Cloud Station package installed, touch upgrade file to prevent remove data."
	touch "${OLD_UPGRADE_FILE}"
fi

if [ -d "${OLD_PKG_USERCONF_DIR}" ] && [ ! -f "${PKG_USERCONF_DIR}/db-path.conf" ]; then
	logger -p 3 "Found old Cloud Station package data, preserve it's data and configuration"
	mv -f "${OLD_PKG_USERCONF_DIR}"/* "${PKG_USERCONF_DIR}"
	rm -f ${BANDWIDTH_ADDON_DIR}/CloudStation_16.json
	rm -f "/usr/local/etc/nginx/conf.d/dsm.CloudStation.conf"

	# migrate apparmor rule
	${PRIVATE_LOCATION}/bin/cloud-migration --migration

	# preserve bandwidth, quickconnect, certificate, port config
else
	/usr/syno/sbin/synorelayd -a cloudstation > /dev/null 2>&1
fi

# migrate from Office
if [ -f "/var/packages/Spreadsheet/etc/AppPortal.json" ]; then
	# migrate apparmor rule
	${PRIVATE_LOCATION}/bin/cloud-migration --migration_office
fi

# prepare default config file

# copy conf settings
if [ ! -e "${PKG_USERCONF_DIR}/setting.conf" ]; then
    cp "${PRIVATE_LOCATION}/etc/setting.conf" "${PKG_USERCONF_DIR}/setting.conf"
fi

# copy SSL conf settings
if [ ! -e "${PKG_USERCONF_DIR}/ssl.conf" ]; then
    cp "${PRIVATE_LOCATION}/etc/ssl.conf" "${PKG_USERCONF_DIR}/ssl.conf"
fi

# update if exist
cp -rf "${PRIVATE_LOCATION}/etc/postgresql" "${PKG_USERCONF_DIR}"

# add mail dir infomation into config


# Copy db version mark to package conf folder.
# This mark file indicates that this db is generated in which version of Cloud Station package.
# It is used for package downgrading check.
cp -rf "${CSTN_PKG_DB_MARK_FILE}" "${CSTN_DB_MARK_FILE}"

## remove enable_status to clean up status in previous version
rm -rf "/usr/syno/etc/packages/SynologyDrive/enable_status"

# add bandwidth config addon
if [ ! -d ${BANDWIDTH_ADDON_DIR} ]; then
	mkdir -p ${BANDWIDTH_ADDON_DIR}
fi

ln -sf ${CLOUD_STATION_PACKAGE}/target/etc/bandwidth_config.json ${BANDWIDTH_ADDON_DIR}/CloudStation_16.json

# add nginx config

ln -sf ${CLOUD_STATION_PACKAGE}/target/etc/web-config/dsm.SynologyDrive.conf /usr/local/etc/nginx/conf.d/dsm.SynologyDrive.conf


# postinst for ShareSync

OLD_PACKAGE_NAME="CloudStationClient"
OLD_CONF_LOCATION="/var/packages/${OLD_PACKAGE_NAME}/etc"

if [ ! -d "${SHARESYNC_CONF_LOCATION}" ]; then
	mkdir -p "${SHARESYNC_CONF_LOCATION}"
fi

# migrate from Cloud Station ShareSync
if [ -d "${OLD_CONF_LOCATION}" ]; then
	logger -p 3 "Found old Cloud Station ShareSync data, preserve it's data and configuration"
	mv -f "${OLD_CONF_LOCATION}"/* "${SHARESYNC_CONF_LOCATION}"
fi

# rename sysdb
if [ -f "${SHARESYNC_CONF_FILE_PATH}" ]; then
	logger -p 3 "Move CloudStationShareSync db to SynologyDriveShareSync"
	DB_VOL=`/usr/syno/bin/synogetkeyvalue ${SHARESYNC_CONF_FILE_PATH} ${SHARESYNC_REPO_VOL_KEY}`;
	OLD_REPO_LOC="${DB_VOL}/@${OLD_PACKAGE_NAME}"
	REPO_LOC="${DB_VOL}/@${SHARESYNC_PACKAGE_NAME}"
	if [ -d ${OLD_REPO_LOC} ]; then
		mv -f ${OLD_REPO_LOC} ${REPO_LOC}
	fi
fi

# load default server.conf
if [ ! -e "${SHARESYNC_CONF_FILE_PATH}" ]; then
    cp -rf "${SHARESYNC_PKG_CONF_FILE_PATH}" "${SHARESYNC_CONF_FILE_PATH}"
fi

# relink to the newest apparmor of SAS
CreateAppArmorLink()
{
	local APPARMOR_PATH="${CLOUD_STATION_PACKAGE}/target/apparmor"
	local SAS_APPARMOR="/var/packages/SynologyApplicationService/target/apparmor/abstractions.pkg"
	if [ -f "${SAS_APPARMOR}/libsynopersonalnotify" ]; then
		rm -f "$APPARMOR_PATH/abstractions.pkg/libsynopersonalnotify"
		ln -sf ${SAS_APPARMOR}/libsynopersonalnotify $APPARMOR_PATH/abstractions.pkg
	fi
	if [ -f "${SAS_APPARMOR}/libsynoscim" ]; then
		rm -f "$APPARMOR_PATH/abstractions.pkg/libsynoscim"
		ln -sf ${SAS_APPARMOR}/libsynoscim $APPARMOR_PATH/abstractions.pkg
	fi
}
CreateAppArmorLink
exit 0
