-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathenetwork
executable file
·81 lines (70 loc) · 2.04 KB
/
enetwork
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
#!/bin/bash
GatewayUsername=${SEMAPHORE_DOCKERGW_USER,-''}
GatewayPassword=${SEMAPHORE_DOCKERGW_PASSWORD,-''}
GatewayEndPoint=${SEMAPHORE_DOCKERGW_ENDPOINT,-''}
GatewayEndPointPort=${SEMAPHORE_DOCKERGW_ENDPOINT_PORT,-''}
sudo mkdir -p /etc/systemd/system/docker.service.d
en_create_proxy_conf() {
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<EOF >/dev/null
[Service]
Environment="HTTP_PROXY=http://$GatewayUsername:$GatewayPassword@$GatewayEndPoint:$GatewayEndPointPort"
Environment="HTTPS_PROXY=http://$GatewayUsername:$GatewayPassword@$GatewayEndPoint:$GatewayEndPointPort"
Environment="NO_PROXY='*.semreg.com,registry.semaphoreci.com,localhost,127.0.0.1,::1'"
EOF
}
en_start() {
proxy_url="http://${GatewayUsername}:${GatewayPassword}@${GatewayEndPoint}:${GatewayEndPointPort}"
if [ -z "${GatewayUsername}" ] || [ -z "${GatewayPassword}" ] || [ -z "${GatewayEndPoint}" ] || [ -z "${GatewayEndPointPort}" ]; then
can_set_proxy=0
else
can_set_proxy=$(curl --write-out '%{http_code}' --head --silent --output /dev/null -x "${proxy_url}" https://www.google.com)
fi
if [[ "$can_set_proxy" == "200" ]]; then
sudo mkdir -p /etc/systemd/system/docker.service.d
en_create_proxy_conf
echo 'Docker gateway is set, reloading docker daemon'
en_reload && echo 'Docker daemon reloaded' || echo 'Failed to reload docker daemon'
else
echo 'Authentication error, not setting docker gateway'
fi
}
en_stop() {
sudo rm -f /etc/systemd/system/docker.service.d/proxy.conf
en_reload
}
en_reload() {
sudo systemctl daemon-reload
ret=$?
sudo systemctl restart docker.service
ret2=$?
if [[ "$ret" == "0" ]] && [[ "$ret2" == "0" ]]; then
echo 0
else
echo 1
fi
}
en_usage() {
echo 'Usage: ./enetwork [start|stop]'
}
if [[ "$(uname)" == "Darwin" ]]; then
echo "'enhanced' networking is not supported in this environment"
exit 1
fi
if [[ $# -ne 1 ]]; then
en_usage
else
case "$1" in
"start")
en_start
exit 0
;;
"stop")
en_stop
exit 0
;;
"*")
en_usage
exit 0
;;
esac
fi