#!/sbin/sh
# Copyright 2013 Koushik Dutta, 2014 Ron Rieve
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# arg 1 is recovery api version, generally 3.
# arg 2 is the pipe fd, to the recovery binary.
# communicate with it using the recovery api.
# arg 3 is the zip file

echo -n -e 'ui_print Installing F-DroidPrivilegedExtension...\n' > /proc/self/fd/$2

FPE_NAME=F-DroidPrivilegedExtension
FPE=${FPE_NAME}.apk
FDROID_NAME=F-Droid
FDROID=${FDROID_NAME}.apk
PERM_DIR="etc/permissions"
PERM=permissions_org.fdroid.fdroid.privileged.xml
ADDOND=80-fdroid.sh
SYSTEM="/system"
MOUNT_POINT="/system"
BUILD_VERSION_SDK="$(getprop ro.build.version.sdk)"
BUILD_VERSION_SDK_INT="${BUILD_VERSION_SDK#*=}"

# Modern devices use /system as root ("/")
system_as_root=`getprop ro.build.system_root_image`
if [ "$system_as_root" == "true" ]; then
  SYSTEM="/system/system"
fi

# Android 10 (SDK 29) and above use /mnt/system/ and /mnt/system/system
if [ "${BUILD_VERSION_SDK_INT}" -ge 29 ]; then
  SYSTEM="/mnt/system/system"
  MOUNT_POINT="/mnt/system"
fi

cd /tmp
mkdir fdroid
cd fdroid
unzip -o "$3"

if mountpoint -q "$MOUNT_POINT"; then
  mount -o remount,rw "$MOUNT_POINT"
else
  mount "/dev/block/bootdevice/by-name/system" "$MOUNT_POINT"
fi

rm -rf "${SYSTEM}/app/FDroid"*
rm -rf "${SYSTEM}/priv-app/FDroid"*
rm -rf "${SYSTEM}/app/F-Droid"*
rm -rf "${SYSTEM}/priv-app/F-Droid"*

if [ "${BUILD_VERSION_SDK_INT}" -ge 21 ]
then
  FPE_DIR="${SYSTEM}/priv-app/${FPE_NAME}"
  mkdir ${FPE_DIR}
  chmod 755 ${FPE_DIR}
  FDROIDDIR="${SYSTEM}/app/${FDROID_NAME}"
  mkdir ${FDROIDDIR}
  chmod 755 ${FDROIDDIR}
elif [ "${BUILD_VERSION_SDK_INT}" -ge 19 ]
then
  FPE_DIR="${SYSTEM}/priv-app"
  FDROIDDIR="${SYSTEM}/app"
else
  FPE_DIR="${SYSTEM}/app"
  FDROIDDIR="${SYSTEM}/app"
fi

if [ "${BUILD_VERSION_SDK_INT}" -ge 26 ]
then
	mkdir ${SYSTEM}/${PERM_DIR}
	chmod 755 ${SYSTEM}/${PERM_DIR}
	cp ${PERM} ${SYSTEM}/${PERM_DIR}
	chmod 644 ${SYSTEM}/${PERM_DIR}/${PERM}
fi

cp ${FPE} ${FPE_DIR}
chmod 644 ${FPE_DIR}/${FPE}
echo -n -e 'ui_print done\n' > /proc/self/fd/$2
echo -n -e 'ui_print\n' > /proc/self/fd/$2

echo -n -e 'ui_print Installing F-Droid...\n' > /proc/self/fd/$2
cp ${FDROID} ${FDROIDDIR}
chmod 644 ${FDROIDDIR}/${FDROID}

cp ${ADDOND} ${SYSTEM}/addon.d/

umount "$MOUNT_POINT"

echo -n -e 'ui_print done\n' > /proc/self/fd/$2
echo -n -e 'ui_print\n' > /proc/self/fd/$2
