#!/bin/sh -e
# Filename:      debnet
# Purpose:       scan for Debian-style network configs and enable it on the system
# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports:   see http://grml.org/bugs/
# License:       This file is licensed under GPL v2+.
################################################################################

. /etc/grml/lsb-functions

if [ "$1" = "-h" -o "$1" = "--help" ] ; then
   echo "Usage: debnet"
   echo "Looks for /etc/network/interfaces on all volumes and uses it to"
   echo "configure the running system."
   echo "WARNING: The networking subsystem will be restarted."
   exit 0
fi

DEVICES="$(< /proc/partitions tail -n +3 | awk '{print "/dev/"$4}' | tr "\n" " ")"
DEVICES="$DEVICES $(ls /dev/mapper/*)"
FOUND_DEBNET=""

eindent
if ! mount | grep '/mnt ' >/dev/null 2>&1 ; then
  for i in $DEVICES; do
   if mount -o ro -t auto "$i" /mnt >/dev/null 2>&1; then
     einfo "Scanning on $i"
       if [ -f /mnt/etc/network/interfaces ]; then
         einfo "/etc/network/interfaces found on ${i}" ; eend 0
         FOUND_DEBNET="$i"
         break
       fi
     umount /mnt
   fi
  done

  if [ -n "$FOUND_DEBNET" ]; then
    einfo "Stopping network."
      pump -k >/dev/null 2>&1
      /etc/init.d/networking stop >/dev/null 2>&1 ; eend $?
    einfo "Copying Debian network configuration from $FOUND_DEBNET to running system."
      rm -rf /etc/network/run
      cp -a /mnt/etc/network /etc
      rm -rf /etc/network/run
      mkdir /etc/network/run
      umount /mnt ; eend $?
    einfo "Starting network."
      invoke-rc.d networking start ; eend $?
  else
    eerror "/etc/network/interfaces not found on external partitions." ; eend 1
  fi
  eoutdent
else
 eerror "Error: /mnt already mounted." ; eend 1
fi

# EOF
