#!/bin/sh # macOS-Fortress: Firewall, Blackhole, and Privatizing Proxy # for Trackers, Attackers, Malware, Adware, and Spammers # macos_fortress_setup_check.sh # commands SUDO=/usr/bin/sudo PORT=/opt/local/bin/port LAUNCHCTL=/bin/launchctl PFCTL=/sbin/pfctl KILLALL=/usr/bin/killall CAT=/bin/cat SED=/usr/bin/sed GREP=/usr/bin/grep EGREP=/usr/bin/egrep ECHO=/bin/echo PFCTL=/sbin/pfctl HEAD=/usr/bin/head TAIL=/usr/bin/tail LSOF=/usr/sbin/lsof KILLALL=/usr/bin/killall PS=/bin/ps WC=/usr/bin/wc CURL=/usr/bin/curl AWK=/usr/bin/awk HOSTNAME=/bin/hostname JSC=/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Helpers/jsc PROXY_HOSTNAME="${PROXY_HOSTNAME:-@PROXY_HOSTNAME@}" LAUNCHDAEMONS=/Library/LaunchDaemons # apache for proxy.pac if ! [ -d /Applications/Server.app ] then # macOS native apache server for proxy.pac PROXY_PAC_DIRECTORY="${PROXY_PAC_DIRECTORY:-@PROXY_PAC_DIRECTORY@}" else # macOS Server for proxy.pac PROXY_PAC_DIRECTORY="${PROXY_PAC_DIRECTORY:-/Library/WebServer/Sites/${PROXY_HOSTNAME}}" fi fname_exists () { [ -f "${FNAME}" ] && echo "[✅] ${FNAME} exists" || echo "[❌] ${FNAME} DOESN'T EXIST!"; } # print launchd status, or echo "# comment line" launchctl_check () { "${EGREP}" -q -e '^(\d+|-)+\s[0]' <<< "${LINE}" && echo "[✅]\t${LINE}" || echo "[❌]\t${LINE}"; } # launchctl_check () { [ "${PLIST##\#*}" == "" ] && echo "${PLIST}" || ( [ -f "${LAUNCHDAEMONS}/${PLIST}" ] && ( LINE=`"${SUDO}" "${LAUNCHCTL}" list | "${EGREP}" -e $(echo "${PLIST}" | "${SED}" -e 's/.plist$//')'$'`; "${EGREP}" -q -e '^(\d+|-)+\s[0]' <<< "${LINE}" && echo "[✅] ${LINE}" || "[❌] ${LINE}" ) || echo "[❌] ${LAUNCHDAEMONS}/${PLIST}: NOT INSTALLED!"; ) } "${CAT}" </dev/null 2>&1 \ && echo "[✅] PAC ${PROXY_PAC_DIRECTORY}/proxy.pac.orig passes Javascript parsing" \ || echo "[❌] PAC ${PROXY_PAC_DIRECTORY}/proxy.pac.orig fails Javascript parsing" ; \ fi if [ -x "${JSC}" -a -f "${PROXY_PAC_DIRECTORY}/proxy.pac" ]; then \ "${JSC}" "${PROXY_PAC_DIRECTORY}/proxy.pac" >/dev/null 2>&1 \ && echo "[✅] PAC ${PROXY_PAC_DIRECTORY}/proxy.pac passes Javascript parsing" \ || echo "[❌] PAC ${PROXY_PAC_DIRECTORY}/proxy.pac fails Javascript parsing" ; \ fi # proxy.pac on proxy server if [[ `"${CURL}" -s --head "http://${PROXY_HOSTNAME}/proxy.pac" | "${HEAD}" -n 1 | "${GREP}" "HTTP/1.\d [23]\d\d"` ]]; then echo "[✅] Web server for http://${PROXY_HOSTNAME}/proxy.pac is running properly" else "${CAT}" <