#!/bin/sh

VERSION="1.07";
CHECKURL="http://dj-bri-t.net/dev/ropatch"

clear;

echo "╔==============================================================================╗"
echo "║                           _          _____   ____                            ║"
echo "║                          | |        |  __ \ / __ \                           ║"
echo "║                          | |__   ___| |__) | |  | |                          ║"
echo "║                          | '_ \ / _ \  _  /| |  | |                          ║"
echo "║                          | | | |  __/ | \ \| |__| |                          ║"
echo '║                          |_| |_|\___|_|  \_\\\\____/                           ║'
echo "║                                                                              ║"
echo "║                   heRO Mac OS X Firewall Patcher and Booter                  ║"
echo "║                               By Brian Turchyn                               ║"
echo "║                                                                              ║"
echo "║                                 Version $VERSION                                 ║"
echo "╚==============================================================================╝\n"

sleep 1;
echo "Checking for updates...";

LATESTVERSION="$(curl -s -H 'Cache-Control: no-cache' -f $CHECKURL/VERSION)"

if [ $? -gt 0 ];
then
	echo "WARNING: unable to contact update server.";
else
	if [ "$(echo $VERSION \< $LATESTVERSION | bc)" -gt "0" ];
		then
		echo "Getting latest version...";
		curl -s -f -H 'Cache-Control: no-cache' --output "$(cd $(dirname $0); pwd -P)/.$(basename $0)" "$CHECKURL/ropatch-$LATESTVERSION.sh";
		if [ $? -eq 0 ];
			then
			chmod +x "$(cd $(dirname $0); pwd -P)/.$(basename $0)";
			mv "$(cd $(dirname $0); pwd -P)/.$(basename $0)" "$(cd $(dirname $0); pwd -P)/$(basename $0)";
			echo "Latest version downloaded! Running new version...";
			sleep 3;
			"$(cd $(dirname $0); pwd -P)/$(basename $0)";
			exit;
		else
			echo "ERROR: Cannot retrieve latest version. ";
		fi
	else
		echo "Already have the latest version."
	fi
fi
echo

echo "Patching firewall..." &&
sudo killall -9 natd
T0=$?
if [ $T0 -eq 1 ]; then exit; fi;
sudo natd -target_address 255.255.255.255 -alias_address 64.15.152.212 -reverse 2> /dev/null
T1=$?
if [ $T1 -eq 1 ]; then exit; fi;
sudo ipfw -q add 6901 divert natd ip from any to any src-port 5122,6122,6901 2> /dev/null
T2=$?
if [ $T2 -eq 1 ]; then exit; fi;
sudo ipfw -q add 6902 divert natd ip from any to any dst-port 5122,6122,6901 2> /dev/null
T3=$?
if [ $T3 -eq 1 ]; then exit; fi;

if [ $T1 -eq 0 ];
	then if [ $T2 -eq 0 ];
		then if [ $T3 -eq 0 ];
		  then
				echo "...Done!"
				echo "Launching Patcher and heRO..."

				~/Applications/CrossOver/heRO/Patcher.app/Contents/MacOS/CrossOver\ Helper\ with\ Feedback
				echo "...Done!"
			else echo "ERROR: Could not patch firewall";
		fi
		else echo "ERROR: Could not patch firewall";
	fi
	else echo "ERROR: Could not patch firewall";
fi

echo "Unpatching firewall..."

sudo ipfw -q delete 6901
T1=$?
sudo ipfw -q delete 6902
T2=$?

if [ $T1 -eq 0 ];
	then if [ $T2 -eq 0 ];
		then echo "...Done!";
		else echo "ERROR: Could not unpatch firewall";
	fi
else echo "ERROR: Could not unpatch firewall";
fi

sleep 2;
exit;