#!/bin/bash
# By SISalp http://sisalp.fr
#
option="$1"
shift
interface="$1"
shift
mail_addr="$*"
case "$option" in
--version|version|-v)
	echo "version 2.0 22 feb 2020"
	exit 0
	;;
--help|help|-h|?)
	echo "$0 Usage:"
	echo "$0 --help|-h"
	echo "$0 --update|-u"
	echo "$0 --version|-v"
	echo "$0 --watch|-w interface [[-b bcc-addr] [-c cc-addr] receipient@domaine.fqdn] "
	exit 0
	;;
--update|update|-u)
	cd /usr/local/bin
	mv MONIP rescue.MONIP
	if wget -q http://download.sisalp.net/scripts/MONIP ; then
		chmod 755 MONIP
		diff rescue.MONIP MONIP
		exit 0
	else
		rm -f MONIP
		mv rescue.MONIP MONIP
		echo "failure during download of wget http://download.sisalp.net/scripts/MONIP"
		exit 1
	fi
	;;
--watch|watch|-w)
	if [ ! -d /usr/local/etc/MONIP ] ; then
		mkdir /usr/local/etc/MONIP
	fi
	rm -f /tmp/get_public_ip.tmp*
	if ! wget http://myip.dnsomatic.com -O /tmp/get_public_ip.tmp ; then
		echo "`date` cannot get public Ip from http://myip.dnsomatic.com"
		exit 1
	fi
	PublicIp=`cat /tmp/get_public_ip.tmp`
	#rm -f /tmp/get_public_ip.tmp*
	LocalIp=`/sbin/ifconfig | grep -A 2 "$interface" | grep -m 1 "inet "| awk '{print $2}'`
	if [ -f /usr/local/etc/MONIP/monip.last ] ; then
		LastIp=`cat /usr/local/etc/MONIP/monip.last`
	else
		LastIp="Unknown"
	fi
	NewIp="Local IP is $LocalIp, Public IP is $PublicIp"
	PastIp="Local IP was $LocalIp, Public IP was $PublicIp"
	case "$PastIp" in
	$LastIp)
		case "$mail_addr" in
		*@*)
			echo "`date` IP has not changed"
			;;
		*)
			echo "`date` $NewIp"
			;;
		esac
		;;
	*)
		case "$mail_addr" in
		*@*)
		        echo "`date` $LastIp, $NewIp" | mail -s "[MONIP $HOSTNAME] $NewIp" $mail_addr
			echo "`date` $LastIp, $NewIp New IP is sent"
			;;
		*)
			echo "`date` $LastIp, $NewIp"
			;;
		esac
		echo "$PastIp" > /usr/local/etc/MONIP/monip.last
		;;
	esac
	exit 0
	;;
*)
	$0 --help
	exit 1
	;;
esac

exit 0

