#!/bin/bash
# Startup script, MacOSX Sandbox profile for tor
#
# Copyright 2010 Robert Malmgren AB. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are
# permitted provided that the following conditions are met:
#
#   1. Redistributions of source code must retain the above copyright notice, this list of
#      conditions and the following disclaimer.
#
#   2. Redistributions in binary form must reproduce the above copyright notice, this list
#      of conditions and the following disclaimer in the documentation and/or other materials
#      provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY Robert Malmgren AB ``AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
# The views and conclusions contained in the software and documentation are those of the
# authors and should not be interpreted as representing official policies, either expressed
# or implied, of Robert Malmgren AB.
# written by andreas@romab.com

# tbb launchit script.
# this script launches tor within the macosx sandbox.
# as we do not know where the user will install the tbb, we need 
# to do some search and replace. 
#
# Also, we will need to accept arguments comming from vidalia.
# 
SW_VERS=/usr/bin/sw_vers
CUT=/usr/bin/cut
LSOF=/usr/sbin/lsof
AWK=/usr/bin/awk
TAIL=/usr/bin/tail
SED=/usr/bin/sed

#find out osx version. 

VERSION=`$SW_VERS -productVersion| $CUT -f1,2 -d .`
#determine current dir.
DIR=`$LSOF -p $$|$TAIL -1| $AWK '{ print $NF }' | $SED s/[^/]*$//`
TDIR=`echo $DIR| $SED -e 's=Contents/MacOS/==g'`
TORAPPDIR=`echo $TDIR | $SED -e 's/\/$//g'`

if [ "$VERSION"x = "10.6"x ]; then
	#we know we use 10.6 fix the sandbox, do some search and replace
	#and find current dir and the rebuild the sandbox
	#nuke the old sandbox
	echo > $DIR/tor-sandbox/tor-bin.sb
	#fix some stuff in the sandbox
	$SED -e "s=TORAPPDIR=$TORAPPDIR=g" $DIR/tor-sandbox/tor-enforce.sb >> $DIR/tor-sandbox/tor-bin.sb	
	/usr/bin/sandbox-exec -f $DIR/tor-sandbox/tor-bin.sb ${DIR}/tor-bin $@ 
fi

if [ "$VERSION"x = "10.5"x ]; then
	#10.5 use the policy written for 10.5 
	#nuke the old sandbox
	echo > $DIR/tor-sandbox/tor-bin.sb
	#fix some stuff in the sandbox
	$SED -e "s=TORAPPDIR=$TORAPPDIR=g" $DIR/tor-sandbox/tor-enforce-10.5.sb >> $DIR/tor-sandbox/tor-bin.sb	
	/usr/bin/sandbox-exec -f $DIR/tor-sandbox/tor-bin.sb ${DIR}/tor-bin $@ 
fi
