#!/bin/sh

PROFILE_DIR="/etc/network/profiles"
PROFILE_STATE_FILE="/var/run/network/profile"

#------------------------------------------------------------------------------
# Load current profile

PROFILE_CUR=`cat $PROFILE_STATE_FILE | awk '{print $3}'`
PROFILE_NEW="offline"

#------------------------------------------------------------------------------
# Select new profile

ADDRESS=`ifconfig $IFACE | grep inet | sed "s/:/ /" | awk '{print $3}'`

for PROFILE in $(cd $PROFILE_DIR; ls -d [a-z0-9]* 2> /dev/null); do
  PATTERNS="$PROFILE_DIR/$PROFILE/patterns"
  if [ -r "$PATTERNS" ]; then
    for PATTERN in $(cat $PATTERNS); do
      case $ADDRESS in
        ($PATTERN)
	  PROFILE_NEW=$PROFILE
	  break 2
	  ;;
      esac
    done
  fi
done

echo -n "Switching to profile "$PROFILE_NEW": "

#------------------------------------------------------------------------------
# If the new and current profiles are the same, exit here

[ "$PROFILE_NEW" != "$PROFILE_CUR" ] || exit 0

#------------------------------------------------------------------------------
# Run the Stop-Scripts for the current profile

cd $PROFILE_DIR/$PROFILE_CUR/rc.d
for SCRIPT in $(echo "K[0-9][0-9]*"); do
  if [ -n "$SCRIPT" ]; then
    echo -n "."
    case "$SCRIPT" in
      (*.sh)
        /bin/sh ./$SCRIPT stop &> /dev/null
        ;;
      (*)
        ./$SCRIPT stop &> /dev/null
        ;;
    esac
  fi
done  

#------------------------------------------------------------------------------
# Copy all profile specific files for the new profile

cd $PROFILE_DIR/$PROFILE_NEW/files.d
tar cf - . | (cd /; tar xf -)

#------------------------------------------------------------------------------
# Run Start-Scripts for the new profile

cd $PROFILE_DIR/$PROFILE_NEW/rc.d
for SCRIPT in $(echo "S[0-9][0-9]*"); do
  if [ -n "$SCRIPT" ]; then
    echo -n "."
    case "$SCRIPT" in
      (*.sh)
        /bin/sh ./$SCRIPT start &> /dev/null
        ;;
      (*)
        ./$SCRIPT start &> /dev/null
        ;;
    esac
  fi
done

#------------------------------------------------------------------------------
# Save new profile

echo $PROFILE_CUR" --> "$PROFILE_NEW > $PROFILE_STATE_FILE
echo " done."
