Browse Source

Tidying of restore command

Bob Mottram 9 years ago
parent
commit
68442896af
2 changed files with 213 additions and 148 deletions
  1. 25
    12
      src/freedombone-backup-local
  2. 188
    136
      src/freedombone-restore-local

+ 25
- 12
src/freedombone-backup-local View File

53
     DATABASE_PASSWORD=$(cat /root/dbpass)
53
     DATABASE_PASSWORD=$(cat /root/dbpass)
54
 fi
54
 fi
55
 
55
 
56
-MICROBLOG_DOMAIN_NAME='microblog'
57
-if grep -q "GNU Social domain" $COMPLETION_FILE; then
58
-    MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
59
-fi
60
-HUBZILLA_DOMAIN_NAME='hubzilla'
61
-if grep -q "Hubzilla domain" $COMPLETION_FILE; then
62
-    HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
63
-fi
64
-FULLBLOG_DOMAIN_NAME='blog'
65
-if grep -q "Blog domain" $COMPLETION_FILE; then
66
-    FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
67
-fi
56
+
57
+function update_domains {
58
+	MICROBLOG_DOMAIN_NAME='microblog'
59
+	if grep -q "GNU Social domain" $COMPLETION_FILE; then
60
+		MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
61
+	fi
62
+	HUBZILLA_DOMAIN_NAME='hubzilla'
63
+	if grep -q "Hubzilla domain" $COMPLETION_FILE; then
64
+		HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
65
+	fi
66
+	FULLBLOG_DOMAIN_NAME='blog'
67
+	if grep -q "Blog domain" $COMPLETION_FILE; then
68
+		FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
69
+	fi
70
+}
68
 
71
 
