#!/bin/sh

# /etc/rc.initial
# part of pfSense by Scott Ullrich
# Copyright (C) 2004-2011 Scott Ullrich, All rights reserved.
# originally based on m0n0wall (http://neon1.net/m0n0wall)
# Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
# All rights reserved.

# make sure the user can't kill us by pressing Ctrl-C,
# ctrl-z, etc.
#trap : 2
#trap : 3
#trap : 4

if [ -f /etc/rc.local ]; then
	RCLOCALPWD=`ps awux | grep rc.local | grep -v grep | awk '{ print $2 }'`
	if [ "$RCLOCALPWD" = "" ]; then
		echo ">>> Launching rc.local in background..."
		sh /etc/rc.local &
		sleep 1
		sh /etc/rc.local.running &
	else
		if [ -f /etc/rc.local.running ]; then
			echo ">>> Launching rc.local.running in background..."
			sh /etc/rc.local.running &
		fi
	fi
fi

# Parse command line parameters
while [ $# -gt 0 ]; do
	case $1 in
		-c )	shift
			/bin/sh -c $1
			exit
			;;
		* )
	esac
	shift
done

CONFIG="/cf/conf/config.xml"
WORD="https"

# Set our operating platform
PLATFORM=`cat /etc/platform`

# endless loop
while : ; do

if [ -f /tmp/ttybug ]; then
	rm /tmp/ttybug
	exit && exit && logout
fi

/etc/rc.banner

# Read product_name from $g, defaults to pfSense
product=$(/usr/local/sbin/read_global_var product_name pfSense)

# Check to see if SSH is running.
if pgrep -q -a -F /var/run/sshd.pid sshd >/dev/null 2>&1; then
	sshd_option="14) Disable Secure Shell (sshd)";
else
	sshd_option="14) Enable Secure Shell (sshd)";
fi

for i in /var/db/pfi/capable_*; do
	if [ -f $i -a ! -L /cf/conf ]; then
		option98="98) Move configuration file to removable device"
		break
	fi
done

if [ "$PLATFORM" = "cdrom" ]; then
	option99="99) Install ${product} to a hard drive, etc."
fi

# display a cheap menu
echo ""
echo " 0) Logout (SSH only)                  9) pfTop"
echo " 1) Assign Interfaces                 10) Filter Logs"
echo " 2) Set interface(s) IP address       11) Restart webConfigurator"
echo " 3) Reset webConfigurator password    12) ${product} Developer Shell"
echo " 4) Reset to factory defaults         13) Update from console"
echo " 5) Reboot system                     ${sshd_option}"
echo " 6) Halt system                       15) Restore recent configuration"
echo " 7) Ping host                         16) Restart PHP-FPM"
echo " 8) Shell"
echo " ${option98} "

if [ "${option99}" != "" ]; then
	/bin/echo "${option99}"
fi

echo
read -p "Enter an option: " opmode
echo

# see what the user has chosen
case ${opmode} in
0)
	exit && exit && logout
	;;
1)
	/etc/rc.initial.setports
	;;
2)
	/etc/rc.initial.setlanip
	;;
3)
	/etc/rc.initial.password
	;;
4)
	/etc/rc.initial.defaults
	;;
5)
	/etc/rc.initial.reboot
	;;
6)
	/etc/rc.initial.halt
	;;
7)
	/etc/rc.initial.ping
	;;
8)
	/bin/tcsh
	;;
9)
	/usr/local/sbin/pftop
	;;
10)
	/usr/local/sbin/clog -f /var/log/filter.log
	;;
11 | 111)
	/etc/rc.restart_webgui
	;;
12)
	/usr/local/sbin/pfSsh.php
	;;
13)
	/bin/sh /usr/local/sbin/${product}-upgrade
	;;
14)
	php -f /etc/rc.initial.toggle_sshd
	;;
15)
	/etc/rc.restore_config_backup
	;;
16)
	/etc/rc.php-fpm_restart
	;;
98)
	if [ ! -f /tmp/config_moved ]; then
		/etc/rc.initial.store_config_to_removable_device
	fi
	;;
99)
	if [ -e /dev/ukbd0 ]; then
		env TERM=cons25 /scripts/lua_installer
	else
		/scripts/lua_installer
	fi
	;;
100)
	if grep "$WORD" "$CONFIG"; then
		links "https://localhost"
	else
		links "http://localhost"
	fi
	;;
"")
	ps -o command='' -c -p $PPID | grep -E '^sshd$' > /dev/null
	if [ $? -eq 0 ]; then
		exit
	else
		kill $PPID ; exit
	fi
	;;
esac

done

