|
@@ -48,6 +48,33 @@ lychee_variables=(LYCHEE_REPO
|
48
|
48
|
MY_USERNAME)
|
49
|
49
|
|
50
|
50
|
|
|
51
|
+function get_mariadb_git_admin_password {
|
|
52
|
+ if [ -f /home/${MY_USERNAME}/README ]; then
|
|
53
|
+ if grep -q "Lychee admin user password" /home/${MY_USERNAME}/README; then
|
|
54
|
+ GIT_ADMIN_PASSWORD=$(cat /home/${MY_USERNAME}/README | grep "Lychee admin user password" | awk -F ':' '{print $2}' | sed 's/^ *//')
|
|
55
|
+ fi
|
|
56
|
+ fi
|
|
57
|
+}
|
|
58
|
+
|
|
59
|
+function lychee_create_database {
|
|
60
|
+ function_check get_mariadb_git_admin_password
|
|
61
|
+ get_mariadb_git_admin_password
|
|
62
|
+
|
|
63
|
+ if [ ! ${GIT_ADMIN_PASSWORD} ]; then
|
|
64
|
+ if [ -f ${IMAGE_PASSWORD_FILE} ]; then
|
|
65
|
+ GIT_ADMIN_PASSWORD="$(printf `cat $IMAGE_PASSWORD_FILE`)"
|
|
66
|
+ else
|
|
67
|
+ GIT_ADMIN_PASSWORD="$(create_password ${MINIMUM_PASSWORD_LENGTH})"
|
|
68
|
+ fi
|
|
69
|
+ fi
|
|
70
|
+ if [ ! $GIT_ADMIN_PASSWORD ]; then
|
|
71
|
+ return
|
|
72
|
+ fi
|
|
73
|
+
|
|
74
|
+ function_check create_database
|
|
75
|
+ create_database lychee "$LYCHEE_ADMIN_PASSWORD"
|
|
76
|
+}
|
|
77
|
+
|
51
|
78
|
function remove_user_lychee {
|
52
|
79
|
remove_username="$1"
|
53
|
80
|
|
|
@@ -109,16 +136,12 @@ function backup_local_lychee {
|
109
|
136
|
LYCHEE_DOMAIN_NAME=$(get_completion_param "lychee domain")
|
110
|
137
|
fi
|
111
|
138
|
|
112
|
|
- source_directory=/var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
113
|
|
- if [ -d $source_directory ]; then
|
114
|
|
- dest_directory=lychee
|
115
|
|
- function_check suspend_site
|
116
|
|
- suspend_site ${LYCHEE_DOMAIN_NAME}
|
117
|
|
-
|
118
|
|
- function_check backup_directory_to_usb
|
119
|
|
- backup_directory_to_usb $source_directory $dest_directory
|
|
139
|
+ lychee_path=/var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
|
140
|
+ if [ -d $lychee_path ]; then
|
|
141
|
+ function_check backup_database_to_usb
|
|
142
|
+ backup_database_to_usb lychee
|
120
|
143
|
|
121
|
|
- function_check restart_site
|
|
144
|
+ backup_directory_to_usb $lychee_path lychee
|
122
|
145
|
restart_site
|
123
|
146
|
fi
|
124
|
147
|
}
|
|
@@ -129,89 +152,46 @@ function restore_local_lychee {
|
129
|
152
|
LYCHEE_DOMAIN_NAME=$(get_completion_param "lychee domain")
|
130
|
153
|
fi
|
131
|
154
|
if [ $LYCHEE_DOMAIN_NAME ]; then
|
132
|
|
- temp_restore_dir=/root/templychee
|
133
|
|
- if [ -d $USB_MOUNT/backup/lychee ]; then
|
134
|
|
- restore_directory_from_usb $temp_restore_dir lychee
|
135
|
|
- else
|
136
|
|
- restore_directory_from_usb $temp_restore_dir blog
|
137
|
|
- fi
|
138
|
|
- if [ -d /var/www/${LYCHEE_DOMAIN_NAME}/htdocs ]; then
|
139
|
|
- if [ -d /var/www/${LYCHEE_DOMAIN_NAME}/previous ]; then
|
140
|
|
- rm -rf /var/www/${LYCHEE_DOMAIN_NAME}/previous
|
141
|
|
- fi
|
142
|
|
- mv /var/www/${LYCHEE_DOMAIN_NAME}/htdocs /var/www/${LYCHEE_DOMAIN_NAME}/previous
|
143
|
|
- fi
|
144
|
|
- temp_source_dir=$(find ${temp_restore_dir} -name htdocs)
|
145
|
|
- cp -r ${temp_source_dir} /var/www/${LYCHEE_DOMAIN_NAME}/
|
146
|
|
- if [ ! "$?" = "0" ]; then
|
147
|
|
- if [ -d /var/www/${LYCHEE_DOMAIN_NAME}/previous ]; then
|
148
|
|
- mv /var/www/${LYCHEE_DOMAIN_NAME}/previous /var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
149
|
|
- fi
|
150
|
|
- set_user_permissions
|
151
|
|
- backup_unmount_drive
|
152
|
|
- exit 54675
|
153
|
|
- fi
|
154
|
|
- rm -rf ${temp_restore_dir}
|
155
|
|
- chown -R www-data:www-data /var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
156
|
|
- # Ensure that the bundled SSL cert is being used
|
157
|
|
- if [ -f /etc/ssl/certs/${LYCHEE_DOMAIN_NAME}.bundle.crt ]; then
|
158
|
|
- sed -i "s|${LYCHEE_DOMAIN_NAME}.crt|${LYCHEE_DOMAIN_NAME}.bundle.crt|g" /etc/nginx/sites-available/${LYCHEE_DOMAIN_NAME}
|
159
|
|
- fi
|
160
|
|
- if [ -d /etc/letsencrypt/live/${LYCHEE_DOMAIN_NAME} ]; then
|
161
|
|
- ln -s /etc/letsencrypt/live/${LYCHEE_DOMAIN_NAME}/privkey.pem /etc/ssl/private/${LYCHEE_DOMAIN_NAME}.key
|
162
|
|
- ln -s /etc/letsencrypt/live/${LYCHEE_DOMAIN_NAME}/fullchain.pem /etc/ssl/certs/${LYCHEE_DOMAIN_NAME}.pem
|
163
|
|
- fi
|
|
155
|
+ function_check lychee_create_database
|
|
156
|
+ lychee_create_database
|
|
157
|
+
|
|
158
|
+ function_check restore_database
|
|
159
|
+ restore_database lychee ${LYCHEE_DOMAIN_NAME}
|
164
|
160
|
fi
|
165
|
161
|
}
|
166
|
162
|
|
167
|
163
|
function backup_remote_lychee {
|
|
164
|
+ LYCHEE_DOMAIN_NAME='lychee.local'
|
168
|
165
|
if grep -q "lychee domain" $COMPLETION_FILE; then
|
169
|
166
|
LYCHEE_DOMAIN_NAME=$(get_completion_param "lychee domain")
|
170
|
|
- temp_backup_dir=/var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
171
|
|
- if [ -d $temp_backup_dir ]; then
|
172
|
|
- echo $"Backing up lychee"
|
173
|
|
- backup_directory_to_friend $temp_backup_dir lychee
|
174
|
|
- echo $"Backup of lychee complete"
|
175
|
|
- else
|
176
|
|
- echo $"Lychee domain specified but not found in $temp_backup_dir"
|
177
|
|
- exit 2578
|
178
|
|
- fi
|
|
167
|
+ fi
|
|
168
|
+
|
|
169
|
+ temp_backup_dir=/var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
|
170
|
+ if [ -d $temp_backup_dir ]; then
|
|
171
|
+ suspend_site ${LYCHEE_DOMAIN_NAME}
|
|
172
|
+ backup_database_to_friend lychee
|
|
173
|
+ backup_directory_to_friend $temp_backup_dir lychee
|
|
174
|
+ restart_site
|
|
175
|
+ else
|
|
176
|
+ echo $"Lychee domain specified but not found in /var/www/${LYCHEE_DOMAIN_NAME}"
|
|
177
|
+ exit 2578
|
179
|
178
|
fi
|
180
|
179
|
}
|
181
|
180
|
|
182
|
181
|
function restore_remote_lychee {
|
183
|
|
- if [ -d $SERVER_DIRECTORY/backup/lychee ]; then
|
|
182
|
+ LYCHEE_DOMAIN_NAME='lychee.local'
|
|
183
|
+ if grep -q "lychee domain" $COMPLETION_FILE; then
|
184
|
184
|
LYCHEE_DOMAIN_NAME=$(get_completion_param "lychee domain")
|
185
|
|
- echo $"Restoring lychee installation $LYCHEE_DOMAIN_NAME"
|
186
|
|
- temp_restore_dir=/root/templychee
|
187
|
|
- mkdir $temp_restore_dir
|
188
|
|
- function_check restore_directory_from_friend
|
189
|
|
- restore_directory_from_friend $temp_restore_dir lychee
|
190
|
|
- if [ -d /var/www/${LYCHEE_DOMAIN_NAME}/htdocs ]; then
|
191
|
|
- if [ -d /var/www/${LYCHEE_DOMAIN_NAME}/previous ]; then
|
192
|
|
- rm -rf /var/www/${LYCHEE_DOMAIN_NAME}/previous
|
193
|
|
- fi
|
194
|
|
- mv /var/www/${LYCHEE_DOMAIN_NAME}/htdocs /var/www/${LYCHEE_DOMAIN_NAME}/previous
|
195
|
|
- fi
|
196
|
|
- temp_source_dir=$(find ${temp_restore_dir} -name htdocs)
|
197
|
|
- cp -r ${temp_source_dir} /var/www/${LYCHEE_DOMAIN_NAME}/
|
198
|
|
- if [ ! "$?" = "0" ]; then
|
199
|
|
- if [ -d /var/www/${LYCHEE_DOMAIN_NAME}/previous ]; then
|
200
|
|
- mv /var/www/${LYCHEE_DOMAIN_NAME}/previous /var/www/${LYCHEE_DOMAIN_NAME}/htdocs
|
201
|
|
- fi
|
202
|
|
- exit 593
|
203
|
|
- fi
|
204
|
|
- rm -rf ${temp_restore_dir}
|
205
|
|
- # Ensure that the bundled SSL cert is being used
|
206
|
|
- if [ -f /etc/ssl/certs/${LYCHEE_DOMAIN_NAME}.bundle.crt ]; then
|
207
|
|
- sed -i "s|${LYCHEE_DOMAIN_NAME}.crt|${LYCHEE_DOMAIN_NAME}.bundle.crt|g" /etc/nginx/sites-available/${LYCHEE_DOMAIN_NAME}
|
208
|
|
- fi
|
209
|
|
- if [ -d /etc/letsencrypt/live/${LYCHEE_DOMAIN_NAME} ]; then
|
210
|
|
- ln -s /etc/letsencrypt/live/${LYCHEE_DOMAIN_NAME}/privkey.pem /etc/ssl/private/${LYCHEE_DOMAIN_NAME}.key
|
211
|
|
- ln -s /etc/letsencrypt/live/${LYCHEE_DOMAIN_NAME}/fullchain.pem /etc/ssl/certs/${LYCHEE_DOMAIN_NAME}.pem
|
212
|
|
- fi
|
213
|
|
- echo $"Restore of lychee complete"
|
214
|
185
|
fi
|
|
186
|
+
|
|
187
|
+ function_check restore_database_from_friend
|
|
188
|
+
|
|
189
|
+ function_check lychee_create_database
|
|
190
|
+ lychee_create_database
|
|
191
|
+
|
|
192
|
+ restore_database_from_friend lychee ${LYCHEE_DOMAIN_NAME}
|
|
193
|
+ restart_site
|
|
194
|
+ chown -R lychee: /var/www/$LYCHEE_DOMAIN_NAME/htdocs/
|
215
|
195
|
}
|
216
|
196
|
|
217
|
197
|
function remove_lychee {
|
|
@@ -222,6 +202,10 @@ function remove_lychee {
|
222
|
202
|
read_config_param "LYCHEE_DOMAIN_NAME"
|
223
|
203
|
nginx_dissite $LYCHEE_DOMAIN_NAME
|
224
|
204
|
remove_certs ${LYCHEE_DOMAIN_NAME}
|
|
205
|
+
|
|
206
|
+ drop_database lychee
|
|
207
|
+ remove_backup_database_local lychee
|
|
208
|
+
|
225
|
209
|
if [ -f /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME ]; then
|
226
|
210
|
rm -f /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
227
|
211
|
fi
|
|
@@ -272,7 +256,6 @@ function install_lychee_website {
|
272
|
256
|
echo ' location / {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
273
|
257
|
function_check nginx_limits
|
274
|
258
|
nginx_limits $LYCHEE_DOMAIN_NAME
|
275
|
|
- echo ' rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
276
|
259
|
echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
277
|
260
|
echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
278
|
261
|
echo " # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
@@ -281,20 +264,6 @@ function install_lychee_website {
|
281
|
264
|
echo ' allow all;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
282
|
265
|
echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
283
|
266
|
echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
284
|
|
- echo ' # statically serve these file types when possible' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
285
|
|
- echo ' # otherwise fall back to front controller' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
286
|
|
- echo ' # allow browser to cache them' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
287
|
|
- echo ' # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
288
|
|
- echo ' location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
289
|
|
- echo ' expires 30d;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
290
|
|
- echo ' try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
291
|
|
- echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
292
|
|
- echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
293
|
|
- echo ' # block these file types' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
294
|
|
- echo ' location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
295
|
|
- echo ' deny all;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
296
|
|
- echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
297
|
|
- echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
298
|
267
|
echo ' # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
299
|
268
|
echo ' # or a unix socket' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
300
|
269
|
echo ' location ~* \.php$ {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
@@ -339,7 +308,11 @@ function install_lychee_website_onion {
|
339
|
308
|
echo 'server {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
340
|
309
|
echo " listen 127.0.0.1:${LYCHEE_ONION_PORT} default_server;" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
341
|
310
|
echo " root /var/www/$LYCHEE_DOMAIN_NAME/htdocs;" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
342
|
|
- echo " server_name $LYCHEE_DOMAIN_NAME;" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
311
|
+ if [[ $ONION_ONLY == 'no' ]]; then
|
|
312
|
+ echo " server_name $LYCHEE_DOMAIN_NAME;" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
313
|
+ else
|
|
314
|
+ echo " server_name $LYCHEE_ONION_HOSTNAME;" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
315
|
+ fi
|
343
|
316
|
echo ' access_log off;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
344
|
317
|
echo " error_log /var/log/nginx/${LYCHEE_DOMAIN_NAME}_error_ssl.log $WEBSERVER_LOG_LEVEL;" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
345
|
318
|
echo ' index index.php;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
@@ -353,7 +326,6 @@ function install_lychee_website_onion {
|
353
|
326
|
echo ' location / {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
354
|
327
|
function_check nginx_limits
|
355
|
328
|
nginx_limits $LYCHEE_DOMAIN_NAME
|
356
|
|
- echo ' rewrite ^/(.*) /index.php?q=$uri&$args last;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
357
|
329
|
echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
358
|
330
|
echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
359
|
331
|
echo " # make sure webfinger and other well known services aren't blocked" >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
@@ -362,15 +334,6 @@ function install_lychee_website_onion {
|
362
|
334
|
echo ' allow all;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
363
|
335
|
echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
364
|
336
|
echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
365
|
|
- echo ' # statically serve these file types when possible' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
366
|
|
- echo ' # otherwise fall back to front controller' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
367
|
|
- echo ' # allow browser to cache them' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
368
|
|
- echo ' # added .htm for advanced source code editor library' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
369
|
|
- echo ' location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
370
|
|
- echo ' expires 30d;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
371
|
|
- echo ' try_files $uri /index.php?q=$uri&$args;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
372
|
|
- echo ' }' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
373
|
|
- echo '' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
374
|
337
|
echo ' # block these file types' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
375
|
338
|
echo ' location ~* \.(tpl|md|tgz|log|out)$ {' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
376
|
339
|
echo ' deny all;' >> /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
|
@@ -451,6 +414,9 @@ function install_lychee {
|
451
|
414
|
else
|
452
|
415
|
echo -n '' > /etc/nginx/sites-available/$LYCHEE_DOMAIN_NAME
|
453
|
416
|
fi
|
|
417
|
+
|
|
418
|
+ LYCHEE_ONION_HOSTNAME=$(add_onion_service lychee 80 ${LYCHEE_ONION_PORT})
|
|
419
|
+
|
454
|
420
|
function_check install_lychee_website_onion
|
455
|
421
|
install_lychee_website_onion
|
456
|
422
|
|
|
@@ -464,11 +430,18 @@ function install_lychee {
|
464
|
430
|
chmod -R 777 /var/www/$LYCHEE_DOMAIN_NAME/htdocs/data/
|
465
|
431
|
chown -R www-data:www-data /var/www/$LYCHEE_DOMAIN_NAME/htdocs
|
466
|
432
|
|
467
|
|
- LYCHEE_ONION_HOSTNAME=$(add_onion_service lychee 80 ${LYCHEE_ONION_PORT})
|
468
|
|
-
|
469
|
433
|
function_check nginx_ensite
|
470
|
434
|
nginx_ensite $LYCHEE_DOMAIN_NAME
|
471
|
435
|
|
|
436
|
+ function_check install_mariadb
|
|
437
|
+ install_mariadb
|
|
438
|
+
|
|
439
|
+ function_check get_mariadb_password
|
|
440
|
+ get_mariadb_password
|
|
441
|
+
|
|
442
|
+ function_check lychee_create_database
|
|
443
|
+ lychee_create_database
|
|
444
|
+
|
472
|
445
|
systemctl restart php5-fpm
|
473
|
446
|
systemctl restart nginx
|
474
|
447
|
|