pfsense/etc/rc.initial
Andrew Thompson 7734aea648 Make initial changes to allow pfSense to work in a jail.
This mostly avoids starting things that will not work and gets the
initial config. Most of the pfSense functionality will not work
(pf rules, routing, etc) but it can be used for testing.
2011-08-17 14:15:18 +12:00

179 lines
3.6 KiB
Bash
Executable File

#!/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 recovery console shell option has been specified
if [ -f "/tmp/donotbootup" ]; then
/usr/bin/env prompt="%B[%n@%m]%b%/(%h)||RecoveryConsoleShell: " /bin/tcsh
rm "/tmp/donotbootup"
echo "Rebooting in 5 seconds... CTRL-C to abort..."
sleep 5
/etc/rc.reboot
exit
fi
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
CONFIG="/cf/conf/config.xml"
WORD="https"
# Set our operating platform
PLATFORM=`cat /etc/platform`
if [ "$PLATFORM" = "jail" ]; then
exit
fi
# endless loop
while : ; do
if [ -f /tmp/ttybug ]; then
rm /tmp/ttybug
exit && exit && logout
fi
/etc/rc.banner
product=`grep product_name /etc/inc/globals.inc | cut -d'"' -f4`
hidebanner=`grep hidebanner /etc/inc/globals.inc | cut -d'"' -f4`
# Check to see if SSH is listening.
SSHD=`/usr/bin/sockstat -4l | grep "*.22" | wc -l`
if [ "$SSHD" -gt 0 ]; 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 ""
echo " 0) Logout (SSH only) 8) Shell"
echo " 1) Assign Interfaces 9) pfTop"
echo " 2) Set interface(s) IP address 10) Filter Logs"
echo " 3) Reset webConfigurator password 11) Restart webConfigurator"
echo " 4) Reset to factory defaults 12) ${product} Developer Shell"
echo " 5) Reboot system 13) Upgrade from console"
echo " 6) Halt system ${sshd_option}"
echo " 7) Ping host ${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/sbin/tcpdump -n -e -ttt -i pflog0
;;
11)
/etc/rc.restart_webgui
;;
12)
/usr/local/sbin/pfSsh.php
;;
13)
php -f /etc/rc.initial.firmware_update
;;
14)
php -f /etc/rc.initial.toggle_sshd
;;
15)
/etc/rc.banner
;;
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
;;
"")
kill $PPID ; exit
;;
esac
done