#!/bin/sh

/etc/rc.conf_mount_rw

PFSENSETYPE=`cat /etc/platform`
OLDKERNEL=`cat /boot/kernel/pfsense_kernel.txt`

# Massage the existing kernel into one that actually exists.
#	Leaving old entries so we can bring back other kernels later if desired.
case "$OLDKERNEL" in
	"wrap")
	KERNELTYPE=wrap
	;;
	"Developers")
	KERNELTYPE=SMP
	;;
	"UP")
	KERNELTYPE=SMP
	;;
	"SMP")
	KERNELTYPE=SMP
	;;
	*)
	KERNELTYPE=SMP
	;;
esac

# Overwrite the old kernel type with what we're using now to reflect what is about to be written out.
echo ${KERNELTYPE} > /boot/kernel/pfsense_kernel.txt
HAVE_KERNEL=false

case "$KERNELTYPE" in
	"wrap")
		if [ -f /kernels/kernel_wrap.gz ]; then
			HAVE_KERNEL=true
			tar xzpf /kernels/kernel_wrap.gz --exclude loader.conf -C /boot/
			cp /etc/ttys_wrap /etc/ttys
		fi
		;;
	"Developers")
		if [ -f /kernels/kernel_Dev.gz ]; then
			HAVE_KERNEL=true
			tar xzpf /kernels/kernel_Dev.gz --exclude loader.conf -C /boot/
		fi
		;;
	"UP")
		if [ -f /kernels/kernel_uniprocessor.gz ]; then
			HAVE_KERNEL=true
			tar xzpf /kernels/kernel_uniprocessor.gz --exclude loader.conf -C /boot/
		fi
		;;
	"SMP")
		if [ -f /kernels/kernel_SMP.gz ]; then
			HAVE_KERNEL=true
			tar xzpf /kernels/kernel_SMP.gz --exclude loader.conf -C /boot/
		fi
		;;
esac

if [ ${HAVE_KERNEL} = "false" ]; then
	echo "ERROR: Unable to locate a kernel upgrade file!"
	sleep 5
fi

if [ $PFSENSETYPE = "pfSense" ] || [ $PFSENSETYPE = "nanobsd" ]; then
	touch /conf/needs_package_sync
fi

# Detect interactive logins and display the shell
detect_command='[ -n "$SSH_TTY" -o "$TERM" = "cons25" ] && exec /etc/rc.initial'
echo "$detect_command" > $CVS_CO_DIR/root/.shrc
echo "$detect_command" >> $CVS_CO_DIR/root/.profile

# Now turn on or off serial console as needed
/tmp/post_upgrade_command.php $1

# Remove any previous MD5 sum files
rm -f /root/*.md5

# File moved to pfSense php shell (pfSsh.php)
rm -rf /usr/local/sbin/cvs_sync.sh

if [ $PFSENSETYPE = "embedded" ]; then
	cp /etc/ttys_wrap /etc/ttys
fi

if [ -f /usr/local/sbin/php ]; then
	rm /usr/local/sbin/php
fi
