blob: cdb54d9116a6afb015c7136c2c1c649e2b003a36 [file] [log] [blame]
#!/usr/bin/env bash
# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#### CATEGORY=Other
### register host tools at MacOS Application Firewall
## Register host tools at MacOS Application Firewall
##
## NOTE: This script uses sudo and will thus ask for your password!
##
## -n|--dry-run Just print all steps, don't do any configuration
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $?
fx-config-read
FIREWALL_CMD="/usr/libexec/ApplicationFirewall/socketfilterfw"
# TODO(65725): produce build manifest of this information instead.
FIREWALL_TOOLS=(
ascendd
bootserver
device-finder
diag_tool
dockyard_host
ffx
loglistener
netaddr
netcp
netls
netruncmd
onet
pm
scrutiny
sockscripter
traceutil
triage
whereiscl
zxdb
)
function dryer {
if ! "$dryrun"; then
"${@}"
return $?
fi
echo >&2 "+ $@"
return 0
}
function list_tools {
TOOL_LIST="$(${FIREWALL_CMD} --listapps | grep "${FUCHSIA_DIR}" | awk '{print $3}')"
for f in "${TOOL_LIST[@]}"; do
echo "${f}"
done
}
function clear_tools {
TOOL_LIST="$(${FIREWALL_CMD} --listapps | grep "${FUCHSIA_DIR}" | awk '{print $3}')"
for f in ${TOOL_LIST}; do
dryer sudo ${FIREWALL_CMD} --remove "${f}" > /dev/null
done
}
function allow_tools {
for tool in "${FIREWALL_TOOLS[@]}"; do
for f in "${FUCHSIA_BUILD_DIR}/host-tools/${tool}" "${FUCHSIA_BUILD_DIR}"/host_*/"${tool}" "${FUCHSIA_BUILD_DIR}"/host_*/exe.unstripped/"${tool}"; do
dryer sudo ${FIREWALL_CMD} --add "$f" --unblockapp "$f" > /dev/null
done
done
}
function main {
echo " clearing firewall rules.."
clear_tools
echo " adding firewall rules.."
allow_tools
# Activate the changes
dryer sudo ${FIREWALL_CMD} --setglobalstate off > /dev/null
dryer sudo ${FIREWALL_CMD} --setglobalstate on > /dev/null
echo "..done"
echo " following tools are registered in the firewall rules:"
echo " "
list_tools
echo " "
}
dryrun=false
while [[ $# > 0 ]]; do
case "$1" in
-n|--dry-run)
fx-warn "Running in dry-run mode"
dryrun=true
;;
-h|--help|*)
fx-command-help
exit 1
;;
esac
shift
done
main