#!/bin/sh

#########################################################
#
# This scripts checks for change in the client IP address 
# If the IP was changed 
#
# 1. calls the myip.org update script MOC-lynx for 
#    updating the dynamic DNS at myhostname.myip.org
# 2. uploads the new IP to an external servr using CGI
#
# Usefull if using modem dial up or DHCP assigned IP 
# from cable modem service. Go to myip.org to register 
# for free dynamic dns service and download MOC-lynx script
#
# Craetes the following files
#
# 1. oldip.txt - the last IP of the client 
# 2. newip.txt - the new IP of the client
# 3. logip.txt - any error messages 
#
# Run the script as a cronjob maybe once every hour/day ?
#
# $crontab -e
# 1 1 * * * /home/foo/dynamo/dynamo.sh 1> /dev/null 2>/dev/null
#
# kishan@hackorama.com www.hackorama.com December 2001
#
##########################################################

# this is where the  scripts and config files are
# MOC-lynx , MOC-lynx.conf and this script dynamo.sh 
BASE=/home/foo/dynamo

# The URL for the CGI script on remote server 
IPCGI="http://www.foo.com/cgi-bin/dynamo.cgi?ip="

# change if you have multiple interfaces 
INTERFACE=eth0

# change if you have installed lynx in a non standard location
LYNX=/usr/bin/lynx

####### NORMALLY NO CHANGES BEYOND THIS ##################

UPDATEIP=$BASE/MOC-lynx

OLDFILE=$BASE/oldip.txt
NEWFILE=$BASE/newip.txt
LOGFILE=$BASE/logip.txt

OLDIP=`cat $OLDFILE`
NEWIP=`/sbin/ifconfig $INTERFACE | /usr/bin/awk '/inet /{print $2}' | tr -d '[:alpha:]: '`
echo $NEWIP > $NEWFILE

if [ $OLDIP = $NEWIP ]
then
	## echo "SAME OLD $NEWIP $OLDIP" ##
	exit
else
	echo "----------------------------" >> $LOGFILE
	date >> $LOGFILE
	
	if [ $NEWIP = ERROR ]
	then
		echo "ERROR GETTING IP" >> $LOGFILE
		exit
	fi
	
	cp $NEWFILE $OLDFILE
	
	echo "$NEWIP" >> $LOGFILE

	OK=`$LYNX $IPCGI$NEWIP -dump`
	if [ $OK = OK ]
	then
		echo "CGI: $OK" >> $LOGFILE
	else
		echo "CGI FAIL: $OK" >> $LOGFILE
	fi

	## CALL THE MYIP.ORG SCRIPT MOC-lynx ##

	RESULT=`$UPDATEIP`
	SAMEIP=`echo $RESULT | grep identical | wc -l`
	if [ $SAMEIP =  1 ]
	then
		echo "MYIP.ORG SAYS ITS SAME" >> $LOGFILE
	else
		echo "MYIP.ORG UPDATE VERBOSE" >> $LOGFILE
	fi
	echo "$RESULT" >> $LOGFILE
fi




syntax highlighted by Code2HTML, v. 0.9