Created
June 13, 2016 23:01
-
-
Save Kyle-Falconer/e3e82ee1b20200e24b0592c09d2b8ff9 to your computer and use it in GitHub Desktop.
Proxy Autostart/auto-configure shell script for Mac OS 10.11.5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Proxy Autostart/auto-configure for Mac OS 10.11.5 | |
# written by Kyle Falconer <Kyle.Falconer@vta.org> June 2016 | |
# | |
# cntlm was setup using the instructions found at: | |
# http://blog.hoachuck.biz/blog/2013/03/21/howto-set-cntlm-on-mac-os-x/ | |
# | |
# cntlm autostarts using launchctl | |
# see the plist at | |
# ~/Library/LaunchAgents/org.vta.cntlm.daemon.plist | |
WIFI_INTERFACE="en0" | |
ETHERNET_INTERFACE="en4" | |
INTRANET_ADDR="thehub.vta.org" | |
INTERNET_ADDR="google.com" | |
COLOR_RED="\033[91m" | |
COLOR_GREEN="\033[92m" | |
COLOR_RESET="\033[0m" | |
ifactive () { | |
if [ "`ifconfig | sed -n '/^'$1'/,/^[a-z]/ s/.*status: \(.*\)$/\1/p'`" = "active" ]; then | |
echo "true" | |
else | |
echo "false" | |
fi | |
} | |
boolping () { | |
ping -oc 2 $1 > /dev/null 2>&1 | |
if [ $? -eq 0 ]; then | |
echo "true" | |
else | |
echo "false" | |
fi | |
} | |
ETHERNET_UP=$(ifactive $ETHERNET_INTERFACE) | |
WIFI_UP=$(ifactive $WIFI_INTERFACE) | |
INTERNET_UP=$(boolping $INTERNET_ADDR) | |
INTRANET_UP=$(boolping $INTRANET_ADDR) | |
# The proxy should be enabled if on the intranet over ethernet | |
if [ $INTRANET_UP = "true" -a $ETHERNET_UP = "true" ]; then | |
# echo "setting up proxy settings" | |
# standard env vars | |
export http_proxy=http://localhost:3128 | |
export https_proxy=https://localhost:3128 | |
export all_proxy=http://localhost:3128 | |
# application-specific | |
alias curl="curl -x ${http_proxy}" | |
npm config set proxy ${http_proxy} | |
npm config set registry http://registry.npmjs.org/ | |
git config --global http.proxy ${http_proxy} > /dev/null 2>&1 | |
PROXY_STATUS="true" | |
else | |
# echo "turning off proxy settings" | |
# standard env vars | |
unset http_proxy | |
unset https_proxy | |
unset all_proxy | |
# application-specific | |
npm config set registry https://registry.npmjs.org/ | |
npm config delete proxy | |
npm config delete https-proxy | |
git config --global --unset http.proxy > /dev/null 2>&1 | |
PROXY_STATUS="false" | |
fi | |
ETHERNET_STATUS=$([ $ETHERNET_UP = "true" ] && echo $COLOR_GREEN"up"$COLOR_RESET || echo $COLOR_RED"down"$COLOR_RESET ) | |
WIFI_STATUS=$([ $WIFI_UP = "true" ] && echo $COLOR_GREEN"up"$COLOR_RESET || echo $COLOR_RED"down"$COLOR_RESET ) | |
INTRANET_STATUS=$([ $INTRANET_UP = "true" ] && echo $COLOR_GREEN"up"$COLOR_RESET || echo $COLOR_RED"down"$COLOR_RESET ) | |
INTERNET_STATUS=$([ $INTERNET_UP = "true" ] && echo $COLOR_GREEN"up"$COLOR_RESET || echo $COLOR_RED"down"$COLOR_RESET ) | |
PROXY_STATUS=$([ $PROXY_STATUS = "true" ] && echo $COLOR_GREEN"enabled"$COLOR_RESET || echo $COLOR_RED"disabled"$COLOR_RESET ) | |
printf 'Ethernet: %s, WiFi: %s, intranet: %s, internet: %s, proxy: %s\n' "$ETHERNET_STATUS" "$WIFI_STATUS" "$INTRANET_STATUS" "$INTERNET_STATUS" "$PROXY_STATUS" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment