#!/bin/sh
PATH=/bin:/usr/bin:/usr/sbin:/sbin export PATH

masterserver='masterserver.com'
#preferredserverusername='deploystudio'
#preferredserverpassword='deploystudio'





################################## load balancing servers based on subnet ##################################
if [[ "$preferredserverusername" != "" ]]; then
	preferredserverauthentication="$preferredserverusername:$preferredserverpassword@"
fi
for vols in real_images images; do
	umount /Volumes/$vols/ && rmdir /Volumes/$vols/ || rm -rf /Volumes/$vols/
	sleep 1
done
tryagain=0
while [ $tryagain -le 3 ]; do
SubNet=$(/sbin/ifconfig | /usr/bin/grep "inet 10." | /usr/bin/sed "s/\./ \. /g" | /usr/bin/awk {'print $4'})

SubNet=108

case "$SubNet" in # you can add servers that don't exist and as they come online and offline they will be used accordingly
108)
	replicaServers='example1.com example2.com example3.com example4.com example5.com example6.com';;
110)
	replicaServers='example11.com example12.com example13.com example14.com example15.com example16.com';;
111)
	replicaServers='example21.com example22.com example23.com example24.com example25.com example26.com';;
*)
	replicaServers='example31.com example32.com example33.com example34.com example35.com example36.com';;
esac

while [ "$servermounted" == "" ]; do
	if [[ "$replicaServers" == "" ]]; then # no more replica servers - try the master
		preferredserver=$masterserver # if all else fails - we use the master server
		servermounted="using last resort" # if this fails, well you have bigger fish to fry
	else # we have replica servers we can try
		randomServer=($replicaServers)
		num_sus=${#randomServer[*]}
		preferredserver=$(echo ${randomServer[$((RANDOM%num_sus))]})
	fi
	ping -c 1 -t 3 $preferredserver # check to see if the server is alive
	rr=$?
	if [[ "$rr" == "0" ]]; then
		for vols in real_images images; do
			umount /Volumes/$vols/ && rmdir /Volumes/$vols/ || rm -rf /Volumes/$vols/
			sleep 1
		done
		mkdir /Volumes/real_images && mount_afp -o nobrowse afp://$preferredserverauthentication$preferredserver/images /Volumes/real_images
		sleep 3
		if [ -e /Volumes/real_images/Masters/ ]; then
			servermounted="w00t!  we got one! a red snappa!"
			echo $preferredserver
		fi
	fi
	if [[ "$servermounted" == "" ]]; then # the server failed to connect up properly - doesn't matter, we have plenty more to try!
		replicaServers=$(echo $replicaServers | sed "s/$preferredserver//")
	fi
done
if [ -e /Volumes/real_images/Masters/ ]; then
	tryagain=99
else
	servermounted=''
	tryagain=$(($tryagain+1))
	echo "try again: "$tryagain
	sleep 1
fi
done
################################## load balancing servers based on subnet ##################################



################################## create symlinks for images and create the image.dmg that defaults computers to their capible operating system ##################################
if [ ! -e /Volumes/real_images/Masters/ ]; then
	/usr/bin/osascript -e 'tell application "System Events"' -e 'activate' -e "display alert \"\nNo image servers could be mounted.\n\n\nPlease contact District Technology to resolve this issue.\n\n\" giving up after 90" -e 'end tell'
else
	mkdir -p /Volumes/images/Masters/HFS/
	# This will set the appropriate image to restore from based on computer
	if [[ "$(system_profiler SPHardwareDataType | grep 'Model Identifier' | grep 'PowerMac')" != "" ]]; then # this is a Power PC Computer
		ln -s /Volumes/real_images/Masters/HFS/Standard-10.4-PPC.dmg /Volumes/images/Masters/HFS/image.dmg
	else
		# the is an intel machine - see if this is a computer that can run 10.4 and if so, set it to do so
		machinemodel=$(system_profiler SPHardwareDataType | grep 'Model Identifier' | awk {'print $3'})
		for fn in "MacPro2,1" "MacPro1,1,Quad" "MacPro1,1" "iMac6,1" "iMac5,1" "iMac5,2" "MacBookPro2,1" "MacBookPro2,2" "MacBookPro3,1" "Macmini1,1" "Macmini2,1" "MacBook1,1" "MacBookPro1,2" "MacBookPro1,1" "iMac4,2" "iMac4,1" "MacBook2,1"; do
			if [[ "$foundOSX4x86" != "1" ]]; then
				if [[ "$fn" == "$machinemodel" ]]; then
					ln -s /Volumes/real_images/Masters/HFS/Standard-10.4-x86.dmg /Volumes/images/Masters/HFS/image.dmg
					foundOSX4x86=1
				fi
			fi
		done
		if [[ "$foundOSX4x86" != "1" ]]; then
			ln -s /Volumes/real_images/Masters/HFS/Standard-10.5.dmg /Volumes/images/Masters/HFS/image.dmg
		fi
	fi
	ln -s /Volumes/real_images/Databases /Volumes/images/Databases
	ln -s /Volumes/real_images/Logs /Volumes/images/Logs
	ln -s /Volumes/real_images/Packages /Volumes/images/Packages
	ln -s /Volumes/real_images/Scripts /Volumes/images/Scripts
	for fn in $(ls -1 /Volumes/real_images/Masters/HFS/); do
		ln -sf /Volumes/real_images/Masters/HFS/$fn /Volumes/images/Masters/HFS/$fn
	done
	chmod -R 777 /Volumes/images
	#/usr/bin/osascript -e 'tell application "System Events"' -e 'activate' -e "display alert \"\n$mountedserver server mounted.\n\n\" giving up after 90" -e 'end tell' &
	#if [[ "$(echo $1 | grep -iE "root|techadmin")" == "" ]]; then # this is not root or techadmin so auto launch Runtime
	#	sudo /Applications/Utilities/DeployStudio\ Admin.app/Contents/Resources/Runtime.app/Contents/MacOS/Runtime &
	#fi
fi
################################## create symlinks for images and create the image.dmg that defaults computers to their capible operating system ##################################



