#!/bin/bash # 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" if [ -f $SFW ]; then # Duplicating these commands on purpose as the symbolic link node might be # linked to either out/Debug/node or out/Release/node depending on the # BUILDTYPE. $SFW --remove "$NODE_DEBUG" $SFW --remove "$NODE_DEBUG" $SFW --remove "$NODE_RELEASE" $SFW --remove "$NODE_RELEASE" $SFW --remove "$NODE_LINK" $SFW --remove "$CCTEST_DEBUG" $SFW --remove "$CCTEST_RELEASE" $SFW --remove "$OPENSSL_CLI_DEBUG" $SFW --remove "$OPENSSL_CLI_RELEASE" $SFW --add "$NODE_DEBUG" $SFW --add "$NODE_RELEASE" $SFW --add "$NODE_LINK" $SFW --add "$CCTEST_DEBUG" $SFW --add "$CCTEST_RELEASE" $SFW --add "$OPENSSL_CLI_DEBUG" $SFW --add "$OPENSSL_CLI_RELEASE" $SFW --unblock "$NODE_DEBUG" $SFW --unblock "$NODE_RELEASE" $SFW --unblock "$NODE_LINK" $SFW --unblock "$CCTEST_DEBUG" $SFW --unblock "$CCTEST_RELEASE" $SFW --unblock "$OPENSSL_CLI_DEBUG" $SFW --unblock "$OPENSSL_CLI_RELEASE" else echo "SocketFirewall not found in location: $SFW" fi