-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxy_switch.sh
More file actions
executable file
·152 lines (135 loc) · 3.91 KB
/
proxy_switch.sh
File metadata and controls
executable file
·152 lines (135 loc) · 3.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/bash
ORANGE='\033[0;33m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
###########################
# The command line help #
###########################
display_help() {
echo "Usage: $0 [option...] {on|off}" >&2
echo
echo " -i, --info displays the proxy settings"
echo
echo "Proxy settings must be set in ~/.proxy.conf as follow:"
echo "USER=\"user\""
echo "PASSWORD=\"user\""
echo "HOST=\"host\""
echo "PORT=\"port\""
exit 1
}
###########################
# Display proxy settings #
###########################
display_proxy_settings() {
source $HOME/.proxy.conf
echo "Proxy configurations are set in ~/.proxy.conf with current values:"
echo -e " User: ${ORANGE}$USER${NC}"
echo -e " Password: ${ORANGE}$PASSWORD${NC}"
echo -e " Host: ${ORANGE}$HOST${NC}"
echo -e " Port: ${ORANGE}$PORT${NC}"
echo
}
###########################
# Set proxy method #
###########################
set_proxy() {
source $HOME/.proxy.conf
PROXY="http://$USER:$PASSWORD@$HOST:$PORT/"
echo -e "From now on, you will use the following proxy settings: ${ORANGE}$PROXY${NC}"
echo " NOTE: Those proxy settings are sourced from ~/.proxy.conf"
# Global proxy
eval `export proxy=$PROXY`
echo -e " Global proxy: ${GREEN}on${NC}"
# Global http_proxy
eval `export http_proxy=$PROXY`
eval `export HTTP_PROXY=$PROXY`
echo -e " Global http_proxy: ${GREEN}on${NC}"
# Global https_proxy
eval `export https_proxy=$PROXYl`
eval `export HTTPS_PROXY=$PROXYl`
echo -e " Global https_proxy: ${GREEN}on${NC}"
# NPM proxy
eval `npm config set proxy $PROXY`
eval `npm config set https-proxy $PROXY`
echo -e " NPM proxy: ${GREEN}on${NC}"
# GIT proxy
eval `git config --global http.proxy $PROXY`
eval `git config --global https.proxy $PROXY`
echo -e " GIT proxy: ${GREEN}on${NC}"
# cURL proxy
if [ ! -e "$HOME/.curlrc" ]; then
touch "$HOME/.curlrc"
fi
echo "proxy=$PROXY" >> $HOME/.curlrc
echo -e " cURL proxy: ${GREEN}on${NC}"
echo -e "${YELLOW} > All proxy settings are on${NC}"
}
###########################
# Unset proxy method #
###########################
unset_proxy() {
# Global proxy
eval `unset proxy`
# Global http_proxy
eval `unset http_proxy`
eval `unset HTTP_PROXY`
echo -e " Global proxy: ${RED}off${NC}"
# Global https_proxy
eval `unset https_proxy`
eval `unset HTTPS_PROXY`
echo -e " Global HTTPS proxy: ${RED}off${NC}"
# NPM proxy
eval `npm config delete proxy`
eval `npm config delete https-proxy`
echo -e " NPM proxy: ${RED}off${NC}"
# GIT proxy
eval `git config --global --unset http.proxy`
eval `git config --global --unset https.proxy`
echo -e " GIT proxy: ${RED}off${NC}"
# cURL proxy
if [ -e "$HOME/.curlrc" ]; then
sed -i "/proxy\=/d" $HOME/.curlrc
fi
echo -e " cURL proxy: ${RED}off${NC}"
echo -e "${YELLOW} > All proxy settings have been unset${NC}"
}
################################
# Check if parameters options #
# are given on the commandline #
################################
# If no arguments: display help.
if [ -z "$1" ]
then
display_help
fi
# If help required: display help.
for arg in "$@"; do
case "$arg" in
-h | --help)
display_help
;;
esac
done
# If info required: display proxy settings.
for arg in "$@"; do
case "$arg" in
-i | --info)
display_proxy_settings # Call your function
;;
esac
done
# set / unset proxy.
for arg in "$@"; do
case "$arg" in
on)
set_proxy # calling function set_proxy()
exit 1
;;
off)
unset_proxy # calling function unset_proxy()
exit 1
;;
esac
done