#!/bin/bash

#  
#  GeoIP update & notification script
#      Written By:  Sean Donner
#             11/05/2004
#


############CHANGE THESE VARIABLES#############

# Point these two variables to the .bin and 
# .idx files to be used for GeoIP

GEO_BIN="http://www.cookinglinux.org/geoip/db/geoipdb.bin"
GEO_IDX="http://www.cookinglinux.org/geoip/db/geoipdb.idx"

# Optional Feature to notify by Email when the
# database is updated.  Default is off, set to
# 1 to turn on.

EMAIL="0"
MAIL_FROM="geoip@domain.com"
RCPT_TO="geoip@domain.com"

##########DO NOT EDIT BELOW THIS LINE##########

function update_db 
{
	curl -s "${GEO_BIN}" --output /var/geoip/geoipdb.bin
	curl -s "${GEO_IDX}" --output /var/geoip/geoipdb.idx
}	

if [[ ! -d /var/geoip ]]; then
	mkdir /var/geoip
	chmod 755 /var/geoip
	chown root.root /var/geoip
	curl -Is "${GEO_BIN}" | grep "Last-Modified:" > /var/geoip/geoipdb.last 
	update_db
fi

if [[ ! -f /var/geoip/geoipdb.last ]]; then
	curl -Is "${GEO_BIN}" | grep "Last-Modified:" > /var/geoip/geoipdb.last
	update_db
fi

curl -Is "${GEO_BIN}" | grep "Last-Modified:" > /tmp/geoipdb.last 

if ! diff /tmp/geoipdb.last /var/geoip/geoipdb.last; then
	update_db
	mv /tmp/geoipdb.last /var/geoip/geoipdb.last

	if [[ "${EMAIL}" = "1" ]]; then
		MESSAGE="The GeoIP Database has been upgraded to the following date:"
		MODDATE=`cat /var/geoip/geoipdb.last | cut -d ' ' -f 2-5`
		mail -s "GeoIP Database Updated" -r "${MAIL_FROM}" "${RCPT_TO}"<<-EOF
		${MESSAGE} ${MODDATE}
		EOF
	fi

else
	rm /tmp/geoipdb.last
fi
