#!/bin/sh
#
#   Launch BSD Installer with fake "installer root"
#   Copyright 2004-2009 Scott Ullrich
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions are met:
#   
#   1. Redistributions of source code must retain the above copyright notice,
#      this list of conditions and the following disclaimer.
#   
#   2. Redistributions in binary form must reproduce the above copyright
#      notice, this list of conditions and the following disclaimer in the
#      documentation and/or other materials provided with the distribution.
#   
#   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
#   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
#   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
#   AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
#   OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#   POSSIBILITY OF SUCH DAMAGE.

_conf_suffix=""
_msg_suffix=""
if [ "${1}" = "rescue" ]; then
	_conf_suffix="_rescue"
	_msg_suffix=" config.xml rescue"
fi

globals_inc="/etc/inc/globals.inc"
if [ -f /etc/inc/globals_override.inc ]; then
	globals_inc="/etc/inc/globals_override.inc ${globals_inc}"
fi
product=$(cat ${globals_inc} | \
	grep product_name | \
	head -n 1 | \
	sed 's/^.*=>* *//; s/["\;,]*//g')
factory_shipped_password=$(cat ${globals_inc} | \
	grep factory_shipped_password | \
	head -n 1 | \
	sed 's/^.*=>* *//; s/["\;,]*//g')
factory_shipped_username=$(cat ${globals_inc} | \
	grep factory_shipped_username | \
	head -n 1 | \
	sed 's/^.*=>* *//; s/["\;,]*//g')

echo
echo "Launching ${product} Installer${_msg_suffix}..."
echo

# Ensure install-session.sh exists where the installation was recorded to
touch /tmp/install-session.sh

/sbin/sysctl kern.geom.debugflags=16
/sbin/sysctl net.link.ether.inet.log_arp_wrong_iface=0 >/dev/null

/sbin/ifconfig lo0 127.0.0.1/24
/sbin/ifconfig lo0 up

# Check if host is running on VMware -- early boot
if [ `dmesg -a | grep VMware | wc -l` -gt 0 ]; then
	touch /var/IS_VMWARE
fi

# Check if host is running on VMware
if [ -f /var/log/dmesg.boot ]; then
	if [ `cat /var/log/dmesg.boot | /usr/bin/grep VMware | /usr/bin/wc -l` -gt 0 ]; then
		echo -n "VMware detected.  The installer will make changes to tune this host."
	        touch /var/IS_VMWARE
		sleep 1
		echo -n "."
		sleep 1
		echo -n "."
		sleep 1
		echo -n "."
		sleep 1
		echo "."
	fi

	if [ -f /var/run/dmesg.boot ]; then
		ln -s /var/log/dmesg.boot /var/run/dmesg.boot
	fi
fi

echo "One moment please..."
echo

echo -n "LUA_CPATH='/usr/local/lib/lua/5.0/?.so' exec /usr/local/bin/lua50 -l/usr/local/share/lua/5.0/compat-5.1.lua " > /tmp/lua50c51

echo "/usr/local/share/dfuibe_lua/main.lua \
/usr/local/share/dfuibe_lua/conf/BSDInstaller.lua \
/usr/local/share/dfuibe_lua/conf/FreeBSD.lua \
/usr/local/share/dfuibe_lua/conf/pfSense${_conf_suffix}.lua " >> /tmp/lua50c51

#/sbin/conscontrol mute on >/dev/null 2>&1

sh /tmp/lua50c51 >/dev/null 2>&1 &

sleep 1

echo Launching Installer NCurses frontend...
/usr/local/sbin/dfuife_curses

#/sbin/conscontrol mute off >/dev/null 2>&1

if [ ! -f /tmp/install_complete ]; then
	echo Installation did not finish correctly.
	exit
fi

clear

echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo "${product} is now rebooting"
echo
echo "After the reboot is complete, open a web browser and"
echo "enter https://192.168.1.1 (or the LAN IP Address) in the"
echo "location bar."
echo
echo "You might need to acknowledge the HTTPS certificate if "
echo "your browser reports it as untrusted.  This is normal"
echo "as a self-signed certificate is used by default."
echo
echo "*DEFAULT Username*: ${factory_shipped_username}"
echo "*DEFAULT Password*: ${factory_shipped_password}"
echo

echo Rebooting in 5 seconds.  CTRL-C to abort.
sleep 1
echo Rebooting in 4 seconds.  CTRL-C to abort.
sleep 1
echo Rebooting in 3 seconds.  CTRL-C to abort.
sleep 1
echo Rebooting in 2 seconds.  CTRL-C to abort.
sleep 1
echo Rebooting in 1 second..  CTRL-C to abort.
sleep 1
echo
echo ${product} is now rebooting.
echo

reboot

