84 lines
2.1 KiB
Bash
Executable file
84 lines
2.1 KiB
Bash
Executable file
#! /bin/bash
|
|
|
|
# connect to the Git repository through a SOCKS proxy
|
|
|
|
|
|
# default setting is to use port 1080 on the local host
|
|
proxy="localhost:1080"
|
|
from="default"
|
|
|
|
# check if there is a value in the git configuration
|
|
if git config --get socks.proxy >& /dev/null; then
|
|
proxy=`git config --get socks.proxy`
|
|
from="git's socks.proxy"
|
|
fi
|
|
|
|
# check if a generic proxy has been defined in the environment
|
|
if [ -n "$ALL_PROXY" ]; then
|
|
proxy="$ALL_PROXY"
|
|
from="\$ALL_PROXY"
|
|
fi
|
|
if [ -n "$all_proxy" ]; then
|
|
proxy="$all_proxy"
|
|
from="\$all_proxy"
|
|
fi
|
|
|
|
# check if a SOCKS proxy has been defined in the environment
|
|
if [ -n "$SOCKS_PROXY" ]; then
|
|
proxy="$SOCKS_PROXY"
|
|
from="\$SOCKS_PROXY"
|
|
fi
|
|
if [ -n "$socks_proxy" ]; then
|
|
proxy="$socks_proxy"
|
|
from="\$socks_proxy"
|
|
fi
|
|
if [ -n "$SOCKS5_PROXY" ]; then
|
|
proxy="$SOCKS5_PROXY"
|
|
from="\$SOCKS5_PROXY"
|
|
fi
|
|
if [ -n "$socks5_proxy" ]; then
|
|
proxy="$socks5_proxy"
|
|
from="\$socks5_proxy"
|
|
fi
|
|
|
|
# check if a git specific SOCKS proxy has been defined in the environment
|
|
if [ -n "$GIT_SOCKS_PROXY" ]; then
|
|
proxy="$GIT_SOCKS_PROXY"
|
|
from="\$GIT_SOCKS_PROXY"
|
|
fi
|
|
|
|
function usage() {
|
|
cat << @EOF
|
|
Usage:
|
|
`basename $0` HOST PORT
|
|
|
|
Helper script to connect to a Git repository over the git:// protocol at host HOST and port PORT through a SOCKS proxy at $proxy ($from).
|
|
|
|
To use the proxy for all git:// traffic, set the core.gitproxy option to "git-proxy":
|
|
|
|
git config core.gitproxy "git-proxy"
|
|
|
|
|
|
To use the proxy only for some reporitories, use the syntax explained in git-config(1).
|
|
|
|
To configure which proxy to use, set an appropriate environment variable (see below) or socks.proxy option to the proxy address, for example "localhost:1080":
|
|
|
|
git config socks.proxy "localhost:1080"
|
|
|
|
|
|
The address of the proxy is read from (in order of priority):
|
|
- the GIT_SOCKS_PROXY environment variable;
|
|
- the SOCKS_PROXY or SOCKS5_PROXY environment variable;
|
|
- the ALL_PROXY environment variable (see curl(1));
|
|
- the socks.proxy git option;
|
|
- the default value: localhost:1080 .
|
|
@EOF
|
|
}
|
|
|
|
if [ -z "$1" ] || [ -z "$2" ] || [ -n "$3" ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# connect through the specifid proxy
|
|
nc -x "$proxy" "$1" "$2"
|