Skip to content

Instantly share code, notes, and snippets.

@crowne
Forked from patik/.bashrc
Created August 12, 2016 12:27
Show Gist options
  • Save crowne/2e6ded91f93ab88252386b05fa632c47 to your computer and use it in GitHub Desktop.
Save crowne/2e6ded91f93ab88252386b05fa632c47 to your computer and use it in GitHub Desktop.
Bash configure proxy for corporate network
# configure proxy for git while on corporate network
# From https://gist.github.com/garystafford/8196920
function proxy_on(){
# assumes $USERDOMAIN, $USERNAME, $USERDNSDOMAIN
# are existing Windows system-level environment variables
# assumes $PASSWORD, $PROXY_SERVER, $PROXY_PORT
# are existing Windows current user-level environment variables (your user)
# environment variables are UPPERCASE even in git bash
export HTTP_PROXY="http://$USERNAME:$PASSWORD@$PROXY_SERVER:$PROXY_PORT"
export HTTPS_PROXY=$HTTP_PROXY
export FTP_PROXY=$HTTP_PROXY
export SOCKS_PROXY=$HTTP_PROXY
export NO_PROXY="localhost,127.0.0.1,$USERDNSDOMAIN"
# Update git and npm to use the proxy
git config --global http.proxy $HTTP_PROXY
git config --system http.sslcainfo /bin/curl-ca-bundle.crt
git config --global http.sslcainfo /bin/curl-ca-bundle.crt
# npm config set proxy $HTTP_PROXY
# npm config set https-proxy $HTTP_PROXY
# npm config set strict-ssl false
# npm config set registry "http://registry.npmjs.org/"
# optional for debugging
export GIT_CURL_VERBOSE=1
# optional Self Signed SSL certs and
# internal CA certificate in an corporate environment
export GIT_SSL_NO_VERIFY=1
env | grep -e _PROXY -e GIT_ | sort
# echo -e "\nProxy-related environment variables set."
# clear
}
# Enable proxy settings immediately
proxy_on
# Disable proxy settings
function proxy_off(){
variables=( \
"HTTP_PROXY" "HTTPS_PROXY" "FTP_PROXY" "SOCKS_PROXY" \
"NO_PROXY" "GIT_CURL_VERBOSE" "GIT_SSL_NO_VERIFY" \
)
for i in "${variables[@]}"
do
unset $i
done
env | grep -e _PROXY -e GIT_ | sort
echo -e "\nProxy-related environment variables removed."
}

This will automatically set the proxy variables when you launch a bash shell. At any time you can type proxy_off to disable them.

You may need to hardcode your password, proxy server, and proxy port on line 11. Just replace each $VAR_NAME with the actual value.

Put this file in your home directory. Make sure the file is called .bashrc with nothing before the dot — if you're on Windows, try saving it from a decent text editor like Sublime Text or Notepad++ as Explorer will not let you name a file in this way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment