#!/system/bin/sh

if [ -z "$cache_log" ];then
	if [ -f /cache/phh/flash ];then
		rm -f /cache/phh/flash
	else
		exit 0
	fi
	cache_log=1 exec /system/bin/sh -x "$0" > /cache/phh/logs 2>&1
fi

#init.rc hooks are based on "0" (non-configfs) or "1" (configfs), so set it to 2 so that noone is triggered
if [ -z "$nosystem" ];then
	configfs="$(getprop sys.usb.configfs)"
	export configfs
	setprop sys.usb.configfs 2
	setprop service.adb.tcp.port 5555

	mount -o private,recursive rootfs /

	mkdir /dev/new-system/
	chmod 0755 /dev/new-system
	mkdir /dev/old-system

	cp -R --preserve=all /system/lib64 /dev/new-system/lib64
	cp -R --preserve=all /system/lib /dev/new-system/lib
	cp -R --preserve=all /system/bin /dev/new-system/bin
	cp -R --preserve=all /system/xbin /dev/new-system/xbin
	cp -R --preserve=all /system/etc /dev/new-system/etc

	getprop | \
	    grep -e restarting -e running | \
	    sed -nE -e 's/\[([^]]*).*/\1/g'  -e 's/init.svc.(.*)/\1/p' |
	    while read svc ;do
		setprop ctl.stop $svc
	    done

	setenforce 0
	umount /sbin/adbd
	mount -o move /system /dev/old-system
	/dev/new-system/bin/busybox_phh mount -o bind /dev/new-system /system
	nosystem=1 exec /system/bin/sh -x "$0"
fi

umount /dev/old-system
setprop service.adb.root 1

if [ "$configfs" == 1 ];then
	mount -t configfs none /config
	rm -Rf /config/usb_gadget
	mkdir -p /config/usb_gadget/g1

	echo 0x12d1 > /config/usb_gadget/g1/idVendor
	echo 0x103A > /config/usb_gadget/g1/idProduct
	mkdir -p /config/usb_gadget/g1/strings/0x409
	echo phh > /config/usb_gadget/g1/strings/0x409/serialnumber
	echo phh > /config/usb_gadget/g1/strings/0x409/manufacturer
	echo phh > /config/usb_gadget/g1/strings/0x409/product

	mkdir /config/usb_gadget/g1/functions/ffs.adb
	mkdir /config/usb_gadget/g1/functions/mtp.gs0
	mkdir /config/usb_gadget/g1/functions/ptp.gs1

	mkdir /config/usb_gadget/g1/configs/c.1/
	mkdir /config/usb_gadget/g1/configs/c.1/strings/0x409
	echo 'ADB MTP' > /config/usb_gadget/g1/configs/c.1/strings/0x409/configuration

	mkdir /dev/usb-ffs
	chmod 0770 /dev/usb-ffs
	chown shell:shell /dev/usb-ffs
	mkdir /dev/usb-ffs/adb/
	chmod 0770 /dev/usb-ffs/adb
	chown shell:shell /dev/usb-ffs/adb

	mount -t functionfs -o uid=2000,gid=2000 adb /dev/usb-ffs/adb

	/dev/new-system/bin/adbd &

	sleep 1
	echo none > /config/usb_gadget/g1/UDC
	ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/c.1/f1
	echo ff100000.dwc3 > /config/usb_gadget/g1/UDC

	sleep 2
	echo 2 > /sys/devices/virtual/android_usb/android0/port_mode
else
	mkdir /dev/usb-ffs
	chmod 0770 /dev/usb-ffs
	chown shell:shell /dev/usb-ffs
	mkdir /dev/usb-ffs/adb/
	chmod 0770 /dev/usb-ffs/adb
	chown shell:shell /dev/usb-ffs/adb

	mount -t functionfs -o uid=2000,gid=2000 adb /dev/usb-ffs/adb
	echo adb > /sys/class/android_usb/android0/f_ffs/aliases
	setprop sys.usb.config adb

	echo 0 > /sys/class/android_usb/android0/enable
	echo 18d1 > /sys/class/android_usb/android0/idVendor
	echo 4EE7 > /sys/class/android_usb/android0/idProduct 4EE7
	echo adb > /sys/class/android_usb/android0/functions
	getprop ro.boot.serialno |tr -d '\n' |cat > /sys/class/android_usb/android0/iSerial
	echo phh > /sys/class/android_usb/android0/iManufacturer
	echo phh > /sys/class/android_usb/android0/iProduct
	echo 1 > /sys/class/android_usb/android0/enable

	/dev/new-system/bin/adbd &
fi


death() {
	sleep 180
	reboot
}

dev="$(sed -n 1p /cache/phh/block.map)"
                    devbase="$(echo $dev | sed -nE 's;(/dev/block/.*/)userdata;\1;p')"
[ -z "$devbase" ] && devbase="$(echo $dev | sed -nE 's;(/dev/block/.*/)data;\1;p')"
[ -z "$devbase" ] && devbase="$(echo $dev | sed -nE 's;(/dev/block/.*/)USERDATA;\1;p')"
for i in system system_a SYSTEM;do
	v="$devbase/$i"
	[ -b "$v" ] && system="$v"
done
#Failed...
[ -z "$system" ] && death

blockdev --setrw "$system"

size="$(sed -En '2s/^([0-9]+) .*/\1/p' /cache/phh/block.map)"
block_size="$(sed -En '2s/.* ([0-9]*)$/\1/p' /cache/phh/block.map)"
n_ranges="$(sed -n 3p /cache/phh/block.map)"
block_id=0
for i in $(seq 1 $n_ranges);do
	range_start="$(sed -En $((i+3))'s/^([0-9]+) .*/\1/p' /cache/phh/block.map)"
	range_end="$(sed -En $((i+3))'s/^.* ([0-9]+)$/\1/p' /cache/phh/block.map)"
	n_blocks=$((range_end-range_start))
	busybox_phh dd bs=$block_size skip=$range_start seek=$block_id count=$n_blocks if=$dev of=$system

	block_id=$((block_id+n_blocks))
done

sync
reboot
