#!/bin/sh
# synopkgland: the SDK steps run in synopkgland_sdk; the App's dsm-scripts/postuninst runs from scripts/app/postuninst.
synopkgland_sdk() (
set -eu
PKGVAR="${SYNOPKG_PKGVAR:-/var/packages/SynoPkgGopeed/var}"
PKGHOME="${SYNOPKG_PKGHOME:-/var/packages/SynoPkgGopeed/home}"
PKGETC="/var/packages/SynoPkgGopeed/etc"
if [ ! -e "$PKGETC" ] && [ -n "${SYNOPKG_PKGDEST_VOL:-}" ]; then
  PKGETC="$SYNOPKG_PKGDEST_VOL/@appconf/SynoPkgGopeed"
fi
remove_additional=0
if [ "${SYNOPKG_PKG_STATUS:-}" != UPGRADE ]; then
  for flag in "${pkgwizard_remove_additional:-}" "${wizard_pkgwizard_remove_additional:-}" "${delete_app_data:-}" "${wizard_delete_app_data:-}"; do
    case "$flag" in
      true|True|TRUE|yes|1) remove_additional=1 ;;
    esac
  done
fi
if [ "$remove_additional" -eq 1 ]; then
  app_pkg='SynoPkgGopeed'
  volume_base='/volume'
  is_package_area() {
    rest=${1#"$volume_base"}
    [ "$rest" != "$1" ] || return 1
    number=${rest%%/*}
    case "$number" in
      ""|*[!0-9]*) return 1 ;;
    esac
    case "${rest#*/}" in
      "@$2/$app_pkg"|"@$2/$app_pkg"/*) return 0 ;;
    esac
    return 1
  }
  delete_root() {
    target="$1"
    area="$2"
    if [ -z "$target" ]; then
      return 0
    fi
    if [ ! -e "$target" ] && [ ! -L "$target" ]; then
      return 0
    fi
    real=$(readlink -f "$target" 2>/dev/null || true)
    if ! is_package_area "$real" "$area"; then
      echo "Delete App Data skipped unsafe path: $target" >&2
      return 0
    fi
    chmod -R u+w "$real" 2>/dev/null || true
    if [ -d "$real" ]; then
      find "$real" -mindepth 1 -maxdepth 1 -exec rm -rf {} + 2>/dev/null || true
      leftover=$(find "$real" -mindepth 1 -maxdepth 1 2>/dev/null | head -n 1 || true)
      if [ -n "$leftover" ]; then
        echo "Delete App Data remnant: $real" >&2
      fi
    else
      rm -f "$real" || echo "Delete App Data remnant: $real" >&2
    fi
  }
  delete_root "$PKGVAR" appdata
  delete_root "$PKGHOME" apphome
  delete_root "$PKGETC" appconf
fi
exit 0
)
synopkgland_app="$(dirname "$0")/app/postuninst"
synopkgland_sdk "$@" || exit $?
exec "$synopkgland_app" "$@"
