|
@@ -382,4 +382,178 @@ function backup_apps {
|
382
|
382
|
done
|
383
|
383
|
}
|
384
|
384
|
|
|
385
|
+function restore_apps {
|
|
386
|
+ localremote=$1
|
|
387
|
+ FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
|
|
388
|
+
|
|
389
|
+ RESTORE_APPS_COMPLETED=()
|
|
390
|
+
|
|
391
|
+ # for all the app scripts
|
|
392
|
+ for filename in $FILES
|
|
393
|
+ do
|
|
394
|
+ app_name=$(echo "${filename}" | awk -F '-app-' '{print $2}')
|
|
395
|
+ if [[ $RESTORE_APP == 'all' || $RESTORE_APP == "${app_name}" ]]; then
|
|
396
|
+ if [[ $(item_in_array ${app_name} ${RESTORE_APPS_COMPLETED[@]}) != 0 ]]; then
|
|
397
|
+ function_check app_is_installed
|
|
398
|
+ if [[ "$(app_is_installed $a)" == "1" ]]; then
|
|
399
|
+ RESTORE_APPS_COMPLETED+=("${app_name}")
|
|
400
|
+ function_check restore_${localremote}_${app_name}
|
|
401
|
+ restore_${localremote}_${app_name}
|
|
402
|
+ fi
|
|
403
|
+ fi
|
|
404
|
+ fi
|
|
405
|
+ done
|
|
406
|
+}
|
|
407
|
+
|
|
408
|
+function restore_database_from_friend {
|
|
409
|
+ DATABASE_PASSWORD=
|
|
410
|
+ RESTORE_SUBDIR="root"
|
|
411
|
+
|
|
412
|
+ if [ -d $SERVER_DIRECTORY/backup/${1} ]; then
|
|
413
|
+ echo $"Restoring ${1} database"
|
|
414
|
+ restore_directory_from_friend /root/temp${1}data ${1}data
|
|
415
|
+ if [ ! -f /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then
|
|
416
|
+ echo $"Unable to restore ${1} database"
|
|
417
|
+ rm -rf /root/temp${1}data
|
|
418
|
+ exit 503
|
|
419
|
+ fi
|
|
420
|
+ mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${1} -o < /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql)
|
|
421
|
+ if [ ! "$?" = "0" ]; then
|
|
422
|
+ echo "$mysqlsuccess"
|
|
423
|
+ exit 964
|
|
424
|
+ fi
|
|
425
|
+ shred -zu /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/*
|
|
426
|
+ rm -rf /root/temp${1}data
|
|
427
|
+ echo $"Restoring ${1} installation"
|
|
428
|
+ restore_directory_from_friend /root/temp${1} ${1}
|
|
429
|
+ RESTORE_SUBDIR="var"
|
|
430
|
+ if [ ${1} ]; then
|
|
431
|
+
|
|
432
|
+ # special handling of ttrss
|
|
433
|
+ if [[ ${2} == "ttrss" ]]; then
|
|
434
|
+ if [ -d /etc/share/tt-rss ]; then
|
|
435
|
+ rm -rf /etc/share/tt-rss
|
|
436
|
+ mv /root/temp${1}/etc/share/tt-rss /etc/share/
|
|
437
|
+ if [ ! "$?" = "0" ]; then
|
|
438
|
+ exit 639
|
|
439
|
+ fi
|
|
440
|
+ if [ -d /etc/letsencrypt/live/${2} ]; then
|
|
441
|
+ ln -s /etc/letsencrypt/live/${2}/privkey.pem /etc/ssl/private/${2}.key
|
|
442
|
+ ln -s /etc/letsencrypt/live/${2}/fullchain.pem /etc/ssl/certs/${2}.pem
|
|
443
|
+ else
|
|
444
|
+ # Ensure that the bundled SSL cert is being used
|
|
445
|
+ if [ -f /etc/ssl/certs/${2}.bundle.crt ]; then
|
|
446
|
+ sed -i "s|${2}.crt|${2}.bundle.crt|g" /etc/nginx/sites-available/${2}
|
|
447
|
+ fi
|
|
448
|
+ fi
|
|
449
|
+ fi
|
|
450
|
+ fi
|
|
451
|
+
|
|
452
|
+ if [ -d /var/www/${2}/htdocs ]; then
|
|
453
|
+ if [ -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then
|
|
454
|
+ rm -rf /var/www/${2}/htdocs
|
|
455
|
+ mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/
|
|
456
|
+ if [ ! "$?" = "0" ]; then
|
|
457
|
+ exit 683
|
|
458
|
+ fi
|
|
459
|
+ if [ -d /etc/letsencrypt/live/${2} ]; then
|
|
460
|
+ ln -s /etc/letsencrypt/live/${2}/privkey.pem /etc/ssl/private/${2}.key
|
|
461
|
+ ln -s /etc/letsencrypt/live/${2}/fullchain.pem /etc/ssl/certs/${2}.pem
|
|
462
|
+ else
|
|
463
|
+ # Ensure that the bundled SSL cert is being used
|
|
464
|
+ if [ -f /etc/ssl/certs/${2}.bundle.crt ]; then
|
|
465
|
+ sed -i "s|${2}.crt|${2}.bundle.crt|g" /etc/nginx/sites-available/${2}
|
|
466
|
+ fi
|
|
467
|
+ fi
|
|
468
|
+ fi
|
|
469
|
+ fi
|
|
470
|
+ fi
|
|
471
|
+ fi
|
|
472
|
+}
|
|
473
|
+
|
|
474
|
+function restore_database {
|
|
475
|
+ RESTORE_SUBDIR="root"
|
|
476
|
+
|
|
477
|
+ if [ -d $USB_MOUNT/backup/${1} ]; then
|
|
478
|
+ echo $"Restoring ${1} database"
|
|
479
|
+ function_check restore_directory_from_usb
|
|
480
|
+ restore_directory_from_usb "/root/temp${1}data" "${1}data"
|
|
481
|
+ if [ ! -f /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then
|
|
482
|
+ echo $"Unable to restore ${1} database"
|
|
483
|
+ rm -rf /root/temp${1}data
|
|
484
|
+ function_check set_user_permissions
|
|
485
|
+ set_user_permissions
|
|
486
|
+ function_check backup_unmount_drive
|
|
487
|
+ backup_unmount_drive
|
|
488
|
+ exit 503
|
|
489
|
+ fi
|
|
490
|
+ mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD ${1} -o < /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql)
|
|
491
|
+ if [ ! "$?" = "0" ]; then
|
|
492
|
+ echo "$mysqlsuccess"
|
|
493
|
+ function_check set_user_permissions
|
|
494
|
+ set_user_permissions
|
|
495
|
+ function_check set_user_permissions
|
|
496
|
+ backup_unmount_drive
|
|
497
|
+ exit 964
|
|
498
|
+ fi
|
|
499
|
+ shred -zu /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/*
|
|
500
|
+ rm -rf /root/temp${1}data
|
|
501
|
+ echo $"Restoring ${1} installation"
|
|
502
|
+ if [ ! -d /root/temp${1} ]; then
|
|
503
|
+ mkdir /root/temp${1}
|
|
504
|
+ fi
|
|
505
|
+ function_check restore_directory_from_usb
|
|
506
|
+ restore_directory_from_usb "/root/temp${1}" "${1}"
|
|
507
|
+ RESTORE_SUBDIR="var"
|
|
508
|
+ if [ ${2} ]; then
|
|
509
|
+ # special handline of ttrss
|
|
510
|
+ if [[ ${2} == "ttrss" ]]; then
|
|
511
|
+ if [ -d /etc/share/tt-rss ]; then
|
|
512
|
+ if [ -d /root/temp${1}/etc/share/tt-rss ]; then
|
|
513
|
+ rm -rf /etc/share/tt-rss
|
|
514
|
+ mv /root/temp${1}/etc/share/tt-rss /etc/share/
|
|
515
|
+ if [ ! "$?" = "0" ]; then
|
|
516
|
+ function_check set_user_permissions
|
|
517
|
+ set_user_permissions
|
|
518
|
+ function_check backup_unmount_drive
|
|
519
|
+ backup_unmount_drive
|
|
520
|
+ exit 528
|
|
521
|
+ fi
|
|
522
|
+ if [ -d /etc/letsencrypt/live/${2} ]; then
|
|
523
|
+ ln -s /etc/letsencrypt/live/${2}/privkey.pem /etc/ssl/private/${2}.key
|
|
524
|
+ ln -s /etc/letsencrypt/live/${2}/fullchain.pem /etc/ssl/certs/${2}.pem
|
|
525
|
+ else
|
|
526
|
+ # Ensure that the bundled SSL cert is being used
|
|
527
|
+ if [ -f /etc/ssl/certs/${2}.bundle.crt ]; then
|
|
528
|
+ sed -i "s|${2}.crt|${2}.bundle.crt|g" /etc/nginx/sites-available/${2}
|
|
529
|
+ fi
|
|
530
|
+ fi
|
|
531
|
+ fi
|
|
532
|
+ fi
|
|
533
|
+ fi
|
|
534
|
+
|
|
535
|
+ if [ -d /var/www/${2}/htdocs ]; then
|
|
536
|
+ if [ -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then
|
|
537
|
+ rm -rf /var/www/${2}/htdocs
|
|
538
|
+ mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/
|
|
539
|
+ if [ ! "$?" = "0" ]; then
|
|
540
|
+ set_user_permissions
|
|
541
|
+ backup_unmount_drive
|
|
542
|
+ exit 683
|
|
543
|
+ fi
|
|
544
|
+ if [ -d /etc/letsencrypt/live/${2} ]; then
|
|
545
|
+ ln -s /etc/letsencrypt/live/${2}/privkey.pem /etc/ssl/private/${2}.key
|
|
546
|
+ ln -s /etc/letsencrypt/live/${2}/fullchain.pem /etc/ssl/certs/${2}.pem
|
|
547
|
+ else
|
|
548
|
+ # Ensure that the bundled SSL cert is being used
|
|
549
|
+ if [ -f /etc/ssl/certs/${2}.bundle.crt ]; then
|
|
550
|
+ sed -i "s|${2}.crt|${2}.bundle.crt|g" /etc/nginx/sites-available/${2}
|
|
551
|
+ fi
|
|
552
|
+ fi
|
|
553
|
+ fi
|
|
554
|
+ fi
|
|
555
|
+ fi
|
|
556
|
+ fi
|
|
557
|
+}
|
|
558
|
+
|
385
|
559
|
# NOTE: deliberately no exit 0
|