|
@@ -39,22 +39,18 @@ GIT_ONION_PORT=8090
|
39
|
39
|
GIT_ADMIN_PASSWORD=
|
40
|
40
|
GOGS_BIN=
|
41
|
41
|
|
|
42
|
+gogs_variables=(ONION_ONLY
|
|
43
|
+ GOGS_COMMIT
|
|
44
|
+ GIT_ADMIN_PASSWORD
|
|
45
|
+ GIT_DOMAIN_NAME
|
|
46
|
+ GIT_CODE
|
|
47
|
+ GIT_ONION_PORT
|
|
48
|
+ MY_USERNAME
|
|
49
|
+ GOGS_VERSION
|
|
50
|
+ DDNS_PROVIDER
|
|
51
|
+ ARCHITECTURE)
|
|
52
|
+
|
42
|
53
|
function install_interactive_gogs {
|
43
|
|
- if [ ! $ONION_ONLY ]; then
|
44
|
|
- ONION_ONLY='no'
|
45
|
|
- fi
|
46
|
|
- if grep -q "ONION_ONLY" $CONFIGURATION_FILE; then
|
47
|
|
- ONION_ONLY=$(grep "ONION_ONLY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
48
|
|
- fi
|
49
|
|
- if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then
|
50
|
|
- GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
51
|
|
- fi
|
52
|
|
- if grep -q "GIT_CODE" $CONFIGURATION_FILE; then
|
53
|
|
- GIT_CODE=$(grep "GIT_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
54
|
|
- fi
|
55
|
|
- if grep -q "DDNS_PROVIDER" $CONFIGURATION_FILE; then
|
56
|
|
- DDNS_PROVIDER=$(grep "DDNS_PROVIDER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
57
|
|
- fi
|
58
|
54
|
if [[ $ONION_ONLY != "no" ]]; then
|
59
|
55
|
GIT_DOMAIN_NAME='git.local'
|
60
|
56
|
else
|
|
@@ -84,17 +80,17 @@ function install_interactive_gogs {
|
84
|
80
|
255) exit 1;;
|
85
|
81
|
esac
|
86
|
82
|
GIT_DOMAIN_NAME=$(cat $data | sed -n 1p)
|
87
|
|
- if [ $GIT_DOMAIN_NAME ]; then
|
|
83
|
+ if [ ${GIT_DOMAIN_NAME} ]; then
|
88
|
84
|
TEST_DOMAIN_NAME=$GIT_DOMAIN_NAME
|
89
|
85
|
validate_domain_name
|
90
|
|
- if [[ $TEST_DOMAIN_NAME != $GIT_DOMAIN_NAME ]]; then
|
|
86
|
+ if [[ ${TEST_DOMAIN_NAME} != ${GIT_DOMAIN_NAME} ]]; then
|
91
|
87
|
GIT_DOMAIN_NAME=
|
92
|
|
- dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
|
|
88
|
+ dialog --title $"Domain name validation" --msgbox "${TEST_DOMAIN_NAME}" 15 50
|
93
|
89
|
else
|
94
|
|
- if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
|
|
90
|
+ if [[ ${DDNS_PROVIDER} == "default@freedns.afraid.org" ]]; then
|
95
|
91
|
GIT_CODE=$(cat $data | sed -n 2p)
|
96
|
92
|
validate_freedns_code "$GIT_CODE"
|
97
|
|
- if [ ! $VALID_CODE ]; then
|
|
93
|
+ if [ ! ${VALID_CODE} ]; then
|
98
|
94
|
GIT_DOMAIN_NAME=
|
99
|
95
|
fi
|
100
|
96
|
fi
|
|
@@ -102,21 +98,21 @@ function install_interactive_gogs {
|
102
|
98
|
else
|
103
|
99
|
DEVELOPER_DETAILS_COMPLETE="yes"
|
104
|
100
|
fi
|
105
|
|
- if [ $GIT_DOMAIN_NAME ]; then
|
|
101
|
+ if [ ${GIT_DOMAIN_NAME} ]; then
|
106
|
102
|
DEVELOPER_DETAILS_COMPLETE="yes"
|
107
|
103
|
fi
|
108
|
104
|
done
|
109
|
105
|
|
110
|
106
|
# save the results in the config file
|
111
|
|
- if grep -q "GIT_DOMAIN_NAME=" $CONFIGURATION_FILE; then
|
112
|
|
- sed -i "s|GIT_DOMAIN_NAME=.*|GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME|g" $CONFIGURATION_FILE
|
|
107
|
+ if grep -q "GIT_DOMAIN_NAME=" ${CONFIGURATION_FILE}; then
|
|
108
|
+ sed -i "s|GIT_DOMAIN_NAME=.*|GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME|g" ${CONFIGURATION_FILE}
|
113
|
109
|
else
|
114
|
|
- echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> $CONFIGURATION_FILE
|
|
110
|
+ echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> ${CONFIGURATION_FILE}
|
115
|
111
|
fi
|
116
|
|
- if grep -q "GIT_CODE=" $CONFIGURATION_FILE; then
|
117
|
|
- sed -i "s|GIT_CODE=.*|GIT_CODE=$GIT_CODE|g" $CONFIGURATION_FILE
|
|
112
|
+ if grep -q "GIT_CODE=" ${CONFIGURATION_FILE}; then
|
|
113
|
+ sed -i "s|GIT_CODE=.*|GIT_CODE=$GIT_CODE|g" ${CONFIGURATION_FILE}
|
118
|
114
|
else
|
119
|
|
- echo "GIT_CODE=$GIT_CODE" >> $CONFIGURATION_FILE
|
|
115
|
+ echo "GIT_CODE=$GIT_CODE" >> ${CONFIGURATION_FILE}
|
120
|
116
|
fi
|
121
|
117
|
fi
|
122
|
118
|
}
|
|
@@ -126,25 +122,25 @@ function change_password_gogs {
|
126
|
122
|
}
|
127
|
123
|
|
128
|
124
|
function gogs_parameters {
|
129
|
|
- if [[ $ARCHITECTURE == *"386" || $ARCHITECTURE == *"686" ]]; then
|
|
125
|
+ if [[ ${ARCHITECTURE} == *"386" || ${ARCHITECTURE} == *"686" ]]; then
|
130
|
126
|
CURR_ARCH=386
|
131
|
127
|
fi
|
132
|
|
- if [[ $ARCHITECTURE == *"amd64" || $ARCHITECTURE == "x86_64" ]]; then
|
|
128
|
+ if [[ ${ARCHITECTURE} == *"amd64" || ${ARCHITECTURE} == "x86_64" ]]; then
|
133
|
129
|
CURR_ARCH=amd64
|
134
|
130
|
fi
|
135
|
|
- if [[ $ARCHITECTURE == *"arm"* ]]; then
|
|
131
|
+ if [[ ${ARCHITECTURE} == *"arm"* ]]; then
|
136
|
132
|
CURR_ARCH=arm
|
137
|
133
|
fi
|
138
|
|
- if [ ! $CURR_ARCH ]; then
|
|
134
|
+ if [ ! ${CURR_ARCH} ]; then
|
139
|
135
|
echo $'No architecture specified'
|
140
|
136
|
ARCHITECTURE=$(uname -m)
|
141
|
|
- if [[ $ARCHITECTURE == "arm"* ]]; then
|
|
137
|
+ if [[ ${ARCHITECTURE} == "arm"* ]]; then
|
142
|
138
|
CURR_ARCH=arm
|
143
|
139
|
fi
|
144
|
|
- if [[ $ARCHITECTURE == "amd"* || $ARCHITECTURE == "x86_64" ]]; then
|
|
140
|
+ if [[ ${ARCHITECTURE} == "amd"* || ${ARCHITECTURE} == "x86_64" ]]; then
|
145
|
141
|
CURR_ARCH=amd64
|
146
|
142
|
fi
|
147
|
|
- if [[ $ARCHITECTURE == *"386" || $ARCHITECTURE == *"686" ]]; then
|
|
143
|
+ if [[ ${ARCHITECTURE} == *"386" || ${ARCHITECTURE} == *"686" ]]; then
|
148
|
144
|
CURR_ARCH=386
|
149
|
145
|
fi
|
150
|
146
|
fi
|
|
@@ -153,9 +149,9 @@ function gogs_parameters {
|
153
|
149
|
}
|
154
|
150
|
|
155
|
151
|
function get_mariadb_git_admin_password {
|
156
|
|
- if [ -f /home/$MY_USERNAME/README ]; then
|
157
|
|
- if grep -q "Gogs admin user password" /home/$MY_USERNAME/README; then
|
158
|
|
- GIT_ADMIN_PASSWORD=$(cat /home/$MY_USERNAME/README | grep "Gogs admin user password" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
|
152
|
+ if [ -f /home/${MY_USERNAME}/README ]; then
|
|
153
|
+ if grep -q "Gogs admin user password" /home/${MY_USERNAME}/README; then
|
|
154
|
+ GIT_ADMIN_PASSWORD=$(cat /home/${MY_USERNAME}/README | grep "Gogs admin user password" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
159
|
155
|
fi
|
160
|
156
|
fi
|
161
|
157
|
}
|
|
@@ -163,8 +159,9 @@ function get_mariadb_git_admin_password {
|
163
|
159
|
function gogs_create_database {
|
164
|
160
|
function_check get_mariadb_git_admin_password
|
165
|
161
|
get_mariadb_git_admin_password
|
166
|
|
- if [ ! $GIT_ADMIN_PASSWORD ]; then
|
167
|
|
- if [ -f $IMAGE_PASSWORD_FILE ]; then
|
|
162
|
+
|
|
163
|
+ if [ ! ${GIT_ADMIN_PASSWORD} ]; then
|
|
164
|
+ if [ -f ${IMAGE_PASSWORD_FILE} ]; then
|
168
|
165
|
GIT_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
|
169
|
166
|
else
|
170
|
167
|
GIT_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
|
|
@@ -188,7 +185,7 @@ function upgrade_gogs {
|
188
|
185
|
fi
|
189
|
186
|
|
190
|
187
|
CURR_GOGS_VERSION=$(cat $COMPLETION_FILE | grep "gogs version" | head -n 1 | awk -F ':' '{print $2}')
|
191
|
|
- if [[ "$CURR_GOGS_VERSION" == "$GOGS_VERSION" ]]; then
|
|
188
|
+ if [[ "${CURR_GOGS_VERSION}" == "${GOGS_VERSION}" ]]; then
|
192
|
189
|
return
|
193
|
190
|
fi
|
194
|
191
|
|
|
@@ -198,14 +195,14 @@ function upgrade_gogs {
|
198
|
195
|
mkdir -p ${INSTALL_DIR}
|
199
|
196
|
fi
|
200
|
197
|
cd ${INSTALL_DIR}
|
201
|
|
- if [ -d $INSTALL_DIR/gogs ]; then
|
202
|
|
- rm -rf $INSTALL_DIR/gogs
|
|
198
|
+ if [ -d ${INSTALL_DIR}/gogs ]; then
|
|
199
|
+ rm -rf ${INSTALL_DIR}/gogs
|
203
|
200
|
fi
|
204
|
201
|
GOGS_FILE=linux_${CURR_ARCH}.tar.gz
|
205
|
|
- if [ ! -f $GOGS_FILE ]; then
|
|
202
|
+ if [ ! -f ${GOGS_FILE} ]; then
|
206
|
203
|
wget ${GOGS_BIN}
|
207
|
204
|
fi
|
208
|
|
- if [ ! -f $GOGS_FILE ]; then
|
|
205
|
+ if [ ! -f ${GOGS_FILE} ]; then
|
209
|
206
|
GOGS_FILE=linux_${CURR_ARCH}.zip
|
210
|
207
|
GOGS_BIN="https://github.com/gogits/gogs/releases/download/v${GOGS_VERSION}/${GOGS_FILE}"
|
211
|
208
|
if [ ! -f ${GOGS_FILE} ]; then
|
|
@@ -220,53 +217,49 @@ function upgrade_gogs {
|
220
|
217
|
else
|
221
|
218
|
tar -xzf ${INSTALL_DIR}/${GOGS_FILE}
|
222
|
219
|
fi
|
223
|
|
- if [ ! -d $INSTALL_DIR/gogs ]; then
|
|
220
|
+ if [ ! -d ${INSTALL_DIR}/gogs ]; then
|
224
|
221
|
exit 37823
|
225
|
222
|
fi
|
226
|
|
- rm -rf /home/$GOGS_USERNAME/*
|
227
|
|
- cp -r $INSTALL_DIR/gogs/* /home/$GOGS_USERNAME
|
|
223
|
+ rm -rf /home/${GOGS_USERNAME}/*
|
|
224
|
+ cp -r ${INSTALL_DIR}/gogs/* /home/${GOGS_USERNAME}
|
228
|
225
|
if [ -f ${GOGS_FILE} ]; then
|
229
|
226
|
rm ${GOGS_FILE}
|
230
|
227
|
fi
|
231
|
228
|
|
232
|
|
- sed -i "s|gogs version.*|gogs version:$GOGS_VERSION|g" $COMPLETION_FILE
|
|
229
|
+ sed -i "s|gogs version.*|gogs version:$GOGS_VERSION|g" ${COMPLETION_FILE}
|
233
|
230
|
systemctl restart gogs
|
234
|
231
|
}
|
235
|
232
|
|
236
|
233
|
function backup_local_gogs {
|
237
|
|
- if ! grep -q "gogs domain" $COMPLETION_FILE; then
|
|
234
|
+ if ! grep -q "gogs domain" ${COMPLETION_FILE}; then
|
238
|
235
|
return
|
239
|
236
|
fi
|
240
|
237
|
|
241
|
|
- if [ ! -d /home/$GOGS_USERNAME/gogs-repositories ]; then
|
|
238
|
+ if [ ! -d /home/${GOGS_USERNAME}/gogs-repositories ]; then
|
242
|
239
|
return
|
243
|
240
|
fi
|
244
|
241
|
|
245
|
|
- GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "gogs domain" | awk -F ':' '{print $2}')
|
246
|
|
-
|
247
|
242
|
echo $"Backing up gogs"
|
248
|
243
|
|
249
|
244
|
function_check backup_database_to_usb
|
250
|
245
|
backup_database_to_usb gogs
|
251
|
246
|
|
252
|
247
|
function_check backup_directory_to_usb
|
253
|
|
- backup_directory_to_usb /home/$GOGS_USERNAME/custom gogs
|
254
|
|
- backup_directory_to_usb /home/$GOGS_USERNAME/gogs-repositories gogsrepos
|
255
|
|
- backup_directory_to_usb /home/$GOGS_USERNAME/.ssh gogsssh
|
|
248
|
+ backup_directory_to_usb /home/${GOGS_USERNAME}/custom gogs
|
|
249
|
+ backup_directory_to_usb /home/${GOGS_USERNAME}/gogs-repositories gogsrepos
|
|
250
|
+ backup_directory_to_usb /home/${GOGS_USERNAME}/.ssh gogsssh
|
256
|
251
|
|
257
|
252
|
echo $"Gogs backup complete"
|
258
|
253
|
}
|
259
|
254
|
|
260
|
255
|
function restore_local_gogs {
|
261
|
|
- if ! grep -q "gogs domain" $COMPLETION_FILE; then
|
|
256
|
+ if ! grep -q "gogs domain" ${COMPLETION_FILE}; then
|
262
|
257
|
return
|
263
|
258
|
fi
|
264
|
|
- if [ ! -d /home/$GOGS_USERNAME/gogs-repositories ]; then
|
|
259
|
+ if [ ! -d /home/${GOGS_USERNAME}/gogs-repositories ]; then
|
265
|
260
|
return
|
266
|
261
|
fi
|
267
|
262
|
|
268
|
|
- GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "gogs domain" | awk -F ':' '{print $2}')
|
269
|
|
-
|
270
|
263
|
if [ ${#GIT_DOMAIN_NAME} -gt 2 ]; then
|
271
|
264
|
function_check gogs_create_database
|
272
|
265
|
gogs_create_database
|
|
@@ -274,12 +267,12 @@ function restore_local_gogs {
|
274
|
267
|
function_check restore_database
|
275
|
268
|
restore_database gogs ${GIT_DOMAIN_NAME}
|
276
|
269
|
temp_restore_dir=/root/tempgogs
|
277
|
|
- if [ -d $USB_MOUNT/backup/gogs ]; then
|
|
270
|
+ if [ -d ${USB_MOUNT}/backup/gogs ]; then
|
278
|
271
|
echo $"Restoring Gogs settings"
|
279
|
|
- if [ ! -d /home/$GOGS_USERNAME/custom ]; then
|
280
|
|
- mkdir -p /home/$GOGS_USERNAME/custom
|
|
272
|
+ if [ ! -d /home/${GOGS_USERNAME}/custom ]; then
|
|
273
|
+ mkdir -p /home/${GOGS_USERNAME}/custom
|
281
|
274
|
fi
|
282
|
|
- cp -r ${temp_restore_dir}/home/$GOGS_USERNAME/custom/* /home/$GOGS_USERNAME/custom
|
|
275
|
+ cp -r ${temp_restore_dir}/home/${GOGS_USERNAME}/custom/* /home/${GOGS_USERNAME}/custom
|
283
|
276
|
if [ ! "$?" = "0" ]; then
|
284
|
277
|
function_check set_user_permissions
|
285
|
278
|
set_user_permissions
|
|
@@ -290,7 +283,7 @@ function restore_local_gogs {
|
290
|
283
|
echo $"Restoring Gogs repos"
|
291
|
284
|
function_check restore_directory_from_usb
|
292
|
285
|
restore_directory_from_usb ${temp_restore_dir}repos gogsrepos
|
293
|
|
- cp -r ${temp_restore_dir}repos/home/$GOGS_USERNAME/gogs-repositories/* /home/$GOGS_USERNAME/gogs-repositories/
|
|
286
|
+ cp -r ${temp_restore_dir}repos/home/${GOGS_USERNAME}/gogs-repositories/* /home/${GOGS_USERNAME}/gogs-repositories/
|
294
|
287
|
if [ ! "$?" = "0" ]; then
|
295
|
288
|
function_check set_user_permissions
|
296
|
289
|
set_user_permissions
|
|
@@ -301,10 +294,10 @@ function restore_local_gogs {
|
301
|
294
|
echo $"Restoring Gogs authorized_keys"
|
302
|
295
|
function_check restore_directory_from_usb
|
303
|
296
|
restore_directory_from_usb ${temp_restore_dir}ssh gogsssh
|
304
|
|
- if [ ! -d /home/$GOGS_USERNAME/.ssh ]; then
|
305
|
|
- mkdir /home/$GOGS_USERNAME/.ssh
|
|
297
|
+ if [ ! -d /home/${GOGS_USERNAME}/.ssh ]; then
|
|
298
|
+ mkdir /home/${GOGS_USERNAME}/.ssh
|
306
|
299
|
fi
|
307
|
|
- cp -r ${temp_restore_dir}ssh/home/$GOGS_USERNAME/.ssh/* /home/$GOGS_USERNAME/.ssh/
|
|
300
|
+ cp -r ${temp_restore_dir}ssh/home/${GOGS_USERNAME}/.ssh/* /home/${GOGS_USERNAME}/.ssh/
|
308
|
301
|
if [ ! "$?" = "0" ]; then
|
309
|
302
|
function_check set_user_permissions
|
310
|
303
|
set_user_permissions
|
|
@@ -315,14 +308,13 @@ function restore_local_gogs {
|
315
|
308
|
rm -rf ${temp_restore_dir}
|
316
|
309
|
rm -rf ${temp_restore_dir}repos
|
317
|
310
|
rm -rf ${temp_restore_dir}ssh
|
318
|
|
- chown -R $GOGS_USERNAME:$GOGS_USERNAME /home/$GOGS_USERNAME
|
|
311
|
+ chown -R ${GOGS_USERNAME}:${GOGS_USERNAME} /home/${GOGS_USERNAME}
|
319
|
312
|
fi
|
320
|
313
|
fi
|
321
|
314
|
}
|
322
|
315
|
|
323
|
316
|
function backup_remote_gogs {
|
324
|
317
|
if [ -d /home/$GOGS_USERNAME ]; then
|
325
|
|
- GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "gogs domain" | awk -F ':' '{print $2}')
|
326
|
318
|
function_check suspend_site
|
327
|
319
|
suspend_site ${GIT_DOMAIN_NAME}
|
328
|
320
|
|
|
@@ -358,34 +350,34 @@ function restore_remote_gogs {
|
358
|
350
|
gogs_create_database
|
359
|
351
|
|
360
|
352
|
function_check restore_database_from_friend
|
361
|
|
- restore_database_from_friend gogs $GIT_DOMAIN_NAME
|
362
|
|
- if [ -d $SERVER_DIRECTORY/backup/gogs ]; then
|
363
|
|
- if [ ! -d /home/$GOGS_USERNAME/custom ]; then
|
364
|
|
- mkdir -p /home/$GOGS_USERNAME/custom
|
|
353
|
+ restore_database_from_friend gogs ${GIT_DOMAIN_NAME}
|
|
354
|
+ if [ -d ${SERVER_DIRECTORY}/backup/gogs ]; then
|
|
355
|
+ if [ ! -d /home/${GOGS_USERNAME}/custom ]; then
|
|
356
|
+ mkdir -p /home/${GOGS_USERNAME}/custom
|
365
|
357
|
fi
|
366
|
|
- cp -r /root/tempgogs/home/$GOGS_USERNAME/custom/* /home/$GOGS_USERNAME/custom/
|
|
358
|
+ cp -r /root/tempgogs/home/${GOGS_USERNAME}/custom/* /home/${GOGS_USERNAME}/custom/
|
367
|
359
|
if [ ! "$?" = "0" ]; then
|
368
|
360
|
exit 58852
|
369
|
361
|
fi
|
370
|
362
|
echo $"Restoring Gogs repos"
|
371
|
363
|
restore_directory_from_friend /root/tempgogsrepos gogsrepos
|
372
|
|
- cp -r /root/tempgogsrepos/home/$GOGS_USERNAME/gogs-repositories/* /home/$GOGS_USERNAME/gogs-repositories/
|
|
364
|
+ cp -r /root/tempgogsrepos/home/${GOGS_USERNAME}/gogs-repositories/* /home/${GOGS_USERNAME}/gogs-repositories/
|
373
|
365
|
if [ ! "$?" = "0" ]; then
|
374
|
366
|
exit 7649
|
375
|
367
|
fi
|
376
|
368
|
echo $"Restoring Gogs authorized_keys"
|
377
|
369
|
restore_directory_from_friend /root/tempgogsssh gogsssh
|
378
|
|
- if [ ! -d /home/$GOGS_USERNAME/.ssh ]; then
|
379
|
|
- mkdir /home/$GOGS_USERNAME/.ssh
|
|
370
|
+ if [ ! -d /home/${GOGS_USERNAME}/.ssh ]; then
|
|
371
|
+ mkdir /home/${GOGS_USERNAME}/.ssh
|
380
|
372
|
fi
|
381
|
|
- cp -r /root/tempgogsssh/home/$GOGS_USERNAME/.ssh/* /home/$GOGS_USERNAME/.ssh/
|
|
373
|
+ cp -r /root/tempgogsssh/home/${GOGS_USERNAME}/.ssh/* /home/${GOGS_USERNAME}/.ssh/
|
382
|
374
|
if [ ! "$?" = "0" ]; then
|
383
|
375
|
exit 74239
|
384
|
376
|
fi
|
385
|
377
|
rm -rf /root/tempgogs
|
386
|
378
|
rm -rf /root/tempgogsrepos
|
387
|
379
|
rm -rf /root/tempgogsssh
|
388
|
|
- chown -R $GOGS_USERNAME:$GOGS_USERNAME /home/$GOGS_USERNAME
|
|
380
|
+ chown -R ${GOGS_USERNAME}:${GOGS_USERNAME} /home/${GOGS_USERNAME}
|
389
|
381
|
echo $"Restore of Gogs complete"
|
390
|
382
|
fi
|
391
|
383
|
fi
|
|
@@ -396,44 +388,25 @@ function remove_gogs {
|
396
|
388
|
return
|
397
|
389
|
fi
|
398
|
390
|
|
399
|
|
- if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then
|
400
|
|
- GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
401
|
|
- fi
|
402
|
391
|
systemctl stop gogs
|
403
|
392
|
systemctl disable gogs
|
404
|
|
- nginx_dissite $GIT_DOMAIN_NAME
|
405
|
|
- if [ -d /var/www/$GIT_DOMAIN_NAME ]; then
|
406
|
|
- rm -rf /var/www/$GIT_DOMAIN_NAME
|
|
393
|
+ nginx_dissite ${GIT_DOMAIN_NAME}
|
|
394
|
+ if [ -d /var/www/${GIT_DOMAIN_NAME} ]; then
|
|
395
|
+ rm -rf /var/www/${GIT_DOMAIN_NAME}
|
407
|
396
|
fi
|
408
|
|
- if [ -f /etc/nginx/sites-available/$GIT_DOMAIN_NAME ]; then
|
409
|
|
- rm /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
397
|
+ if [ -f /etc/nginx/sites-available/${GIT_DOMAIN_NAME} ]; then
|
|
398
|
+ rm /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
410
|
399
|
fi
|
411
|
400
|
function_check drop_database
|
412
|
401
|
drop_database gogs
|
413
|
402
|
rm /etc/systemd/system/gogs.service
|
414
|
|
- rm -rf /home/$GOGS_USERNAME/*
|
|
403
|
+ rm -rf /home/${GOGS_USERNAME}/*
|
415
|
404
|
remove_onion_service gogs ${GIT_ONION_PORT} 9418
|
416
|
405
|
sed -i '/install_gogs/d' $COMPLETION_FILE
|
417
|
|
- sed -i '/Gogs /d' $COMPLETION_FILE
|
|
406
|
+ sed -i '/gogs /d' $COMPLETION_FILE
|
418
|
407
|
}
|
419
|
408
|
|
420
|
409
|
function install_gogs {
|
421
|
|
- if [ ! $ONION_ONLY ]; then
|
422
|
|
- ONION_ONLY='no'
|
423
|
|
- fi
|
424
|
|
- if grep -q "ONION_ONLY" $CONFIGURATION_FILE; then
|
425
|
|
- ONION_ONLY=$(grep "ONION_ONLY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
426
|
|
- fi
|
427
|
|
- if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then
|
428
|
|
- GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
429
|
|
- fi
|
430
|
|
- if grep -q "GIT_CODE" $CONFIGURATION_FILE; then
|
431
|
|
- GIT_CODE=$(grep "GIT_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
432
|
|
- fi
|
433
|
|
- if grep -q "DDNS_PROVIDER" $CONFIGURATION_FILE; then
|
434
|
|
- DDNS_PROVIDER=$(grep "DDNS_PROVIDER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
|
435
|
|
- fi
|
436
|
|
-
|
437
|
410
|
if [ ! $GIT_DOMAIN_NAME ]; then
|
438
|
411
|
return
|
439
|
412
|
fi
|
|
@@ -466,24 +439,24 @@ function install_gogs {
|
466
|
439
|
else
|
467
|
440
|
tar -xzf ${INSTALL_DIR}/${GOGS_FILE}
|
468
|
441
|
fi
|
469
|
|
- if [ ! -d $INSTALL_DIR/gogs ]; then
|
|
442
|
+ if [ ! -d ${INSTALL_DIR}/gogs ]; then
|
470
|
443
|
exit 37823
|
471
|
444
|
fi
|
472
|
|
- rm -rf /home/$GOGS_USERNAME/*
|
473
|
|
- cp -r $INSTALL_DIR/gogs/* /home/$GOGS_USERNAME
|
|
445
|
+ rm -rf /home/${GOGS_USERNAME}/*
|
|
446
|
+ cp -r ${INSTALL_DIR}/gogs/* /home/${GOGS_USERNAME}
|
474
|
447
|
if [ -f ${GOGS_FILE} ]; then
|
475
|
448
|
rm ${GOGS_FILE}
|
476
|
449
|
fi
|
477
|
450
|
|
478
|
|
- if [ ! -f /home/$GOGS_USERNAME/gogs ]; then
|
|
451
|
+ if [ ! -f /home/${GOGS_USERNAME}/gogs ]; then
|
479
|
452
|
echo 'Gogs binary not installed'
|
480
|
453
|
exit 345562
|
481
|
454
|
fi
|
482
|
455
|
|
483
|
|
- echo "export GOROOT=/home/go" >> /home/$GOGS_USERNAME/.bashrc
|
484
|
|
- echo "export GOPATH=\$GOROOT/go${GO_VERSION}/bin" >> /home/$GOGS_USERNAME/.bashrc
|
485
|
|
- echo 'export PATH=$PATH:$GOPATH' >> /home/$GOGS_USERNAME/.bashrc
|
486
|
|
- chown -R $GOGS_USERNAME:$GOGS_USERNAME /home/$GOGS_USERNAME
|
|
456
|
+ echo "export GOROOT=/home/go" >> /home/${GOGS_USERNAME}/.bashrc
|
|
457
|
+ echo "export GOPATH=\$GOROOT/go${GO_VERSION}/bin" >> /home/${GOGS_USERNAME}/.bashrc
|
|
458
|
+ echo 'export PATH=$PATH:$GOPATH' >> /home/${GOGS_USERNAME}/.bashrc
|
|
459
|
+ chown -R ${GOGS_USERNAME}:${GOGS_USERNAME} /home/${GOGS_USERNAME}
|
487
|
460
|
|
488
|
461
|
function_check install_mariadb
|
489
|
462
|
install_mariadb
|
|
@@ -494,44 +467,44 @@ function install_gogs {
|
494
|
467
|
function_check gogs_create_database
|
495
|
468
|
gogs_create_database
|
496
|
469
|
|
497
|
|
- if [ ! -f /home/$GOGS_USERNAME/scripts/mysql.sql ]; then
|
|
470
|
+ if [ ! -f /home/${GOGS_USERNAME}/scripts/mysql.sql ]; then
|
498
|
471
|
echo $'MySql template for Gogs was not found'
|
499
|
472
|
exit 72528
|
500
|
473
|
fi
|
501
|
474
|
|
502
|
|
- if ! grep -q $"Gogs admin user password" /home/$MY_USERNAME/README; then
|
503
|
|
- echo '' >> /home/$MY_USERNAME/README
|
504
|
|
- echo '' >> /home/$MY_USERNAME/README
|
505
|
|
- echo 'Gogs' >> /home/$MY_USERNAME/README
|
506
|
|
- echo '====' >> /home/$MY_USERNAME/README
|
507
|
|
- echo $'Install Steps For First-time Run:' >> /home/$MY_USERNAME/README
|
508
|
|
- echo $'Leave email service settings empty' >> /home/$MY_USERNAME/README
|
509
|
|
- echo $'Check "Enable Register Confirmation"' >> /home/$MY_USERNAME/README
|
510
|
|
- echo $'Check "Enable Mail Notification"' >> /home/$MY_USERNAME/README
|
511
|
|
- echo '' >> /home/$MY_USERNAME/README
|
512
|
|
- echo $'If you want to disable new account registrations then append the following:' >> /home/$MY_USERNAME/README
|
513
|
|
- echo ' [service]' >> /home/$MY_USERNAME/README
|
514
|
|
- echo ' DISABLE_REGISTRATION = true' >> /home/$MY_USERNAME/README
|
515
|
|
- echo $'Then restart with:' >> /home/$MY_USERNAME/README
|
516
|
|
- echo ' systemctl restart gogs' >> /home/$MY_USERNAME/README
|
517
|
|
- echo '' >> /home/$MY_USERNAME/README
|
518
|
|
- echo $"Note that there's a usability/security trade-off made here." >> /home/$MY_USERNAME/README
|
519
|
|
- echo $"In order to allow git clone via http we don't redirect everything" >> /home/$MY_USERNAME/README
|
520
|
|
- echo $'over https. Instead only critical things such as user login,' >> /home/$MY_USERNAME/README
|
521
|
|
- echo $'settings and admin are encrypted.' >> /home/$MY_USERNAME/README
|
522
|
|
- echo $'There are also potential security issues with cloning/pulling/pushing' >> /home/$MY_USERNAME/README
|
523
|
|
- echo $'code over http, since a determined adversary could inject malware' >> /home/$MY_USERNAME/README
|
524
|
|
- echo $'into the stream as it passes, so beware.' >> /home/$MY_USERNAME/README
|
525
|
|
- echo $'If you have a bought domain and a non-self signed cert then you' >> /home/$MY_USERNAME/README
|
526
|
|
- echo $"should change /etc/nginx/sites-available/$GIT_DOMAIN_NAME to redirect everything over https." >> /home/$MY_USERNAME/README
|
527
|
|
- chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
|
528
|
|
- chmod 600 /home/$MY_USERNAME/README
|
|
475
|
+ if ! grep -q $"Gogs admin user password" /home/${MY_USERNAME}/README; then
|
|
476
|
+ echo '' >> /home/${MY_USERNAME}/README
|
|
477
|
+ echo '' >> /home/${MY_USERNAME}/README
|
|
478
|
+ echo 'Gogs' >> /home/${MY_USERNAME}/README
|
|
479
|
+ echo '====' >> /home/${MY_USERNAME}/README
|
|
480
|
+ echo $'Install Steps For First-time Run:' >> /home/${MY_USERNAME}/README
|
|
481
|
+ echo $'Leave email service settings empty' >> /home/${MY_USERNAME}/README
|
|
482
|
+ echo $'Check "Enable Register Confirmation"' >> /home/${MY_USERNAME}/README
|
|
483
|
+ echo $'Check "Enable Mail Notification"' >> /home/${MY_USERNAME}/README
|
|
484
|
+ echo '' >> /home/${MY_USERNAME}/README
|
|
485
|
+ echo $'If you want to disable new account registrations then append the following:' >> /home/${MY_USERNAME}/README
|
|
486
|
+ echo ' [service]' >> /home/${MY_USERNAME}/README
|
|
487
|
+ echo ' DISABLE_REGISTRATION = true' >> /home/${MY_USERNAME}/README
|
|
488
|
+ echo $'Then restart with:' >> /home/${MY_USERNAME}/README
|
|
489
|
+ echo ' systemctl restart gogs' >> /home/${MY_USERNAME}/README
|
|
490
|
+ echo '' >> /home/${MY_USERNAME}/README
|
|
491
|
+ echo $"Note that there's a usability/security trade-off made here." >> /home/${MY_USERNAME}/README
|
|
492
|
+ echo $"In order to allow git clone via http we don't redirect everything" >> /home/${MY_USERNAME}/README
|
|
493
|
+ echo $'over https. Instead only critical things such as user login,' >> /home/${MY_USERNAME}/README
|
|
494
|
+ echo $'settings and admin are encrypted.' >> /home/${MY_USERNAME}/README
|
|
495
|
+ echo $'There are also potential security issues with cloning/pulling/pushing' >> /home/${MY_USERNAME}/README
|
|
496
|
+ echo $'code over http, since a determined adversary could inject malware' >> /home/${MY_USERNAME}/README
|
|
497
|
+ echo $'into the stream as it passes, so beware.' >> /home/${MY_USERNAME}/README
|
|
498
|
+ echo $'If you have a bought domain and a non-self signed cert then you' >> /home/${MY_USERNAME}/README
|
|
499
|
+ echo $"should change /etc/nginx/sites-available/${GIT_DOMAIN_NAME} to redirect everything over https." >> /home/${MY_USERNAME}/README
|
|
500
|
+ chown ${MY_USERNAME}:${MY_USERNAME} /home/${MY_USERNAME}/README
|
|
501
|
+ chmod 600 /home/${MY_USERNAME}/README
|
529
|
502
|
fi
|
530
|
503
|
|
531
|
504
|
function_check initialise_database
|
532
|
|
- initialise_database gogs /home/$GOGS_USERNAME/scripts/mysql.sql
|
|
505
|
+ initialise_database gogs /home/${GOGS_USERNAME}/scripts/mysql.sql
|
533
|
506
|
|
534
|
|
- chown -R $GOGS_USERNAME:$GOGS_USERNAME /home/$GOGS_USERNAME
|
|
507
|
+ chown -R ${GOGS_USERNAME}:${GOGS_USERNAME} /home/${GOGS_USERNAME}
|
535
|
508
|
|
536
|
509
|
echo '[Unit]' > /etc/systemd/system/gogs.service
|
537
|
510
|
echo 'Description=Gogs (Go Git Service)' >> /etc/systemd/system/gogs.service
|
|
@@ -545,11 +518,11 @@ function install_gogs {
|
545
|
518
|
echo 'Type=simple' >> /etc/systemd/system/gogs.service
|
546
|
519
|
echo 'User=gogs' >> /etc/systemd/system/gogs.service
|
547
|
520
|
echo 'Group=gogs' >> /etc/systemd/system/gogs.service
|
548
|
|
- echo "WorkingDirectory=/home/$GOGS_USERNAME" >> /etc/systemd/system/gogs.service
|
549
|
|
- echo "ExecStart=/home/$GOGS_USERNAME/gogs web" >> /etc/systemd/system/gogs.service
|
|
521
|
+ echo "WorkingDirectory=/home/${GOGS_USERNAME}" >> /etc/systemd/system/gogs.service
|
|
522
|
+ echo "ExecStart=/home/${GOGS_USERNAME}/gogs web" >> /etc/systemd/system/gogs.service
|
550
|
523
|
echo 'Restart=always' >> /etc/systemd/system/gogs.service
|
551
|
524
|
echo 'RestartSec=10' >> /etc/systemd/system/gogs.service
|
552
|
|
- echo "Environment=\"USER=$GOGS_USERNAME\" \"HOME=/home/$GOGS_USERNAME\" \"GOPATH=/home/go/go${GO_VERSION}\"" >> /etc/systemd/system/gogs.service
|
|
525
|
+ echo "Environment=\"USER=${GOGS_USERNAME}\" \"HOME=/home/${GOGS_USERNAME}\" \"GOPATH=/home/go/go${GO_VERSION}\"" >> /etc/systemd/system/gogs.service
|
553
|
526
|
echo '' >> /etc/systemd/system/gogs.service
|
554
|
527
|
echo '[Install]' >> /etc/systemd/system/gogs.service
|
555
|
528
|
echo 'WantedBy=multi-user.target' >> /etc/systemd/system/gogs.service
|
|
@@ -558,86 +531,86 @@ function install_gogs {
|
558
|
531
|
systemctl daemon-reload
|
559
|
532
|
systemctl start gogs
|
560
|
533
|
|
561
|
|
- if [ ! -d /var/www/$GIT_DOMAIN_NAME ]; then
|
562
|
|
- mkdir /var/www/$GIT_DOMAIN_NAME
|
|
534
|
+ if [ ! -d /var/www/${GIT_DOMAIN_NAME} ]; then
|
|
535
|
+ mkdir /var/www/${GIT_DOMAIN_NAME}
|
563
|
536
|
fi
|
564
|
|
- if [ -d /var/www/$GIT_DOMAIN_NAME/htdocs ]; then
|
565
|
|
- rm -rf /var/www/$GIT_DOMAIN_NAME/htdocs
|
|
537
|
+ if [ -d /var/www/${GIT_DOMAIN_NAME}/htdocs ]; then
|
|
538
|
+ rm -rf /var/www/${GIT_DOMAIN_NAME}/htdocs
|
566
|
539
|
fi
|
567
|
540
|
|
568
|
|
- if [[ $ONION_ONLY == "no" ]]; then
|
|
541
|
+ if [[ ${ONION_ONLY} == "no" ]]; then
|
569
|
542
|
function_check nginx_http_redirect
|
570
|
|
- nginx_http_redirect $GIT_DOMAIN_NAME
|
571
|
|
- echo 'server {' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
572
|
|
- echo ' listen 443 ssl;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
573
|
|
- echo " root /var/www/$GIT_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
574
|
|
- echo " server_name $GIT_DOMAIN_NAME;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
575
|
|
- echo ' access_log off;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
576
|
|
- echo " error_log /var/log/nginx/${GIT_DOMAIN_NAME}_error.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
577
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
543
|
+ nginx_http_redirect ${GIT_DOMAIN_NAME}
|
|
544
|
+ echo 'server {' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
545
|
+ echo ' listen 443 ssl;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
546
|
+ echo " root /var/www/${GIT_DOMAIN_NAME}/htdocs;" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
547
|
+ echo " server_name ${GIT_DOMAIN_NAME};" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
548
|
+ echo ' access_log off;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
549
|
+ echo " error_log /var/log/nginx/${GIT_DOMAIN_NAME}_error.log ${WEBSERVER_LOG_LEVEL};" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
550
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
578
|
551
|
function_check nginx_ssl
|
579
|
|
- nginx_ssl $GIT_DOMAIN_NAME
|
|
552
|
+ nginx_ssl ${GIT_DOMAIN_NAME}
|
580
|
553
|
function_check nginx_disable_sniffing
|
581
|
|
- nginx_disable_sniffing $GIT_DOMAIN_NAME
|
582
|
|
- echo ' add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
583
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
584
|
|
- echo ' location / {' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
554
|
+ nginx_disable_sniffing ${GIT_DOMAIN_NAME}
|
|
555
|
+ echo ' add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
556
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
557
|
+ echo ' location / {' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
585
|
558
|
function_check nginx_limits
|
586
|
|
- nginx_limits $GIT_DOMAIN_NAME '10G'
|
587
|
|
- echo ' proxy_pass http://localhost:3000;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
588
|
|
- echo ' }' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
589
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
590
|
|
- echo ' fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
591
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
592
|
|
- echo ' error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
593
|
|
- echo ' error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
594
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
595
|
|
- echo ' location = /robots.txt {' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
596
|
|
- echo ' allow all;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
597
|
|
- echo ' log_not_found off;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
598
|
|
- echo ' access_log off;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
599
|
|
- echo ' }' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
600
|
|
- echo '}' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
601
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
559
|
+ nginx_limits ${GIT_DOMAIN_NAME} '10G'
|
|
560
|
+ echo ' proxy_pass http://localhost:3000;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
561
|
+ echo ' }' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
562
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
563
|
+ echo ' fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
564
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
565
|
+ echo ' error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
566
|
+ echo ' error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
567
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
568
|
+ echo ' location = /robots.txt {' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
569
|
+ echo ' allow all;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
570
|
+ echo ' log_not_found off;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
571
|
+ echo ' access_log off;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
572
|
+ echo ' }' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
573
|
+ echo '}' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
574
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
602
|
575
|
else
|
603
|
|
- echo -n '' > /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
604
|
|
- fi
|
605
|
|
- echo 'server {' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
606
|
|
- echo " listen 127.0.0.1:${GIT_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
607
|
|
- echo " root /var/www/$GIT_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
608
|
|
- echo " server_name $GIT_DOMAIN_NAME;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
609
|
|
- echo ' access_log off;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
610
|
|
- echo " error_log /var/log/nginx/${GIT_DOMAIN_NAME}_error.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
611
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
576
|
+ echo -n '' > /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
577
|
+ fi
|
|
578
|
+ echo 'server {' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
579
|
+ echo " listen 127.0.0.1:${GIT_ONION_PORT} default_server;" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
580
|
+ echo " root /var/www/$GIT_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
581
|
+ echo " server_name $GIT_DOMAIN_NAME;" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
582
|
+ echo ' access_log off;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
583
|
+ echo " error_log /var/log/nginx/${GIT_DOMAIN_NAME}_error.log ${WEBSERVER_LOG_LEVEL};" >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
584
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
612
|
585
|
function_check nginx_disable_sniffing
|
613
|
|
- nginx_disable_sniffing $GIT_DOMAIN_NAME
|
614
|
|
- echo ' add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
615
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
616
|
|
- echo ' location / {' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
586
|
+ nginx_disable_sniffing ${GIT_DOMAIN_NAME}
|
|
587
|
+ echo ' add_header Strict-Transport-Security max-age=0;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
588
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
589
|
+ echo ' location / {' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
617
|
590
|
function_check nginx_limits
|
618
|
|
- nginx_limits $GIT_DOMAIN_NAME '10G'
|
619
|
|
- echo ' proxy_pass http://localhost:3000;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
620
|
|
- echo ' }' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
621
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
622
|
|
- echo ' fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
623
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
624
|
|
- echo ' error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
625
|
|
- echo ' error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
626
|
|
- echo '' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
627
|
|
- echo ' location = /robots.txt {' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
628
|
|
- echo ' allow all;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
629
|
|
- echo ' log_not_found off;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
630
|
|
- echo ' access_log off;' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
631
|
|
- echo ' }' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
632
|
|
- echo '}' >> /etc/nginx/sites-available/$GIT_DOMAIN_NAME
|
|
591
|
+ nginx_limits ${GIT_DOMAIN_NAME} '10G'
|
|
592
|
+ echo ' proxy_pass http://localhost:3000;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
593
|
+ echo ' }' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
594
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
595
|
+ echo ' fastcgi_buffers 64 4K;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
596
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
597
|
+ echo ' error_page 403 /core/templates/403.php;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
598
|
+ echo ' error_page 404 /core/templates/404.php;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
599
|
+ echo '' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
600
|
+ echo ' location = /robots.txt {' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
601
|
+ echo ' allow all;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
602
|
+ echo ' log_not_found off;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
603
|
+ echo ' access_log off;' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
604
|
+ echo ' }' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
|
605
|
+ echo '}' >> /etc/nginx/sites-available/${GIT_DOMAIN_NAME}
|
633
|
606
|
|
634
|
607
|
function_check configure_php
|
635
|
608
|
configure_php
|
636
|
609
|
|
637
|
610
|
function_check create_site_certificate
|
638
|
|
- create_site_certificate $GIT_DOMAIN_NAME 'yes'
|
|
611
|
+ create_site_certificate ${GIT_DOMAIN_NAME} 'yes'
|
639
|
612
|
|
640
|
|
- nginx_ensite $GIT_DOMAIN_NAME
|
|
613
|
+ nginx_ensite ${GIT_DOMAIN_NAME}
|
641
|
614
|
|
642
|
615
|
if [ ! -d /var/lib/tor ]; then
|
643
|
616
|
echo $'No Tor installation found. Gogs onion site cannot be configured.'
|
|
@@ -660,105 +633,105 @@ function install_gogs {
|
660
|
633
|
systemctl restart php5-fpm
|
661
|
634
|
systemctl restart nginx
|
662
|
635
|
|
663
|
|
- if ! grep -q "Gogs onion domain" /home/$MY_USERNAME/README; then
|
664
|
|
- echo "Gogs onion domain: ${GIT_ONION_HOSTNAME}" >> /home/$MY_USERNAME/README
|
665
|
|
- echo '' >> /home/$MY_USERNAME/README
|
666
|
|
- chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
|
667
|
|
- chmod 600 /home/$MY_USERNAME/README
|
|
636
|
+ if ! grep -q "Gogs onion domain" /home/${MY_USERNAME}/README; then
|
|
637
|
+ echo "Gogs onion domain: ${GIT_ONION_HOSTNAME}" >> /home/${MY_USERNAME}/README
|
|
638
|
+ echo '' >> /home/${MY_USERNAME}/README
|
|
639
|
+ chown ${MY_USERNAME}:${MY_USERNAME} /home/${MY_USERNAME}/README
|
|
640
|
+ chmod 600 /home/${MY_USERNAME}/README
|
668
|
641
|
fi
|
669
|
642
|
|
670
|
|
- if ! grep -q "gogs onion domain" $COMPLETION_FILE; then
|
671
|
|
- echo "gogs onion domain:${GIT_ONION_HOSTNAME}" >> $COMPLETION_FILE
|
|
643
|
+ if ! grep -q "gogs onion domain" ${COMPLETION_FILE}; then
|
|
644
|
+ echo "gogs onion domain:${GIT_ONION_HOSTNAME}" >> ${COMPLETION_FILE}
|
672
|
645
|
else
|
673
|
|
- sed -i "s|gogs onion domain.*|gogs onion domain:${GIT_ONION_HOSTNAME}|g" $COMPLETION_FILE
|
|
646
|
+ sed -i "s|gogs onion domain.*|gogs onion domain:${GIT_ONION_HOSTNAME}|g" ${COMPLETION_FILE}
|
674
|
647
|
fi
|
675
|
648
|
|
676
|
649
|
function_check add_ddns_domain
|
677
|
|
- add_ddns_domain $GIT_DOMAIN_NAME
|
|
650
|
+ add_ddns_domain ${GIT_DOMAIN_NAME}
|
678
|
651
|
|
679
|
652
|
# obtain the secret key
|
680
|
653
|
GOGS_SECRET_KEY=
|
681
|
|
- if grep -q "Gogs secret key:" /home/$MY_USERNAME/README; then
|
682
|
|
- GOGS_SECRET_KEY=$(cat /home/$MY_USERNAME/README | grep "Gogs secret key:" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
|
654
|
+ if grep -q "Gogs secret key:" /home/${MY_USERNAME}/README; then
|
|
655
|
+ GOGS_SECRET_KEY=$(cat /home/${MY_USERNAME}/README | grep "Gogs secret key:" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
683
|
656
|
else
|
684
|
657
|
GOGS_SECRET_KEY="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
|
685
|
|
- echo "Gogs secret key:$GOGS_SECRET_KEY" >> /home/$MY_USERNAME/README
|
686
|
|
- chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
|
|
658
|
+ echo "Gogs secret key:${GOGS_SECRET_KEY}" >> /home/${MY_USERNAME}/README
|
|
659
|
+ chown $MY_USERNAME:$MY_USERNAME /home/${MY_USERNAME}/README
|
687
|
660
|
fi
|
688
|
661
|
|
689
|
662
|
# create the configuration
|
690
|
|
- GOGS_CONFIG_PATH=/home/$GOGS_USERNAME/custom/conf
|
691
|
|
- if [ ! -d $GOGS_CONFIG_PATH ]; then
|
692
|
|
- mkdir -p $GOGS_CONFIG_PATH
|
693
|
|
- fi
|
694
|
|
- GOGS_CONFIG_FILE=$GOGS_CONFIG_PATH/app.ini
|
695
|
|
- echo "RUN_USER = $GOGS_USERNAME" > $GOGS_CONFIG_FILE
|
696
|
|
- echo 'RUN_MODE = prod' >> $GOGS_CONFIG_FILE
|
697
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
698
|
|
- echo '[database]' >> $GOGS_CONFIG_FILE
|
699
|
|
- echo 'DB_TYPE = mysql' >> $GOGS_CONFIG_FILE
|
700
|
|
- echo 'HOST = 127.0.0.1:3306' >> $GOGS_CONFIG_FILE
|
701
|
|
- echo 'NAME = gogs' >> $GOGS_CONFIG_FILE
|
702
|
|
- echo 'USER = root' >> $GOGS_CONFIG_FILE
|
703
|
|
- echo "PASSWD = $MARIADB_PASSWORD" >> $GOGS_CONFIG_FILE
|
704
|
|
- echo 'SSL_MODE = disable' >> $GOGS_CONFIG_FILE
|
705
|
|
- echo 'PATH = data/gogs.db' >> $GOGS_CONFIG_FILE
|
706
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
707
|
|
- echo '[repository]' >> $GOGS_CONFIG_FILE
|
708
|
|
- echo "ROOT = /home/$GOGS_USERNAME/gogs-repositories" >> $GOGS_CONFIG_FILE
|
709
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
710
|
|
- echo '[server]' >> $GOGS_CONFIG_FILE
|
711
|
|
- if [[ $ONION_ONLY == 'no' ]]; then
|
712
|
|
- echo "DOMAIN = ${GIT_DOMAIN_NAME}" >> $GOGS_CONFIG_FILE
|
|
663
|
+ GOGS_CONFIG_PATH=/home/${GOGS_USERNAME}/custom/conf
|
|
664
|
+ if [ ! -d ${GOGS_CONFIG_PATH} ]; then
|
|
665
|
+ mkdir -p ${GOGS_CONFIG_PATH}
|
|
666
|
+ fi
|
|
667
|
+ GOGS_CONFIG_FILE=${GOGS_CONFIG_PATH}/app.ini
|
|
668
|
+ echo "RUN_USER = $GOGS_USERNAME" > ${GOGS_CONFIG_FILE}
|
|
669
|
+ echo 'RUN_MODE = prod' >> ${GOGS_CONFIG_FILE}
|
|
670
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
671
|
+ echo '[database]' >> ${GOGS_CONFIG_FILE}
|
|
672
|
+ echo 'DB_TYPE = mysql' >> ${GOGS_CONFIG_FILE}
|
|
673
|
+ echo 'HOST = 127.0.0.1:3306' >> ${GOGS_CONFIG_FILE}
|
|
674
|
+ echo 'NAME = gogs' >> ${GOGS_CONFIG_FILE}
|
|
675
|
+ echo 'USER = root' >> ${GOGS_CONFIG_FILE}
|
|
676
|
+ echo "PASSWD = $MARIADB_PASSWORD" >> ${GOGS_CONFIG_FILE}
|
|
677
|
+ echo 'SSL_MODE = disable' >> ${GOGS_CONFIG_FILE}
|
|
678
|
+ echo 'PATH = data/gogs.db' >> ${GOGS_CONFIG_FILE}
|
|
679
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
680
|
+ echo '[repository]' >> ${GOGS_CONFIG_FILE}
|
|
681
|
+ echo "ROOT = /home/$GOGS_USERNAME/gogs-repositories" >> ${GOGS_CONFIG_FILE}
|
|
682
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
683
|
+ echo '[server]' >> ${GOGS_CONFIG_FILE}
|
|
684
|
+ if [[ ${ONION_ONLY} == 'no' ]]; then
|
|
685
|
+ echo "DOMAIN = ${GIT_DOMAIN_NAME}" >> ${GOGS_CONFIG_FILE}
|
713
|
686
|
else
|
714
|
|
- echo "DOMAIN = ${GIT_ONION_HOSTNAME}" >> $GOGS_CONFIG_FILE
|
715
|
|
- fi
|
716
|
|
- echo 'HTTP_PORT = 3000' >> $GOGS_CONFIG_FILE
|
717
|
|
- echo "ROOT_URL = http://$GIT_DOMAIN_NAME/" >> $GOGS_CONFIG_FILE
|
718
|
|
- echo "SSH_PORT = $SSH_PORT" >> $GOGS_CONFIG_FILE
|
719
|
|
- echo 'SSH_DOMAIN = %(DOMAIN)s' >> $GOGS_CONFIG_FILE
|
720
|
|
- echo "CERT_FILE = /etc/ssl/certs/${GIT_DOMAIN_NAME}.pem" >> $GOGS_CONFIG_FILE
|
721
|
|
- echo "KEY_FILE = /etc/ssl/private/${GIT_DOMAIN_NAME}.key" >> $GOGS_CONFIG_FILE
|
722
|
|
- echo 'DISABLE_ROUTER_LOG = true' >> $GOGS_CONFIG_FILE
|
723
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
724
|
|
- echo '[session]' >> $GOGS_CONFIG_FILE
|
725
|
|
- echo 'PROVIDER = file' >> $GOGS_CONFIG_FILE
|
726
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
727
|
|
- echo '[log]' >> $GOGS_CONFIG_FILE
|
728
|
|
- echo 'MODE = file' >> $GOGS_CONFIG_FILE
|
729
|
|
- echo 'LEVEL = Info' >> $GOGS_CONFIG_FILE
|
730
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
731
|
|
- echo '[security]' >> $GOGS_CONFIG_FILE
|
732
|
|
- echo 'INSTALL_LOCK = true' >> $GOGS_CONFIG_FILE
|
733
|
|
- echo "SECRET_KEY = $GOGS_SECRET_KEY" >> $GOGS_CONFIG_FILE
|
734
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
735
|
|
- echo '[service]' >> $GOGS_CONFIG_FILE
|
736
|
|
- echo 'DISABLE_REGISTRATION = false' >> $GOGS_CONFIG_FILE
|
737
|
|
- echo 'SHOW_REGISTRATION_BUTTON = true' >> $GOGS_CONFIG_FILE
|
738
|
|
- echo 'REQUIRE_SIGNIN_VIEW = false' >> $GOGS_CONFIG_FILE
|
739
|
|
- echo 'ENABLE_CAPTCHA = false' >> $GOGS_CONFIG_FILE
|
740
|
|
- echo '' >> $GOGS_CONFIG_FILE
|
741
|
|
- echo '[other]' >> $GOGS_CONFIG_FILE
|
742
|
|
- echo 'SHOW_FOOTER_BRANDING = false' >> $GOGS_CONFIG_FILE
|
743
|
|
- echo 'SHOW_FOOTER_VERSION = false' >> $GOGS_CONFIG_FILE
|
744
|
|
-
|
745
|
|
- chmod 750 $GOGS_CONFIG_FILE
|
746
|
|
- chown -R $GOGS_USERNAME:$GOGS_USERNAME /home/$GOGS_USERNAME
|
|
687
|
+ echo "DOMAIN = ${GIT_ONION_HOSTNAME}" >> ${GOGS_CONFIG_FILE}
|
|
688
|
+ fi
|
|
689
|
+ echo 'HTTP_PORT = 3000' >> ${GOGS_CONFIG_FILE}
|
|
690
|
+ echo "ROOT_URL = http://$GIT_DOMAIN_NAME/" >> ${GOGS_CONFIG_FILE}
|
|
691
|
+ echo "SSH_PORT = $SSH_PORT" >> ${GOGS_CONFIG_FILE}
|
|
692
|
+ echo 'SSH_DOMAIN = %(DOMAIN)s' >> ${GOGS_CONFIG_FILE}
|
|
693
|
+ echo "CERT_FILE = /etc/ssl/certs/${GIT_DOMAIN_NAME}.pem" >> ${GOGS_CONFIG_FILE}
|
|
694
|
+ echo "KEY_FILE = /etc/ssl/private/${GIT_DOMAIN_NAME}.key" >> ${GOGS_CONFIG_FILE}
|
|
695
|
+ echo 'DISABLE_ROUTER_LOG = true' >> ${GOGS_CONFIG_FILE}
|
|
696
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
697
|
+ echo '[session]' >> ${GOGS_CONFIG_FILE}
|
|
698
|
+ echo 'PROVIDER = file' >> ${GOGS_CONFIG_FILE}
|
|
699
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
700
|
+ echo '[log]' >> ${GOGS_CONFIG_FILE}
|
|
701
|
+ echo 'MODE = file' >> ${GOGS_CONFIG_FILE}
|
|
702
|
+ echo 'LEVEL = Info' >> ${GOGS_CONFIG_FILE}
|
|
703
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
704
|
+ echo '[security]' >> ${GOGS_CONFIG_FILE}
|
|
705
|
+ echo 'INSTALL_LOCK = true' >> ${GOGS_CONFIG_FILE}
|
|
706
|
+ echo "SECRET_KEY = $GOGS_SECRET_KEY" >> ${GOGS_CONFIG_FILE}
|
|
707
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
708
|
+ echo '[service]' >> ${GOGS_CONFIG_FILE}
|
|
709
|
+ echo 'DISABLE_REGISTRATION = false' >> ${GOGS_CONFIG_FILE}
|
|
710
|
+ echo 'SHOW_REGISTRATION_BUTTON = true' >> ${GOGS_CONFIG_FILE}
|
|
711
|
+ echo 'REQUIRE_SIGNIN_VIEW = false' >> ${GOGS_CONFIG_FILE}
|
|
712
|
+ echo 'ENABLE_CAPTCHA = false' >> ${GOGS_CONFIG_FILE}
|
|
713
|
+ echo '' >> ${GOGS_CONFIG_FILE}
|
|
714
|
+ echo '[other]' >> ${GOGS_CONFIG_FILE}
|
|
715
|
+ echo 'SHOW_FOOTER_BRANDING = false' >> ${GOGS_CONFIG_FILE}
|
|
716
|
+ echo 'SHOW_FOOTER_VERSION = false' >> ${GOGS_CONFIG_FILE}
|
|
717
|
+
|
|
718
|
+ chmod 750 ${GOGS_CONFIG_FILE}
|
|
719
|
+ chown -R ${GOGS_USERNAME}:${GOGS_USERNAME} /home/${GOGS_USERNAME}
|
747
|
720
|
|
748
|
721
|
systemctl restart gogs
|
749
|
722
|
|
750
|
|
- if ! grep -q "gogs domain:" $COMPLETION_FILE; then
|
751
|
|
- echo "gogs domain:$GIT_DOMAIN_NAME" >> $COMPLETION_FILE
|
|
723
|
+ if ! grep -q "gogs domain:" ${COMPLETION_FILE}; then
|
|
724
|
+ echo "gogs domain:${GIT_DOMAIN_NAME}" >> ${COMPLETION_FILE}
|
752
|
725
|
else
|
753
|
|
- sed -i "s|gogs domain.*|gogs domain:$GIT_DOMAIN_NAME|g" $COMPLETION_FILE
|
|
726
|
+ sed -i "s|gogs domain.*|gogs domain:${GIT_DOMAIN_NAME}|g" ${COMPLETION_FILE}
|
754
|
727
|
fi
|
755
|
728
|
|
756
|
729
|
function_check configure_firewall_for_git
|
757
|
730
|
configure_firewall_for_git
|
758
|
|
- if ! grep -q "gogs version:" $COMPLETION_FILE; then
|
759
|
|
- echo "gogs version:$GOGS_VERSION" >> $COMPLETION_FILE
|
|
731
|
+ if ! grep -q "gogs version:" ${COMPLETION_FILE}; then
|
|
732
|
+ echo "gogs version:${GOGS_VERSION}" >> ${COMPLETION_FILE}
|
760
|
733
|
else
|
761
|
|
- sed -i "s|gogs version.*|gogs version:$GOGS_VERSION|g" $COMPLETION_FILE
|
|
734
|
+ sed -i "s|gogs version.*|gogs version:${GOGS_VERSION}|g" ${COMPLETION_FILE}
|
762
|
735
|
fi
|
763
|
736
|
}
|
764
|
737
|
|