forked from MrKsey/ss-tls-v2ray
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.sh
307 lines (256 loc) · 17.1 KB
/
config.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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
#!/bin/bash
echo " "
echo "=================================================="
echo "$(date): config.sh started"
echo "=================================================="
echo " "
# Start load configs
if [ -s $CONFIG_PATH/config.ini ]; then
# Load config from config.ini
echo "$(date): Load config from config.ini"
sed -i -e "s/\r//g" $CONFIG_PATH/config.ini
. $CONFIG_PATH/config.ini && export $(grep -E ^[a-zA-Z] $CONFIG_PATH/config.ini | cut -d= -f1)
if [ ! -d "$CONFIG_PATH/server" ] && [ ! -d "$CONFIG_PATH/client" ]; then
# Sync configuration files with github
echo "$(date): Sync configuration files with github"
svn checkout $GIT_URL/trunk/config $CONFIG_PATH
fi
if [ "$MODE" = "client" ] && [ -s $CONFIG_PATH/_CLIENT.txt ]; then
# Load config from _CLIENT.txt
echo "$(date): Load config from _CLIENT.txt"
sed -i -e "s/\r//g" $CONFIG_PATH/_CLIENT.txt
. $CONFIG_PATH/_CLIENT.txt && export $(grep -E ^[a-zA-Z] $CONFIG_PATH/_CLIENT.txt | cut -d= -f1)
fi
else
# First time run.
if [ ! -d "$CONFIG_PATH/server" ] && [ ! -d "$CONFIG_PATH/client" ]; then
# Sync configuration files with github
echo "$(date): Sync configuration files with github"
svn checkout $GIT_URL/trunk/config $CONFIG_PATH
fi
if [ -s $CONFIG_PATH/config.ini ]; then
sed -i -e "s/\r//g" $CONFIG_PATH/config.ini
else
# If config.ini not downloaded - create empty
echo "$(date): config.ini not downloaded, create empty"
touch $CONFIG_PATH/config.ini
tail -c1 $CONFIG_PATH/config.ini | read -r _ || echo >> $CONFIG_PATH/config.ini
fi
if [ -s $CONFIG_PATH/_CLIENT.txt ]; then
# Load config from _CLIENT.txt
echo "$(date): Load config from _CLIENT.txt"
sed -i -e "s/\r//g" $CONFIG_PATH/_CLIENT.txt
. $CONFIG_PATH/_CLIENT.txt && export $(grep -E ^[a-zA-Z] $CONFIG_PATH/_CLIENT.txt | cut -d= -f1)
# if _CLIENT.txt exist - set mode of this node to client
export MODE=client
fi
fi
# Check vars, set defaults in config.ini ==========================
echo "$(date): Check vars, set defaults..."
# OS_UPDATE
[ -z "$OS_UPDATE" ] && export OS_UPDATE=true
[ "$OS_UPDATE" != "true" ] && export OS_UPDATE=false
sed -i "/^OS_UPDATE=/{h;s/=.*/=${OS_UPDATE}/};\${x;/^$/{s//OS_UPDATE=${OS_UPDATE}/;H};x}" $CONFIG_PATH/config.ini
# UPDATE_SCHEDULE
if [ -z "$UPDATE_SCHEDULE" ]; then
# generate update time in interval 0-3h and 0-59m
UPDATE_H=$(shuf -i0-3 -n1)
UPDATE_M=$(shuf -i0-59 -n1)
export UPDATE_SCHEDULE="\"$UPDATE_M $UPDATE_H \* \* \*\""
fi
sed -i "/^UPDATE_SCHEDULE=/{h;s/=.*/=${UPDATE_SCHEDULE}/};\${x;/^$/{s//UPDATE_SCHEDULE=${UPDATE_SCHEDULE}/;H};x}" $CONFIG_PATH/config.ini
sed -i -E "s/UPDATE_SCHEDULE=(.*)/UPDATE_SCHEDULE=\"\1\"/" $CONFIG_PATH/config.ini
sed -i "s/\"\"/\"/g" $CONFIG_PATH/config.ini
# Add to cron scheduled updates
/etc/init.d/cron stop
if [ ! -z "$UPDATE_SCHEDULE" ]; then
echo "$(echo "$UPDATE_SCHEDULE" | sed 's/\\//g' | sed "s/\"//g") /update.sh >> /var/log/cron.log 2>&1" | crontab -
cron -f >> /var/log/cron.log 2>&1&
fi
# MODE
[ -z "$MODE" ] && export MODE=server
[ "$MODE" != "server" ] && export MODE=client
sed -i "/^MODE=/{h;s/=.*/=${MODE}/};\${x;/^$/{s//MODE=${MODE}/;H};x}" $CONFIG_PATH/config.ini
# SS_ENABLED
[ -z "$SS_ENABLED" ] && export SS_ENABLED=true
[ "$SS_ENABLED" != "true" ] && export SS_ENABLED=false
sed -i "/^SS_ENABLED=/{h;s/=.*/=${SS_ENABLED}/};\${x;/^$/{s//SS_ENABLED=${SS_ENABLED}/;H};x}" $CONFIG_PATH/config.ini
# SS_VER
[ -z "$SS_VER" ] && export SS_VER=latest
sed -i "/^SS_VER=/{h;s/=.*/=${SS_VER}/};\${x;/^$/{s//SS_VER=${SS_VER}/;H};x}" $CONFIG_PATH/config.ini
# SIMPLE_TLS_ENABLED
[ -z "$SIMPLE_TLS_ENABLED" ] && export SIMPLE_TLS_ENABLED=true
[ "$SIMPLE_TLS_ENABLED" != "true" ] && export SIMPLE_TLS_ENABLED=false
sed -i "/^SIMPLE_TLS_ENABLED=/{h;s/=.*/=${SIMPLE_TLS_ENABLED}/};\${x;/^$/{s//SIMPLE_TLS_ENABLED=${SIMPLE_TLS_ENABLED}/;H};x}" $CONFIG_PATH/config.ini
# SIMPLE_TLS_VER
[ -z "$SIMPLE_TLS_VER" ] && export SIMPLE_TLS_VER=latest
sed -i "/^SIMPLE_TLS_VER=/{h;s/=.*/=${SIMPLE_TLS_VER}/};\${x;/^$/{s//SIMPLE_TLS_VER=${SIMPLE_TLS_VER}/;H};x}" $CONFIG_PATH/config.ini
# SIMPLE_TLS_DOMAIN
[ -z "$SIMPLE_TLS_DOMAIN" ] && export SIMPLE_TLS_DOMAIN=windowsupdate.microsoft.com
sed -i "/^SIMPLE_TLS_DOMAIN=/{h;s/=.*/=${SIMPLE_TLS_DOMAIN}/};\${x;/^$/{s//SIMPLE_TLS_DOMAIN=${SIMPLE_TLS_DOMAIN}/;H};x}" $CONFIG_PATH/config.ini
# V2RAY_ENABLED
[ -z "$V2RAY_ENABLED" ] && export V2RAY_ENABLED=true
[ "$V2RAY_ENABLED" != "true" ] && export V2RAY_ENABLED=false
sed -i "/^V2RAY_ENABLED=/{h;s/=.*/=${V2RAY_ENABLED}/};\${x;/^$/{s//V2RAY_ENABLED=${V2RAY_ENABLED}/;H};x}" $CONFIG_PATH/config.ini
# V2RAY_VER
[ -z "$V2RAY_VER" ] && export V2RAY_VER=latest
sed -i "/^V2RAY_VER=/{h;s/=.*/=${V2RAY_VER}/};\${x;/^$/{s//V2RAY_VER=${V2RAY_VER}/;H};x}" $CONFIG_PATH/config.ini
# V2RAY_DOMAIN
[ -z "$V2RAY_DOMAIN" ] && export V2RAY_DOMAIN=windowsupdate.microsoft.com
sed -i "/^V2RAY_DOMAIN=/{h;s/=.*/=${V2RAY_DOMAIN}/};\${x;/^$/{s//V2RAY_DOMAIN=${V2RAY_DOMAIN}/;H};x}" $CONFIG_PATH/config.ini
# if this node is server then generate _CLIENT.txt with data for client
if [ "$MODE" = "server" ]; then
echo "$(date): MODE = server"
# Set old domain for simple-tls
export OLD_SIMPLE_TLS_DOMAIN=$(grep SIMPLE_TLS_DOMAIN $CONFIG_PATH/_CLIENT.txt | cut -d '=' -f 2)
# Create new _CLIENT.txt
grep -E ^[a-zA-Z] $CONFIG_PATH/config.ini > $CONFIG_PATH/_CLIENT.txt
# Change MODE to client in _CLIENT.txt
sed -i "/^MODE=/{h;s/=.*/=client/};\${x;/^$/{s//MODE=client/;H};x}" $CONFIG_PATH/_CLIENT.txt
# ShadowSocks ===============================
# WAN IP
SERVER_WAN_IP=$(curl ifconfig.me || curl checkip.amazonaws.com || curl ifconfig.co) && export SERVER_WAN_IP=$(echo $SERVER_WAN_IP | tr -d ' ')
[ ! -z "$SERVER_WAN_IP" ] && sed -i "/^SS_SERVER_ADDR=/{h;s/=.*/=${SERVER_WAN_IP}/};\${x;/^$/{s//SS_SERVER_ADDR=${SERVER_WAN_IP}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# SS_SERVER_ADDR
if [ "$SS_ENABLED" = "true" ]; then
[ -z "$SS_SERVER_ADDR" ] && export SS_SERVER_ADDR=$(jq -r '."server"' $CONFIG_PATH/server/ss.json)
( [ -z "$SS_SERVER_ADDR" ] || [ "$SS_SERVER_ADDR" = "127.0.0.1" ] ) && export SS_SERVER_ADDR="0.0.0.0"
else
export SS_SERVER_ADDR=127.0.0.1
fi
jq '."server" = "'"$SS_SERVER_ADDR"'"' $CONFIG_PATH/server/ss.json | sponge $CONFIG_PATH/server/ss.json
# SS_SERVER_PORT
[ -z "$SS_SERVER_PORT" ] && export SS_SERVER_PORT=$(jq -r '."server_port"' $CONFIG_PATH/server/ss.json)
[ -z "$SS_SERVER_PORT" ] && export SS_SERVER_PORT=8443
jq '."server_port" = '$SS_SERVER_PORT'' $CONFIG_PATH/server/ss.json | sponge $CONFIG_PATH/server/ss.json
sed -i "/^SS_SERVER_PORT=/{h;s/=.*/=${SS_SERVER_PORT}/};\${x;/^$/{s//SS_SERVER_PORT=${SS_SERVER_PORT}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# SS_PASSWORD
[ -z "$SS_PASSWORD" ] && export SS_PASSWORD=$(jq -r '."password"' $CONFIG_PATH/server/ss.json)
# If empty - generate new password
[ -z "$SS_PASSWORD" ] && export SS_PASSWORD=$(openssl rand -base64 48 | tr -d /=+ | cut -c -40)
jq '."password" = "'"$SS_PASSWORD"'"' $CONFIG_PATH/server/ss.json | sponge $CONFIG_PATH/server/ss.json
sed -i "/^SS_PASSWORD=/{h;s/=.*/=${SS_PASSWORD}/};\${x;/^$/{s//SS_PASSWORD=${SS_PASSWORD}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# SS_METHOD
[ -z "$SS_METHOD" ] && export SS_METHOD=$(jq -r '."method"' $CONFIG_PATH/server/ss.json)
[ -z "$SS_METHOD" ] && export SS_METHOD="chacha20-ietf-poly1305"
jq '."method" = "'"$SS_METHOD"'"' $CONFIG_PATH/server/ss.json | sponge $CONFIG_PATH/server/ss.json
sed -i "/^SS_METHOD=/{h;s/=.*/=${SS_METHOD}/};\${x;/^$/{s//SS_METHOD=${SS_METHOD}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# SS_MODE
[ -z "$SS_MODE" ] && export SS_MODE=$(jq -r '."mode"' $CONFIG_PATH/server/ss.json)
[ -z "$SS_MODE" ] && export SS_MODE="tcp_and_udp"
jq '."mode" = "'"$SS_MODE"'"' $CONFIG_PATH/server/ss.json | sponge $CONFIG_PATH/server/ss.json
sed -i "/^SS_MODE=/{h;s/=.*/=${SS_MODE}/};\${x;/^$/{s//SS_MODE=${SS_MODE}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# SS_USERINFO - method + password encoded with Base64URL
export SS_USERINFO="ss:\/\/"`echo -n $SS_METHOD:$SS_PASSWORD | base64 -w0`
# SS_LINK (SIP002 URI Scheme)
if [ "$SS_ENABLED" = "true" ]; then
export SS_LINK="$SS_USERINFO@$SERVER_WAN_IP:$SS_SERVER_PORT#$(hostname)-ss"
else
export SS_LINK=""
fi
sed -i "/^SS_LINK=/{h;s/=.*/=${SS_LINK}/};\${x;/^$/{s//SS_LINK=${SS_LINK}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# Set workers count
CPU_COUNT=$(lscpu | grep -E "^CPU\(s\)\:" | tr -d ' ' | cut -d ':' -f 2)
[ $CPU_COUNT -gt 1 ] && jq '."workers" = '$CPU_COUNT'' $CONFIG_PATH/server/ss.json | sponge $CONFIG_PATH/server/ss.json
# grant permanent access to bind to low-numbered ports via the setcap
setcap "cap_net_bind_service=+eip" /usr/local/bin/ssserver
# SIMPLE_TLS ===============================
# SIMPLE_TLS_SERVER_PORT
[ -z "$SIMPLE_TLS_SERVER_PORT" ] && export SIMPLE_TLS_SERVER_PORT=$(grep -o -P "\-b.+?:[0-9]+" $CONFIG_PATH/server/ss-simple-tls.sh | cut -d ':' -f 2)
[ -z "$SIMPLE_TLS_SERVER_PORT" ] && export SIMPLE_TLS_SERVER_PORT=443
sed -i "/^SIMPLE_TLS_SERVER_PORT=/{h;s/=.*/=${SIMPLE_TLS_SERVER_PORT}/};\${x;/^$/{s//SIMPLE_TLS_SERVER_PORT=${SIMPLE_TLS_SERVER_PORT}/;H};x}" $CONFIG_PATH/_CLIENT.txt
sed -i -E "s/\-b :[0-9]+/\-b :${SIMPLE_TLS_SERVER_PORT}/" $CONFIG_PATH/server/ss-simple-tls.sh
sed -i -E "s/(\-d.+?:)[0-9]+/\\1${SS_SERVER_PORT}/" $CONFIG_PATH/server/ss-simple-tls.sh
# SIMPLE_TLS_DOMAIN
if [ "$SIMPLE_TLS_DOMAIN" != "$OLD_SIMPLE_TLS_DOMAIN" ] || [ ! -s $CONFIG_PATH/server/simple-tls_cert.key ] || [ ! -s $CONFIG_PATH/server/simple-tls_cert.cert ]; then
# generate cert for domain
[ -s $CONFIG_PATH/server/simple-tls_cert.key ] && rm -f $CONFIG_PATH/server/simple-tls_cert.key
[ -s $CONFIG_PATH/server/simple-tls_cert.cert ] && rm -f $CONFIG_PATH/server/simple-tls_cert.cert
simple-tls -gen-cert -n $SIMPLE_TLS_DOMAIN -key $CONFIG_PATH/server/simple-tls_cert.key -cert $CONFIG_PATH/server/simple-tls_cert.cert
fi
SIMPLE_TLS_CERT=$(simple-tls -hash-cert $CONFIG_PATH/server/simple-tls_cert.cert | cut -d ':' -f 2 | tr -d ' ')
sed -i "/^SIMPLE_TLS_CERT=/{h;s/=.*/=${SIMPLE_TLS_CERT}/};\${x;/^$/{s//SIMPLE_TLS_CERT=${SIMPLE_TLS_CERT}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# SIMPLE_TLS_LINK (SIP002 URI Scheme)
if [ "$SIMPLE_TLS_ENABLED" = "true" ]; then
TLS_PLUGIN=$(echo "simple-tls;cert-hash=$SIMPLE_TLS_CERT;no-verify;n=$SIMPLE_TLS_DOMAIN" | jq -rR @uri)
export SIMPLE_TLS_LINK="$SS_USERINFO@$SERVER_WAN_IP:$SIMPLE_TLS_SERVER_PORT\/?plugin=$TLS_PLUGIN#$(hostname)-simple-tls"
else
export SIMPLE_TLS_LINK=""
fi
sed -i "/^SIMPLE_TLS_LINK=/{h;s/=.*/=${SIMPLE_TLS_LINK}/};\${x;/^$/{s//SIMPLE_TLS_LINK=${SIMPLE_TLS_LINK}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# grant permanent access to bind to low-numbered ports via the setcap
setcap "cap_net_bind_service=+eip" /usr/local/bin/simple-tls
# V2RAY ===============================
# V2RAY_SERVER_PORT
[ -z "$V2RAY_SERVER_PORT" ] && export V2RAY_SERVER_PORT=$(grep -o -P "\-localPort [0-9]+" $CONFIG_PATH/server/ss-v2ray.sh | cut -d ' ' -f 2)
[ -z "$V2RAY_SERVER_PORT" ] && export V2RAY_SERVER_PORT=80
sed -i "/^V2RAY_SERVER_PORT=/{h;s/=.*/=${V2RAY_SERVER_PORT}/};\${x;/^$/{s//V2RAY_SERVER_PORT=${V2RAY_SERVER_PORT}/;H};x}" $CONFIG_PATH/_CLIENT.txt
sed -i -E "s/\-localPort [0-9]+/\-localPort ${V2RAY_SERVER_PORT}/" $CONFIG_PATH/server/ss-v2ray.sh
sed -i -E "s/-remotePort [0-9]+/-remotePort ${SS_SERVER_PORT}/" $CONFIG_PATH/server/ss-v2ray.sh
# V2RAY_LINK (SIP002 URI Scheme)
if [ "$V2RAY_ENABLED" = "true" ]; then
V2RAY_PLUGIN=$(echo "v2ray;host=$V2RAY_DOMAIN" | jq -rR @uri)
export V2RAY_LINK="$SS_USERINFO@$SERVER_WAN_IP:$V2RAY_SERVER_PORT\/?plugin=$V2RAY_PLUGIN#$(hostname)-v2ray"
else
export V2RAY_LINK=""
fi
sed -i "/^V2RAY_LINK=/{h;s/=.*/=${V2RAY_LINK}/};\${x;/^$/{s//V2RAY_LINK=${V2RAY_LINK}/;H};x}" $CONFIG_PATH/_CLIENT.txt
# grant permanent access to bind to low-numbered ports via the setcap
setcap "cap_net_bind_service=+eip" /usr/local/bin/v2ray-*
echo "$(date): Create links from $CONFIG_PATH/server to /etc/init.d"
chmod -R a+x $CONFIG_PATH/server/ss*.sh
ln -s -f $CONFIG_PATH/server/ss.sh /etc/init.d/
ln -s -f $CONFIG_PATH/server/ss-simple-tls.sh /etc/init.d/
ln -s -f $CONFIG_PATH/server/ss-v2ray.sh /etc/init.d/
else
echo "$(date): MODE = client"
# if _CLIENT.txt exist apply setting to client files only once
if [ -s $CONFIG_PATH/_CLIENT.txt ]; then
mv -f $CONFIG_PATH/_CLIENT.txt $CONFIG_PATH/_CLIENT.old.txt
export CPU_COUNT=$(lscpu | grep -E "^CPU\(s\)\:" | tr -d ' ' | cut -d ':' -f 2)
# ShadowSocks client ===============================
[ ! -z "$SS_SERVER_ADDR" ] && jq '."server" = "'"$SS_SERVER_ADDR"'"' $CONFIG_PATH/client/ss.json | sponge $CONFIG_PATH/client/ss.json
[ ! -z "$SS_SERVER_PORT" ] && jq '."server_port" = '$SS_SERVER_PORT'' $CONFIG_PATH/client/ss.json | sponge $CONFIG_PATH/client/ss.json
[ ! -z "$SS_PASSWORD" ] && jq '."password" = "'"$SS_PASSWORD"'"' $CONFIG_PATH/client/ss.json | sponge $CONFIG_PATH/client/ss.json
[ ! -z "$SS_METHOD" ] && jq '."method" = "'"$SS_METHOD"'"' $CONFIG_PATH/client/ss.json | sponge $CONFIG_PATH/client/ss.json
[ $CPU_COUNT -gt 1 ] && jq '."workers" = '$CPU_COUNT'' $CONFIG_PATH/client/ss.json | sponge $CONFIG_PATH/client/ss.json
[ ! -z "$SS_MODE" ] && jq '."mode" = "'"$SS_MODE"'"' $CONFIG_PATH/client/ss.json | sponge $CONFIG_PATH/client/ss.json
# SIMPLE_TLS client ===============================
[ ! -z "$SS_SERVER_ADDR" ] && jq '."server" = "'"$SS_SERVER_ADDR"'"' $CONFIG_PATH/client/ss-simple-tls.json | sponge $CONFIG_PATH/client/ss-simple-tls.json
[ ! -z "$SIMPLE_TLS_SERVER_PORT" ] && jq '."server_port" = '$SIMPLE_TLS_SERVER_PORT'' $CONFIG_PATH/client/ss-simple-tls.json | sponge $CONFIG_PATH/client/ss-simple-tls.json
[ ! -z "$SS_PASSWORD" ] && jq '."password" = "'"$SS_PASSWORD"'"' $CONFIG_PATH/client/ss-simple-tls.json | sponge $CONFIG_PATH/client/ss-simple-tls.json
[ ! -z "$SS_METHOD" ] && jq '."method" = "'"$SS_METHOD"'"' $CONFIG_PATH/client/ss-simple-tls.json | sponge $CONFIG_PATH/client/ss-simple-tls.json
[ $CPU_COUNT -gt 1 ] && jq '."workers" = '$CPU_COUNT'' $CONFIG_PATH/client/ss-simple-tls.json | sponge $CONFIG_PATH/client/ss-simple-tls.json
sed -i -E "s/(cert-hash=)[a-zA-Z0-9]+(;)/\\1${SIMPLE_TLS_CERT}\\2/" $CONFIG_PATH/client/ss-simple-tls.json
# V2RAY client ====================================
[ ! -z "$SS_SERVER_ADDR" ] && jq '."server" = "'"$SS_SERVER_ADDR"'"' $CONFIG_PATH/client/ss-v2ray.json | sponge $CONFIG_PATH/client/ss-v2ray.json
[ ! -z "$V2RAY_SERVER_PORT" ] && jq '."server_port" = '$V2RAY_SERVER_PORT'' $CONFIG_PATH/client/ss-v2ray.json | sponge $CONFIG_PATH/client/ss-v2ray.json
[ ! -z "$SS_PASSWORD" ] && jq '."password" = "'"$SS_PASSWORD"'"' $CONFIG_PATH/client/ss-v2ray.json | sponge $CONFIG_PATH/client/ss-v2ray.json
[ ! -z "$SS_METHOD" ] && jq '."method" = "'"$SS_METHOD"'"' $CONFIG_PATH/client/ss-v2ray.json | sponge $CONFIG_PATH/client/ss-v2ray.json
[ $CPU_COUNT -gt 1 ] && jq '."workers" = '$CPU_COUNT'' $CONFIG_PATH/client/ss-v2ray.json | sponge $CONFIG_PATH/client/ss-v2ray.json
fi
export SS_SERVER_ADDR=$(jq -r '."server"' $CONFIG_PATH/client/ss.json)
export SS_SERVER_PORT=$(jq -r '."server_port"' $CONFIG_PATH/client/ss.json)
export SS_LOCAL_PORT=$(jq -r '."local_port"' $CONFIG_PATH/client/ss.json)
export SIMPLE_TLS_SERVER_PORT=$(jq -r '."server_port"' $CONFIG_PATH/client/ss-simple-tls.json)
export SIMPLE_TLS_LOCAL_PORT=$(jq -r '."local_port"' $CONFIG_PATH/client/ss-simple-tls.json)
export V2RAY_SERVER_PORT=$(jq -r '."server_port"' $CONFIG_PATH/client/ss-v2ray.json)
export V2RAY_LOCAL_PORT=$(jq -r '."local_port"' $CONFIG_PATH/client/ss-v2ray.json)
echo "$(date): Create links from $CONFIG_PATH/client to /etc/init.d"
chmod -R a+x $CONFIG_PATH/client/ss*.sh
ln -s -f $CONFIG_PATH/client/ss.sh /etc/init.d/
ln -s -f $CONFIG_PATH/client/ss-simple-tls.sh /etc/init.d/
ln -s -f $CONFIG_PATH/client/ss-v2ray.sh /etc/init.d/
fi
# Save ENV VARS to file
echo "$(date): Save ENV VARS to file"
env | grep -v UPDATE_SCHEDULE | awk 'NF {sub("=","=\"",$0); print ""$0"\""}' > $CONFIG_PATH/.config.env && chmod 644 $CONFIG_PATH/.config.env
# Colorize bash output
echo "RED='\033[0;31m'" >> $CONFIG_PATH/.config.env
echo "GREEN='\033[0;32m'" >> $CONFIG_PATH/.config.env
echo "NC='\033[0m'" >> $CONFIG_PATH/.config.env
echo " "
echo "=================================================="
echo "$(date): config.sh finished"
echo "=================================================="
echo " "