#!/bin/bash
#
# chkconfig: 34 96 4
# description: prepare beronet environment

### BEGIN INIT INFO
# Provides: omgberonet
# Required-Start: $network $local_fs $remote_fs 
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: setup for beronet
# Description: setup for beronet
### END INIT INFO

echo "$0 start: $(date)" >> /tmp/sequence

#
# some inits
#

# color => new RH6.0 bootup
# verbose => old-style bootup
# anything else => new style bootup without ANSI colors or positioning
BOOTUP=color
# column to start "[  OK  ]" label in 
RES_COL=60
# terminal sequence to move to that column. You could change this
# to something like "tput hpa ${RES_COL}" if your terminal supports it
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
# terminal sequence to set color to a 'success' color (currently: green)
SETCOLOR_SUCCESS="echo -en \\033[0;32m"
# terminal sequence to set color to a 'failure' color (currently: red)
SETCOLOR_FAILURE="echo -en \\033[0;31m"
# terminal sequence to set color to a 'warning' color (currently: yellow)
SETCOLOR_WARNING="echo -en \\033[0;33m"
# terminal sequence to reset to the default color.
SETCOLOR_NORMAL="echo -en \\033[0;39m"

echo_success() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
  echo -n $"  OK  "
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 0
}
echo_failure() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
  echo -n $"FAILED"
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 1
}

echo_info() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
  echo -n $" INFO "
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 1
}

echo_warning() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
  echo -n $" WARN "
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 1
}


touser () {
    echo "$@"
}
touserOk (){
    echo -n "$@"
    echo_success
    echo
}
touserFail (){
    echo -n "$@"
    echo_failure
    echo
}
touserWarn (){
    echo -n "$@"
    echo_warning
    echo
}
touserInfo (){
    echo -n "$@"
    echo_info
    echo
}

start () {
    if  cat /sys/class/net/eth*/address | grep -q d8:df:0d ; then
	touserOk "is Beronet hardware"

        #do network stuff
        rm -f /data/eeprom.old
        mv /data/eeprom /data/eeprom.old
        cat /data/eeprom.old | grep -v IP2_ > /data/eeprom
        cat /data/eeprom
        cat >>/data/eeprom <<-EOF
			IP2_ADDRESS=192.168.245.1
			IP2_DHCPMODE=STATIC
			IP2_DHCPMODE_6=AUTO
			IP2_MASK=255.255.255.252
		EOF
	omgsetnetwork
        service network restart
        
	mac=$(bfdetect -b192.168.245.1 -D | grep "mac:" | sed -e "s/.*mac: \([^ \t]*\).*/\1/")
	if [ ! -z mac ]; then
   	    if bfdetect -b192.168.245.1 -a${mac} -i192.168.245.2 -n255.255.255.252 -g192.168.245.1 -znone -s >/dev/nulll 2>/dev/null ; then
	        touserOk "Beronet network config done"
            else
                touserFail "can't set Beronet network config"
            fi
	fi

        #do apache stuff
        cat >/etc/httpd/conf.d/0000_berofix.conf <<-EOF
			Listen 8081
			<VirtualHost *:8081>
			    AllowEncodedSlashes On
			    ProxyPass / http://192.168.245.2/ nocanon
			    ProxyPassReverse / http://192.168.245.2/
			    <Proxy *>
			        Order deny,allow
			        allow from all
			    </Proxy>
			</VirtualHost>
		EOF
    fi
    touserOk "disable Beronet check"
    /sbin/chkconfig omgberonet off
}

stop () {
    echo "nothing to stop"
}

# See how we were called.
case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    status)
	svstatus
	;;
    restart|force-reload)
	stop
	start
	;;
    try-restart|condrestart)
	if status $prog > /dev/null; then
	    stop
	    start
	fi
	;;
    reload)
	exit 3
	;;
    *)
	echo $"Usage: $0 {start|stop|status}"
	exit 2
esac