69
 function mount_drive {
72
 function mount_drive {
70
     if [ $1 ]; then
73
     if [ $1 ]; then
354
 remove_backup_directory $remove_option
357
 remove_backup_directory $remove_option
355
 make_backup_directory
358
 make_backup_directory
356
 check_storage_space_remaining
359
 check_storage_space_remaining
360
+update_domains
357
 backup_users
361
 backup_users
358
 
362
 
359
 if [ -d /home/git/go/src/github.com/gogits ]; then
363
 if [ -d /home/git/go/src/github.com/gogits ]; then
368
 
372
 
369
 backup_directories
373
 backup_directories
370
 
374
 
375
+# configuration files
376
+echo $"Backing up ${PROJECT_NAME} configuration files"
377
+if [ ! -d /root/tempbackupconfig ]; then
378
+    mkdir -p /root/tempbackupconfig
379
+fi
380
+cp -f $CONFIG_FILE /root/tempbackupconfig
381
+cp -f $COMPLETION_FILE /root/tempbackupconfig
382
+backup_directory_to_usb /root/tempbackupconfig config
383
+
371
 # Backup admin user README file
384
 # Backup admin user README file
372
 if [ -f /home/$ADMIN_USERNAME/README ]; then
385
 if [ -f /home/$ADMIN_USERNAME/README ]; then
373
     echo $"Backing up README"
386
     echo $"Backing up README"

+ 188
- 136
src/freedombone-restore-local View File

35
 export TEXTDOMAINDIR="/usr/share/locale"
35
 export TEXTDOMAINDIR="/usr/share/locale"
36
 
36
 
37
 USB_DRIVE=/dev/sdb1
37
 USB_DRIVE=/dev/sdb1
38
-if [ $1 ]; then
39
-    USB_DRIVE=/dev/${1}1
40
-fi
41
 USB_MOUNT=/mnt/usb
38
 USB_MOUNT=/mnt/usb
42
 
39
 
43
 # get default USB from config file
40
 # get default USB from config file
48
     fi
45
     fi
49
 fi
46
 fi
50
 
47
 
51
-# Get the admin username
52
-ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
53
-if [ $2 ]; then
54
-    ADMIN_USERNAME=$2
55
-fi
48
+ADMIN_USERNAME=
49
+ADMIN_NAME=
56
 
50
 
57
-if [ ! -b $USB_DRIVE ]; then
58
-    echo $"Please attach a USB drive"
59
-    exit 1
60
-fi
51
+# MariaDB password
52
+DATABASE_PASSWORD=$(cat /root/dbpass)
53
+
54
+MICROBLOG_DOMAIN_NAME=
55
+HUBZILLA_DOMAIN_NAME=
56
+OWNCLOUD_DOMAIN_NAME=
57
+GIT_DOMAIN_NAME=
58
+WIKI_DOMAIN_NAME=
59
+FULLBLOG_DOMAIN_NAME=
60
+
61
+function mount_drive {
62
+    if [ $1 ]; then
63
+        USB_DRIVE=/dev/${1}1
64
+    fi
65
+
66
+    # get the admin user
67
+    ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
68
+    if [ $2 ]; then
69
+        ADMIN_USERNAME=$2
70
+    fi
71
+    ADMIN_NAME=$(getent passwd $ADMIN_USERNAME | cut -d: -f5 | cut -d, -f1)
72
+
73
+    # check that the backup destination is available
74
+    if [ ! -b $USB_DRIVE ]; then
75
+        echo $"Please attach a USB drive"
76
+        exit 1
77
+    fi
61
 
78
 
62
-if [ ! -d $USB_MOUNT ]; then
63
-    mkdir $USB_MOUNT
79
+    # unmount if already mounted
80
+    umount -f $USB_MOUNT
81
+    if [ ! -d $USB_MOUNT ]; then
82
+        mkdir $USB_MOUNT
83
+    fi
64
     if [ -f /dev/mapper/encrypted_usb ]; then
84
     if [ -f /dev/mapper/encrypted_usb ]; then
65
         rm -rf /dev/mapper/encrypted_usb
85
         rm -rf /dev/mapper/encrypted_usb
66
     fi
86
     fi
67
     cryptsetup luksClose encrypted_usb
87
     cryptsetup luksClose encrypted_usb
88
+
89
+    # mount the encrypted backup drive
68
     cryptsetup luksOpen $USB_DRIVE encrypted_usb
90
     cryptsetup luksOpen $USB_DRIVE encrypted_usb
69
     if [ "$?" = "0" ]; then
91
     if [ "$?" = "0" ]; then
70
         USB_DRIVE=/dev/mapper/encrypted_usb
92
         USB_DRIVE=/dev/mapper/encrypted_usb
71
     fi
93
     fi
72
     mount $USB_DRIVE $USB_MOUNT
94
     mount $USB_DRIVE $USB_MOUNT
73
-fi
74
-if [ ! -d $USB_MOUNT/backup ]; then
75
-    echo $"No backup directory found on the USB drive."
76
-    umount $USB_MOUNT
77
-    rm -rf $USB_MOUNT
78
-    exit 2
79
-fi
95
+    if [ ! "$?" = "0" ]; then
96
+        echo $"There was a problem mounting the USB drive to $USB_MOUNT"
97
+        rm -rf $USB_MOUNT
98
+        exit 2
99
+    fi
100
+}
80
 
101
 
81
-echo $"Checking that admin user exists"
82
-if [ ! -d /home/$ADMIN_USERNAME ]; then
83
-    echo $"Username $ADMIN_USERNAME not found. Reinstall ${PROJECT_NAME} with this username."
102
+function unmount_drive {
103
+    sync
84
     umount $USB_MOUNT
104
     umount $USB_MOUNT
105
+    if [ ! "$?" = "0" ]; then
106
+        echo $"Unable to unmount the drive. This means that the backup did not work"
107
+        rm -rf $USB_MOUNT
108
+        exit 9
109
+    fi
85
     rm -rf $USB_MOUNT
110
     rm -rf $USB_MOUNT
86
-    exit 295
87
-fi
88
 
111
 
89
-echo $"Copying GPG keys to root"
90
-cp -r /home/$ADMIN_USERNAME/.gnupg /root
112
+    echo $"Setting permissions"
113
+    for d in /home/*/ ; do
114
+        USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
115
+        if [[ $USERNAME != "git" ]]; then
116
+            chown -R $USERNAME:$USERNAME /home/$USERNAME
117
+        fi
118
+    done
91
 
119
 
92
-# MariaDB password
93
-DATABASE_PASSWORD=$(cat /root/dbpass)
120
+    if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
121
+        echo $"Unmount encrypted USB"
122
+        cryptsetup luksClose encrypted_usb
123
+    fi
124
+    if [ -f /dev/mapper/encrypted_usb ]; then
125
+        rm -rf /dev/mapper/encrypted_usb
126
+    fi
127
+}
128
+
129
+function check_backup_exists {
130
+    if [ ! -d $USB_MOUNT/backup ]; then
131
+        echo $"No backup directory found on the USB drive."
132
+        unmount_drive
133
+        exit 2
134
+    fi
135
+}
136
+
137
+function check_admin_user {
138
+    echo $"Checking that admin user exists"
139
+    if [ ! -d /home/$ADMIN_USERNAME ]; then
140
+        echo $"Username $ADMIN_USERNAME not found. Reinstall ${PROJECT_NAME} with this username."
141
+        unmount_drive
142
+        exit 295
143
+    fi
144
+}
145
+
146
+function copy_gpg_keys {
147
+    echo $"Copying GPG keys from admin user to root"
148
+    cp -r /home/$ADMIN_USERNAME/.gnupg /root
149
+}
94
 
150
 
95
 function restore_directory_from_usb {
151
 function restore_directory_from_usb {
96
-    BACKUP_CERTIFICATE=/etc/ssl/private/backup.key
97
     if [ ! -d ${1} ]; then
152
     if [ ! -d ${1} ]; then
98
         mkdir ${1}
153
         mkdir ${1}
99
     fi
154
     fi
109
         if [ ! -f /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then
164
         if [ ! -f /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then
110
             echo $"Unable to restore ${1} database"
165
             echo $"Unable to restore ${1} database"
111
             rm -rf /root/temp${1}data
166
             rm -rf /root/temp${1}data
112
-            umount $USB_MOUNT
113
-            rm -rf $USB_MOUNT
167
+            unmount_drive
114
             exit 503
168
             exit 503
115
         fi
169
         fi
116
         mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD ${1} -o < /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql)
170
         mysqlsuccess=$(mysql -u root --password=$DATABASE_PASSWORD ${1} -o < /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/${1}.sql)
117
         if [ ! "$?" = "0" ]; then
171
         if [ ! "$?" = "0" ]; then
118
             echo "$mysqlsuccess"
172
             echo "$mysqlsuccess"
119
-            umount $USB_MOUNT
120
-            rm -rf $USB_MOUNT
173
+            unmount_drive
121
             exit 964
174
             exit 964
122
         fi
175
         fi
123
         shred -zu /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/*
176
         shred -zu /root/temp${1}data/${RESTORE_SUBDIR}/temp${1}data/*
134
                     rm -rf /var/www/${2}/htdocs
187
                     rm -rf /var/www/${2}/htdocs
135
                     mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/
188
                     mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/
136
                     if [ ! "$?" = "0" ]; then
189
                     if [ ! "$?" = "0" ]; then
137
-                        umount $USB_MOUNT
138
-                        rm -rf $USB_MOUNT
190
+                        unmount_drive
139
                         exit 683
191
                         exit 683
140
                     fi
192
                     fi
141
                     if [ -d /etc/letsencrypt/live/${2} ]; then
193
                     if [ -d /etc/letsencrypt/live/${2} ]; then
153
     fi
205
     fi
154
 }
206
 }
155
 
207
 
208
+function update_domains {
209
+    if grep -q "GNU Social domain" $COMPLETION_FILE; then
210
+        MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
211
+    fi
212
+    if grep -q "Hubzilla domain" $COMPLETION_FILE; then
213
+        HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
214
+    fi
215
+    if grep -q "Owncloud domain" $COMPLETION_FILE; then
216
+        OWNCLOUD_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Owncloud domain" | awk -F ':' '{print $2}')
217
+    fi
218
+    if grep -q "Gogs domain" $COMPLETION_FILE; then
219
+        GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Gogs domain" | awk -F ':' '{print $2}')
220
+    fi
221
+    if [ -d $USB_MOUNT/backup/wiki ]; then
222
+        WIKI_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Wiki domain" | awk -F ':' '{print $2}')
223
+    fi
224
+    if [ -d $USB_MOUNT/backup/blog ]; then
225
+        FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
226
+    fi
227
+}
228
+
229
+function restore_configuration {
230
+    # this restores *.cfg and COMPLETION_FILE
231
+    if [ -d $USB_MOUNT/backup/config ]; then
232
+        echo $"Restoring configuration files"
233
+        restore_directory_from_usb /root/tempconfig config
234
+        cp -f /root/tempconfig/root/${PROJECT_NAME}.cfg /homeroot/${PROJECT_NAME}.cfg
235
+        if [ ! "$?" = "0" ]; then
236
+            unmount_drive
237
+            rm -rf /root/tempconfig
238
+            exit 5294
239
+        fi
240
+        cp -f /root/tempconfig/root/${PROJECT_NAME}-completed.txt /root/${PROJECT_NAME}-completed.txt
241
+        if [ ! "$?" = "0" ]; then
242
+            unmount_drive
243
+            rm -rf /root/tempconfig
244
+            exit 6382
245
+        fi
246
+        rm -rf /root/tempconfig
247
+    fi
248
+}
249
+
250
+function same_admin_user {
251
+    PREV_ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | awk -F ':' '{print $2}')
252
+    if [[ "$PREV_ADMIN_USERNAME" != "$ADMIN_USERNAME" ]]; then
253
+        echo $"The admin username has changed from $PREV_ADMIN_USERNAME to $ADMIN_USERNAME. To restore you will first need to install a new ${PROJECT_NAME} system with an initial admin user named $PREV_ADMIN_USERNAME"
254
+        unmount_drive
255
+        exit 73265
256
+    fi
257
+}
258
+
259
+mount_drive $1 $2
260
+check_backup_exists
261
+check_admin_user
262
+copy_gpg_keys
263
+restore_configuration
264
+same_admin_user
265
+update_domains
266
+
156
 # Make a backup of the original README file
267
 # Make a backup of the original README file
157
 # incase old passwords need to be used
268
 # incase old passwords need to be used
158
 if [ -f /home/$ADMIN_USERNAME/README ]; then
269
 if [ -f /home/$ADMIN_USERNAME/README ]; then
179
         fi
290
         fi
180
         if [ ! "$?" = "0" ]; then
291
         if [ ! "$?" = "0" ]; then
181
             echo "$mysqlsuccess"
292
             echo "$mysqlsuccess"
182
-            umount $USB_MOUNT
183
-            rm -rf $USB_MOUNT
293
+            unmount_drive
184
             exit 962
294
             exit 962
185
         fi
295
         fi
186
         echo $"Restarting database"
296
         echo $"Restarting database"
217
                 cp -f /root/tempmutt/home/$USERNAME/tempbackup/Muttrc /etc/Muttrc
327
                 cp -f /root/tempmutt/home/$USERNAME/tempbackup/Muttrc /etc/Muttrc
218
             fi
328
             fi
219
             if [ ! "$?" = "0" ]; then
329
             if [ ! "$?" = "0" ]; then
220
-                umount $USB_MOUNT
221
-                rm -rf $USB_MOUNT
222
                 rm -rf /root/tempmutt
330
                 rm -rf /root/tempmutt
331
+                unmount_drive
223
                 exit 276
332
                 exit 276
224
             fi
333
             fi
225
             rm -rf /root/tempmutt
334
             rm -rf /root/tempmutt
238
             restore_directory_from_usb /root/tempgnupg gnupg/$USERNAME
347
             restore_directory_from_usb /root/tempgnupg gnupg/$USERNAME
239
             cp -r /root/tempgnupg/home/$USERNAME/.gnupg /home/$USERNAME/
348
             cp -r /root/tempgnupg/home/$USERNAME/.gnupg /home/$USERNAME/
240
             if [ ! "$?" = "0" ]; then
349
             if [ ! "$?" = "0" ]; then
241
-                umount $USB_MOUNT
242
-                rm -rf $USB_MOUNT
243
                 rm -rf /root/tempgnupg
350
                 rm -rf /root/tempgnupg
351
+                unmount_drive
244
                 exit 276
352
                 exit 276
245
             fi
353
             fi
246
             rm -rf /root/tempgnupg
354
             rm -rf /root/tempgnupg
247
             if [[ "$USERNAME" == "$ADMIN_USERNAME" ]]; then
355
             if [[ "$USERNAME" == "$ADMIN_USERNAME" ]]; then
248
                 cp -r /home/$USERNAME/.gnupg /root
356
                 cp -r /home/$USERNAME/.gnupg /root
249
                 if [ ! "$?" = "0" ]; then
357
                 if [ ! "$?" = "0" ]; then
250
-                    umount $USB_MOUNT
251
-                    rm -rf $USB_MOUNT
358
+                    unmount_drive
252
                     exit 283
359
                     exit 283
253
                 fi
360
                 fi
254
             fi
361
             fi
267
             restore_directory_from_usb /root/tempprocmail procmail/$USERNAME
374
             restore_directory_from_usb /root/tempprocmail procmail/$USERNAME
268
             cp -f /root/tempprocmail/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/
375
             cp -f /root/tempprocmail/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/
269
             if [ ! "$?" = "0" ]; then
376
             if [ ! "$?" = "0" ]; then
270
-                umount $USB_MOUNT
271
-                rm -rf $USB_MOUNT
272
                 rm -rf /root/tempprocmail
377
                 rm -rf /root/tempprocmail
378
+                unmount_drive
273
                 exit 276
379
                 exit 276
274
             fi
380
             fi
275
             rm -rf /root/tempprocmail
381
             rm -rf /root/tempprocmail
289
                 restore_directory_from_usb /root/tempspamassassin spamassassin/$USERNAME
395
                 restore_directory_from_usb /root/tempspamassassin spamassassin/$USERNAME
290
                 cp -rf /root/tempspamassassin/home/$USERNAME/.spamassassin /home/$USERNAME/
396
                 cp -rf /root/tempspamassassin/home/$USERNAME/.spamassassin /home/$USERNAME/
291
                 if [ ! "$?" = "0" ]; then
397
                 if [ ! "$?" = "0" ]; then
292
-                    umount $USB_MOUNT
293
-                    rm -rf $USB_MOUNT
294
                     rm -rf /root/tempspamassassin
398
                     rm -rf /root/tempspamassassin
399
+                    unmount_drive
295
                     exit 276
400
                     exit 276
296
                 fi
401
                 fi
297
                 rm -rf /root/tempspamassassin
402
                 rm -rf /root/tempspamassassin
305
     restore_directory_from_usb /root/tempreadme readme
410
     restore_directory_from_usb /root/tempreadme readme
306
     cp -f /root/tempreadme/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/
411
     cp -f /root/tempreadme/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/
307
     if [ ! "$?" = "0" ]; then
412
     if [ ! "$?" = "0" ]; then
308
-        umount $USB_MOUNT
309
-        rm -rf $USB_MOUNT
310
         rm -rf /root/tempreadme
413
         rm -rf /root/tempreadme
414
+        unmount_drive
311
         exit 276
415
         exit 276
312
     fi
416
     fi
313
     rm -rf /root/tempreadme
417
     rm -rf /root/tempreadme
318
     restore_directory_from_usb /root/tempipfs ipfs
422
     restore_directory_from_usb /root/tempipfs ipfs
319
     cp -rf /root/tempipfs/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs
423
     cp -rf /root/tempipfs/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs
320
     if [ ! "$?" = "0" ]; then
424
     if [ ! "$?" = "0" ]; then
321
-        umount $USB_MOUNT
322
-        rm -rf $USB_MOUNT
323
         rm -rf /root/tempipfs
425
         rm -rf /root/tempipfs
426
+        unmount_drive
324
         exit 276
427
         exit 276
325
     fi
428
     fi
326
     rm -rf /root/tempipfs
429
     rm -rf /root/tempipfs
337
             restore_directory_from_usb /root/tempssh ssh/$USERNAME
440
             restore_directory_from_usb /root/tempssh ssh/$USERNAME
338
             cp -r /root/tempssh/home/$USERNAME/.ssh /home/$USERNAME/
441
             cp -r /root/tempssh/home/$USERNAME/.ssh /home/$USERNAME/
339
             if [ ! "$?" = "0" ]; then
442
             if [ ! "$?" = "0" ]; then
340
-                umount $USB_MOUNT
341
-                rm -rf $USB_MOUNT
342
                 rm -rf /root/tempssh
443
                 rm -rf /root/tempssh
444
+                unmount_drive
343
                 exit 664
445
                 exit 664
344
             fi
446
             fi
345
             rm -rf /root/tempssh
447
             rm -rf /root/tempssh
358
             restore_directory_from_usb /root/tempconfig config/$USERNAME
460
             restore_directory_from_usb /root/tempconfig config/$USERNAME
359
             cp -r /root/tempconfig/home/$USERNAME/.config /home/$USERNAME/
461
             cp -r /root/tempconfig/home/$USERNAME/.config /home/$USERNAME/
360
             if [ ! "$?" = "0" ]; then
462
             if [ ! "$?" = "0" ]; then
361
-                umount $USB_MOUNT
362
-                rm -rf $USB_MOUNT
363
                 rm -rf /root/tempconfig
463
                 rm -rf /root/tempconfig
464
+                unmount_drive
364
                 exit 664
465
                 exit 664
365
             fi
466
             fi
366
             rm -rf /root/tempconfig
467
             rm -rf /root/tempconfig
374
     restore_directory_from_usb /root/tempssl ssl
475
     restore_directory_from_usb /root/tempssl ssl
375
     cp -r /root/tempssl/etc/ssl/* /etc/ssl
476
     cp -r /root/tempssl/etc/ssl/* /etc/ssl
376
     if [ ! "$?" = "0" ]; then
477
     if [ ! "$?" = "0" ]; then
377
-        umount $USB_MOUNT
378
-        rm -rf $USB_MOUNT
478
+        unmount_drive
379
         exit 276
479
         exit 276
380
     fi
480
     fi
381
     rm -rf /root/tempssl
481
     rm -rf /root/tempssl
395
             fi
495
             fi
396
             mv /root/tempprojects/home/$USERNAME/projects /home/$USERNAME
496
             mv /root/tempprojects/home/$USERNAME/projects /home/$USERNAME
397
             if [ ! "$?" = "0" ]; then
497
             if [ ! "$?" = "0" ]; then
398
-                umount $USB_MOUNT
399
-                rm -rf $USB_MOUNT
498
+                unmount_drive
400
                 exit 166
499
                 exit 166
401
             fi
500
             fi
402
             rm -rf /root/tempprojects
501
             rm -rf /root/tempprojects
419
                 fi
518
                 fi
420
                 mv /root/temppersonal/home/$USERNAME/personal /home/$USERNAME
519
                 mv /root/temppersonal/home/$USERNAME/personal /home/$USERNAME
421
                 if [ ! "$?" = "0" ]; then
520
                 if [ ! "$?" = "0" ]; then
422
-                    umount $USB_MOUNT
423
-                    rm -rf $USB_MOUNT
521
+                    unmount_drive
424
                     exit 184
522
                     exit 184
425
                 fi
523
                 fi
426
                 rm -rf /root/temppersonal
524
                 rm -rf /root/temppersonal
434
     restore_directory_from_usb /root/tempmailinglist mailinglist
532
     restore_directory_from_usb /root/tempmailinglist mailinglist
435
     cp -r /root/tempmailinglist/root/spool/mlmmj/* /var/spool/mlmmj
533
     cp -r /root/tempmailinglist/root/spool/mlmmj/* /var/spool/mlmmj
436
     if [ ! "$?" = "0" ]; then
534
     if [ ! "$?" = "0" ]; then
437
-        umount $USB_MOUNT
438
-        rm -rf $USB_MOUNT
535
+        unmount_drive
439
         exit 526
536
         exit 526
440
     fi
537
     fi
441
     rm -rf /root/tempmailinglist
538
     rm -rf /root/tempmailinglist
446
     restore_directory_from_usb /root/tempxmpp xmpp
543
     restore_directory_from_usb /root/tempxmpp xmpp
447
     cp -r /root/tempxmpp/var/lib/prosody/* /var/lib/prosody
544
     cp -r /root/tempxmpp/var/lib/prosody/* /var/lib/prosody
448
     if [ ! "$?" = "0" ]; then
545
     if [ ! "$?" = "0" ]; then
449
-        umount $USB_MOUNT
450
-        rm -rf $USB_MOUNT
546
+        unmount_drive
451
         exit 725
547
         exit 725
452
     fi
548
     fi
453
     rm -rf /root/tempxmpp
549
     rm -rf /root/tempxmpp
456
 fi
552
 fi
457
 
553
 
458
 # Restoring GNU Social
554
 # Restoring GNU Social
459
-if grep -q "GNU Social domain" $COMPLETION_FILE; then
460
-    MICROBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "GNU Social domain" | awk -F ':' '{print $2}')
555
+if [ $MICROBLOG_DOMAIN_NAME ]; then
461
     restore_database gnusocial ${MICROBLOG_DOMAIN_NAME}
556
     restore_database gnusocial ${MICROBLOG_DOMAIN_NAME}
462
     if [ -d /root/tempgnusocial ]; then
557
     if [ -d /root/tempgnusocial ]; then
463
         rm -rf /root/tempgnusocial
558
         rm -rf /root/tempgnusocial
465
 fi
560
 fi
466
 
561
 
467
 # Restoring hubzilla
562
 # Restoring hubzilla
468
-if grep -q "Hubzilla domain" $COMPLETION_FILE; then
469
-    HUBZILLA_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Hubzilla domain" | awk -F ':' '{print $2}')
563
+if [ $HUBZILLA_DOMAIN_NAME ]; then
470
     restore_database hubzilla ${HUBZILLA_DOMAIN_NAME}
564
     restore_database hubzilla ${HUBZILLA_DOMAIN_NAME}
471
     if [ -d $USB_MOUNT/backup/hubzilla ]; then
565
     if [ -d $USB_MOUNT/backup/hubzilla ]; then
472
         if [ ! -d /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3 ]; then
566
         if [ ! -d /var/www/${HUBZILLA_DOMAIN_NAME}/htdocs/store/[data]/smarty3 ]; then
480
     fi
574
     fi
481
 fi
575
 fi
482
 
576
 
483
-if grep -q "Owncloud domain" $COMPLETION_FILE; then
484
-    OWNCLOUD_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Owncloud domain" | awk -F ':' '{print $2}')
577
+if [ $OWNCLOUD_DOMAIN_NAME ]; then
485
     restore_database owncloud $OWNCLOUD_DOMAIN_NAME
578
     restore_database owncloud $OWNCLOUD_DOMAIN_NAME
486
     if [ -d $USB_MOUNT/backup/owncloud2 ]; then
579
     if [ -d $USB_MOUNT/backup/owncloud2 ]; then
487
         restore_directory_from_usb /root/tempowncloud2 owncloud2
580
         restore_directory_from_usb /root/tempowncloud2 owncloud2
488
         cp -r /root/tempowncloud2/etc/owncloud/* /etc/owncloud/
581
         cp -r /root/tempowncloud2/etc/owncloud/* /etc/owncloud/
489
         if [ ! "$?" = "0" ]; then
582
         if [ ! "$?" = "0" ]; then
490
-            umount $USB_MOUNT
491
-            rm -rf $USB_MOUNT
583
+            unmount_drive
492
             exit 982
584
             exit 982
493
         fi
585
         fi
494
         rm -rf /root/tempowncloud
586
         rm -rf /root/tempowncloud
506
     fi
598
     fi
507
 fi
599
 fi
508
 
600
 
509
-if grep -q "Gogs domain" $COMPLETION_FILE; then
510
-    GIT_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Gogs domain" | awk -F ':' '{print $2}')
601
+if [ $GIT_DOMAIN_NAME ]; then
511
     restore_database gogs ${GIT_DOMAIN_NAME}
602
     restore_database gogs ${GIT_DOMAIN_NAME}
512
     if [ -d $USB_MOUNT/backup/gogs ]; then
603
     if [ -d $USB_MOUNT/backup/gogs ]; then
513
         echo $"Restoring Gogs settings"
604
         echo $"Restoring Gogs settings"
516
         fi
607
         fi
517
         cp -r /root/tempgogs/home/git/go/src/github.com/gogits/gogs/custom/* /home/git/go/src/github.com/gogits/gogs/custom
608
         cp -r /root/tempgogs/home/git/go/src/github.com/gogits/gogs/custom/* /home/git/go/src/github.com/gogits/gogs/custom
518
         if [ ! "$?" = "0" ]; then
609
         if [ ! "$?" = "0" ]; then
519
-            umount $USB_MOUNT
520
-            rm -rf $USB_MOUNT
610
+            unmount_drive
521
             exit 981
611
             exit 981
522
         fi
612
         fi
523
         echo $"Restoring Gogs repos"
613
         echo $"Restoring Gogs repos"
524
         restore_directory_from_usb /root/tempgogsrepos gogsrepos
614
         restore_directory_from_usb /root/tempgogsrepos gogsrepos
525
         cp -r /root/tempgogsrepos/home/git/gogs-repositories/* /home/git/gogs-repositories/
615
         cp -r /root/tempgogsrepos/home/git/gogs-repositories/* /home/git/gogs-repositories/
526
         if [ ! "$?" = "0" ]; then
616
         if [ ! "$?" = "0" ]; then
527
-            umount $USB_MOUNT
528
-            rm -rf $USB_MOUNT
617
+            unmount_drive
529
             exit 67574
618
             exit 67574
530
         fi
619
         fi
531
         echo $"Restoring Gogs authorized_keys"
620
         echo $"Restoring Gogs authorized_keys"
535
         fi
624
         fi
536
         cp -r /root/tempgogsssh/home/git/.ssh/* /home/git/.ssh/
625
         cp -r /root/tempgogsssh/home/git/.ssh/* /home/git/.ssh/
537
         if [ ! "$?" = "0" ]; then
626
         if [ ! "$?" = "0" ]; then
538
-            umount $USB_MOUNT
539
-            rm -rf $USB_MOUNT
627
+            unmount_drive
540
             exit 8463
628
             exit 8463
541
         fi
629
         fi
542
         rm -rf /root/tempgogs
630
         rm -rf /root/tempgogs
546
     fi
634
     fi
547
 fi
635
 fi
548
 
636
 
549
-if [ -d $USB_MOUNT/backup/wiki ]; then
550
-    WIKI_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Wiki domain" | awk -F ':' '{print $2}')
637
+if [ $WIKI_DOMAIN_NAME ]; then
551
     echo $"Restoring Wiki installation ${WIKI_DOMAIN_NAME}"
638
     echo $"Restoring Wiki installation ${WIKI_DOMAIN_NAME}"
552
     restore_directory_from_usb /root/tempwiki wiki
639
     restore_directory_from_usb /root/tempwiki wiki
553
     cp -r /root/tempwiki/var/lib/dokuwiki/* /var/lib/dokuwiki/
640
     cp -r /root/tempwiki/var/lib/dokuwiki/* /var/lib/dokuwiki/
554
     if [ ! "$?" = "0" ]; then
641
     if [ ! "$?" = "0" ]; then
555
-        umount $USB_MOUNT
556
-        rm -rf $USB_MOUNT
642
+        unmount_drive
557
         exit 868
643
         exit 868
558
     fi
644
     fi
559
     restore_directory_from_usb /root/tempwiki2 wiki2
645
     restore_directory_from_usb /root/tempwiki2 wiki2
560
     cp -r /root/tempwiki2/etc/dokuwiki/* /etc/dokuwiki/
646
     cp -r /root/tempwiki2/etc/dokuwiki/* /etc/dokuwiki/
561
     if [ ! "$?" = "0" ]; then
647
     if [ ! "$?" = "0" ]; then
562
-        umount $USB_MOUNT
563
-        rm -rf $USB_MOUNT
648
+        unmount_drive
564
         exit 869
649
         exit 869
565
     fi
650
     fi
566
     rm -rf /root/tempwiki
651
     rm -rf /root/tempwiki
576
     fi
661
     fi
577
 fi
662
 fi
578
 
663
 
579
-if [ -d $USB_MOUNT/backup/blog ]; then
580
-    FULLBLOG_DOMAIN_NAME=$(cat $COMPLETION_FILE | grep "Blog domain" | awk -F ':' '{print $2}')
664
+if [ $FULLBLOG_DOMAIN_NAME ]; then
581
     echo $"Restoring blog installation"
665
     echo $"Restoring blog installation"
582
     restore_directory_from_usb /root/tempblog blog
666
     restore_directory_from_usb /root/tempblog blog
583
     rm -rf /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
667
     rm -rf /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
584
     cp -r /root/tempblog/var/www/${FULLBLOG_DOMAIN_NAME}/htdocs /var/www/${FULLBLOG_DOMAIN_NAME}/
668
     cp -r /root/tempblog/var/www/${FULLBLOG_DOMAIN_NAME}/htdocs /var/www/${FULLBLOG_DOMAIN_NAME}/
585
     if [ ! "$?" = "0" ]; then
669
     if [ ! "$?" = "0" ]; then
586
-        umount $USB_MOUNT
587
-        rm -rf $USB_MOUNT
670
+        unmount_drive
588
         exit 593
671
         exit 593
589
     fi
672
     fi
590
     rm -rf /root/tempblog
673
     rm -rf /root/tempblog
591
     if [ ! -d /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content ]; then
674
     if [ ! -d /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs/content ]; then
592
         echo $"No content directory found after restoring blog"
675
         echo $"No content directory found after restoring blog"
593
-        umount $USB_MOUNT
594
-        rm -rf $USB_MOUNT
676
+        unmount_drive
595
         exit 287
677
         exit 287
596
     fi
678
     fi
597
     chown -R www-data:www-data /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
679
     chown -R www-data:www-data /var/www/${FULLBLOG_DOMAIN_NAME}/htdocs
619
     rm -rf /etc/cjdns
701
     rm -rf /etc/cjdns
620
     cp -r /root/tempcjdns/etc/cjdns /etc/
702
     cp -r /root/tempcjdns/etc/cjdns /etc/
621
     if [ ! "$?" = "0" ]; then
703
     if [ ! "$?" = "0" ]; then
622
-        umount $USB_MOUNT
623
-        rm -rf $USB_MOUNT
704
+        unmount_drive
624
         exit 8472
705
         exit 8472
625
     fi
706
     fi
626
     rm -rf /root/tempcjdns
707
     rm -rf /root/tempcjdns
640
             fi
721
             fi
641
             tar -xzvf /root/tempmail/root/tempbackupemail/$USERNAME/maildir.tar.gz -C /
722
             tar -xzvf /root/tempmail/root/tempbackupemail/$USERNAME/maildir.tar.gz -C /
642
             if [ ! "$?" = "0" ]; then
723
             if [ ! "$?" = "0" ]; then
643
-                umount $USB_MOUNT
644
-                rm -rf $USB_MOUNT
724
+                unmount_drive
645
                 exit 927
725
                 exit 927
646
             fi
726
             fi
647
             rm -rf /root/tempmail
727
             rm -rf /root/tempmail
655
         restore_directory_from_usb /root/tempdlna dlna
735
         restore_directory_from_usb /root/tempdlna dlna
656
         cp -r /root/tempdlna/var/cache/minidlna/* /var/cache/minidlna/
736
         cp -r /root/tempdlna/var/cache/minidlna/* /var/cache/minidlna/
657
         if [ ! "$?" = "0" ]; then
737
         if [ ! "$?" = "0" ]; then
658
-            umount $USB_MOUNT
659
-            rm -rf $USB_MOUNT
738
+            rm -rf /root/tempdlna
739
+            unmount_drive
660
             exit 982
740
             exit 982
661
         fi
741
         fi
662
         rm -rf /root/tempdlna
742
         rm -rf /root/tempdlna
668
     restore_directory_from_usb /root/tempvoip voip
748
     restore_directory_from_usb /root/tempvoip voip
669
     cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
749
     cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/
670
     if [ ! "$?" = "0" ]; then
750
     if [ ! "$?" = "0" ]; then
671
-        umount $USB_MOUNT
672
-        rm -rf $USB_MOUNT
673
         rm -rf /root/tempvoip
751
         rm -rf /root/tempvoip
752
+        unmount_drive
674
         exit 3679
753
         exit 3679
675
     fi
754
     fi
676
     cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
755
     cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf
677
     if [ ! "$?" = "0" ]; then
756
     if [ ! "$?" = "0" ]; then
678
-        umount $USB_MOUNT
679
-        rm -rf $USB_MOUNT
680
         rm -rf /root/tempvoip
757
         rm -rf /root/tempvoip
758
+        unmount_drive
681
         exit 3679
759
         exit 3679
682
     fi
760
     fi
683
     cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
761
     cp -f /root/tempvoip/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/
684
     if [ ! "$?" = "0" ]; then
762
     if [ ! "$?" = "0" ]; then
685
-        umount $USB_MOUNT
686
-        rm -rf $USB_MOUNT
687
         rm -rf /root/tempvoip
763
         rm -rf /root/tempvoip
764
+        unmount_drive
688
         exit 276
765
         exit 276
689
     fi
766
     fi
690
     rm -rf /root/tempvoip
767
     rm -rf /root/tempvoip
699
     echo $"Restoring Tox node settings"
776
     echo $"Restoring Tox node settings"
700
     restore_directory_from_usb / tox
777
     restore_directory_from_usb / tox
701
     if [ ! "$?" = "0" ]; then
778
     if [ ! "$?" = "0" ]; then
702
-        umount $USB_MOUNT
703
-        rm -rf $USB_MOUNT
779
+        unmount_drive
704
         exit 6393
780
         exit 6393
705
     fi
781
     fi
706
     cp /var/lib/tox-bootstrapd/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
782
     cp /var/lib/tox-bootstrapd/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
707
     systemctl restart tox-bootstrapd.service
783
     systemctl restart tox-bootstrapd.service
708
     if [ ! "$?" = "0" ]; then
784
     if [ ! "$?" = "0" ]; then
709
         systemctl status tox-bootstrapd.service
785
         systemctl status tox-bootstrapd.service
710
-        umount $USB_MOUNT
711
-        rm -rf $USB_MOUNT
786
+        unmount_drive
712
         exit 59369
787
         exit 59369
713
     fi
788
     fi
714
 fi
789
 fi
715
 
790
 
716
-sync
717
-
718
-# Unmount the USB drive
719
-umount $USB_MOUNT
720
-rm -rf $USB_MOUNT
721
-
722
-# Restart the web server
723
-systemctl restart nginx
724
-systemctl restart php5-fpm
791
+unmount_drive
725
 
792
 
726
-echo $"Setting permissions"
727
-for d in /home/*/ ; do
728
-    USERNAME=$(echo "$d" | awk -F '/' '{print $3}')
729
-    if [[ $USERNAME != "git" ]]; then
730
-        chown -R $USERNAME:$USERNAME /home/$USERNAME
731
-    fi
732
-done
733
-
734
-if [[ $USB_DRIVE == /dev/mapper/encrypted_usb ]]; then
735
-    echo $"Unmount encrypted USB"
736
-    cryptsetup luksClose encrypted_usb
737
-fi
738
-if [ -f /dev/mapper/encrypted_usb ]; then
739
-    rm -rf /dev/mapper/encrypted_usb
740
-fi
793
+echo $"Restore from USB drive is complete. You can now unplug it."
741
 
794
 
742
-echo $"Restore from USB drive is complete. You can now remove it."
743
 exit 0
795
 exit 0