#! /bin/bash

# Author:   deelkar@gmx.de
#
# Script:   /usr/local/bin/connectiontest
#
# Version:  7.3.1
# 
# Requires: +online--7.3.3+, +reconnect--7.3.1+, +dual--7.3.1+, +single--7.3.1+, bash 
#
# Public:   yes

# Copyright (C) 2002 "Dirk-Lueder Kreie" <deelkar@gmx.de>
#
# This program is free software; you can redistribute it and/or modify it 
# under the terms of the GNU General Public License as published by the Free 
# Software Foundation; either version 2 of the License, or (at your option) 
# any later version. 
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details. 
# 
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the 
#
# Free Software Foundation, Inc.
# 59 Temple Place, Suite 330
# Boston, MA 02111-1307
# USA. 

# exit 0

lckfile="/var/sysflags/connectiontest"

trap "rm $lckfile; exit" SIGHUP SIGINT SIGTERM

if [ "`find $lckfile -cmin +15 2>&1`" = "$lckfile" ]; then
  test -e $lckfile && rm $lckfile
  echo `date`" - Warning: old lockfile \"$lckfile\" exists"
fi

if [ -e $lckfile ]; then
  echo `date`" - Fatal: lockfile \"$lckfile\" exists"
  exit 1
fi

touch $lckfile
chmod 666 $lckfile

# find out external interface from routing table
EXT_IF=$(for I in $(/sbin/route -n|grep ^0.0.0.0); do echo $I; done | tail -n1)

# check if ext if is ppp device, make sure ppp device is ppp0 and not ppp1 or other
if echo $EXT_IF | grep -q ppp; then
  echo $EXT_IF | grep -q ppp0 || /etc/init.d/net.ppp0 restart
fi

# check if default servers from "online" script are reachable, else restart pppd
#/usr/local/bin/online 4 20 || /etc/init.d/net.ppp0 restart

# check if IPv6 is usable, or restart HE tunnel
/usr/local/bin/online6 || /usr/local/bin/ipv6tunnel

# check if MASQUERADING is on, else restart
if /usr/local/bin/masquerade status 2>/dev/null | grep -q MASQUERADE 2>/dev/null; then
  true
else
  echo "NAT is OFF"
  sleep 1
  /usr/local/bin/masquerade restart
fi


rm $lckfile
