-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathtest.sh
executable file
·153 lines (132 loc) · 3.56 KB
/
test.sh
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
153
#!/bin/bash -ux
REG_KEY="${REG_KEY:-}"
API_URL="${API_URL:-}"
SSL_EMAIL="${SSL_EMAIL:-}"
PEP_IMAGE="${PEP_IMAGE:-}"
BRANCH="${BRANCH:-}"
STATS_SERVER="${STATS_SERVER:-}"
REMOTE_USER="${REMOTE_USER:-}"
REMOTE_HOST="${REMOTE_HOST:-}"
REMOTE_HOST_IP="${REMOTE_HOST_IP:-}"
fail() {
echo "! ${1:-error}" >&1
exit ${2:-1}
}
usage() {
cat <<EOI
usage: $0 init|run|reset|clean|build|cycle [remote]
ENV VARS:
BRANCH
REG_KEY
API_URL
SSL_EMAIL
PEP_IMAGE
REMOTE_USER (optional)
REMOTE_HOST (optional)
REMOTE_HOST_IP (optional)
EOI
}
[ $# -ge 1 ] || {
usage
fail "no command given"
}
cd $(dirname "$0")
action="$1"
where="${2:-local}"
shift
shift
[ -n "$API_URL" ] || fail "env var API_URL not set"
[ -n "$SSL_EMAIL" ] || fail "env var SSL_EMAIL not set"
[ -n "$PEP_IMAGE" ] || fail "env var PEP_IMAGE not set"
[ -n "$BRANCH" ] || fail "env var BRANCH not set"
[ "$where" = 'remote' ] || {
[ -n "$REMOTE_USER" ] || fail "env var REMOTE_USER not set"
[ -n "$REMOTE_HOST" ] || fail "env var REMOTE_HOST not set"
[ -n "$REMOTE_HOST_IP" ] || fail "env var REMOTE_HOST_IP not set"
}
[ $action = "clean" -o $action = "cycle" ] && {
if [ "$where" = 'remote' ]; then
./go.sh --remote "$REMOTE_USER@$REMOTE_HOST" \
clean \
-v -i $PEP_IMAGE "$@" \
|| fail "Failed to perform --remote clean"
else
./go.sh clean \
-v -i $PEP_IMAGE "$@" \
|| fail "Failed to perform clean"
fi
}
[ $action = "build" -o $action = "cycle" ] && {
./build.sh -e dev -b $BRANCH -p -t "$PEP_IMAGE"
}
[ $action = "init" -o $action = "cycle" ] && {
reg_key=${REG_KEY:-}
while [ -z "$reg_key" ]; do
read -p "Server registration key: " reg_key
done
if [ "$where" = 'remote' ]; then
./go.sh \
--remote $REMOTE_USER@$REMOTE_HOST \
init \
--non-interactive \
-e $SSL_EMAIL \
--api-url "$API_URL" \
--pull-image \
-i $PEP_IMAGE \
--dns-test-ip "$REMOTE_HOST_IP" \
--slot-key "$reg_key" \
--server-name "$BRANCH-testing.$$" \
-v \
"$@" || fail "Failed to init VPN"
else
./go.sh \
init \
-e $SSL_EMAIL \
--non-interactive \
--api-url "$API_URL" \
-i $PEP_IMAGE \
--slot-key "$reg_key" \
--server-name "$BRANCH-testing.$$" \
-v \
"$@" || fail "Failed to init VPN"
fi
}
[ $action = "run" -o $action = "cycle" ] && {
if [ "$where" = 'remote' ]; then
./go.sh \
--remote $REMOTE_USER@$REMOTE_HOST \
run \
--api-url "$API_URL" \
--stats \
--stats-extra \
--stats-server "$STATS_SERVER" \
--stats-key "$STATS_KEY" \
-e $SSL_EMAIL \
-i $PEP_IMAGE \
-v \
"$@" || fail "Failed to run VPN"
else
./go.sh run \
--api-url "$API_URL" \
--stats \
--stats-extra \
--stats-server "$STATS_SERVER" \
--stats-key "$STATS_KEY" \
-e $SSL_EMAIL \
-i $PEP_IMAGE \
-v \
"$@" || fail "Failed to run VPN"
fi
}
[ $action = "reset" ] && {
if [ "$where" = 'remote' ]; then
./go.sh \
--remote $REMOTE_USER@$REMOTE_HOST \
reset \
-v -i $PEP_IMAGE "$@"
else
./go.sh reset \
-v -i $PEP_IMAGE "$@"
fi
}
echo "PID: $$"