#!/bin/sh # Script that adds rules to Mac OS X Socket Firewall to avoid # popups asking to accept incoming network connections when # running tests. SFW="/usr/libexec/ApplicationFirewall/socketfilterfw" TOOLSDIR="$(dirname "$0")" TOOLSDIR="$(cd "$TOOLSDIR" && pwd)" ROOTDIR="$(cd "$TOOLSDIR/.." && pwd)" OUTDIR="$TOOLSDIR/../out" # Using cd and pwd here so that the path used for socketfilterfw does not # contain a '..', which seems to cause the rules to be incorrectly added # and they are not removed when this script is re-run. Instead the new # rules are simply appended. By using pwd we can get the full path # without '..' and things work as expected. OUTDIR="$(cd "$OUTDIR" && pwd)" NODE_RELEASE="$OUTDIR/Release/node" NODE_DEBUG="$OUTDIR/Debug/node" NODE_LINK="$ROOTDIR/node" CCTEST_RELEASE="$OUTDIR/Release/cctest" CCTEST_DEBUG="$OUTDIR/Debug/cctest" OPENSSL_CLI_RELEASE="$OUTDIR/Release/openssl-cli" OPENSSL_CLI_DEBUG="$OUTDIR/Debug/openssl-cli" add_and_unblock () { if [ -e "$1" ] then echo Processing "$1" $SFW --remove "$1" >/dev/null $SFW --add "$1" $SFW --unblock "$1" fi } if [ -f $SFW ]; then add_and_unblock "$NODE_DEBUG" add_and_unblock "$NODE_RELEASE" add_and_unblock "$NODE_LINK" add_and_unblock "$CCTEST_DEBUG" add_and_unblock "$CCTEST_RELEASE" add_and_unblock "$OPENSSL_CLI_DEBUG" add_and_unblock "$OPENSSL_CLI_RELEASE" else echo "SocketFirewall not found in location: $SFW" fi