diff --git a/doc/EN/app_matrix.org b/doc/EN/app_matrix.org index 135c8154..420dd487 100644 --- a/doc/EN/app_matrix.org +++ b/doc/EN/app_matrix.org @@ -22,6 +22,8 @@ Matrix is a federated communications system, typically for multi-user chat, with end-to-end content security features. You can consider it to be like a modernized version of IRC chat where the crypto and access controls have been built in by default. At present Matrix is really only a creature of the clearnet and so there isn't any way to protect the metadata. Despite the talk of security the lack of metadata defenses make this really only suitable for public communications, similar to microblogging or public IRC channels. +Another consideration is that since matrix operates on the usual HTTPS port number (443) this may make it difficult for ISPs or governments to censor this type of communications via port blocking without significant blowback. + * Installation Log into your system with: diff --git a/src/freedombone-app-cryptpad b/src/freedombone-app-cryptpad index 7b3e6712..135fa962 100755 --- a/src/freedombone-app-cryptpad +++ b/src/freedombone-app-cryptpad @@ -122,7 +122,19 @@ function restore_local_cryptpad { temp_restore_dir=/root/tempcryptpad function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir cryptpad - cp -r $temp_restore_dir$CRYPTPAD_DIR/datastore/* $CRYPTPAD_DIR/datastore/ + if [ ! -d $temp_restore_dir$CRYPTPAD_DIR/datastore ]; then + if [ -d $temp_restore_dir ]; then + cp -r $temp_restore_dir/* $CRYPTPAD_DIR/datastore/ + else + systemctl start cryptpad + echo 'Failed to restore cryptpad' + rm -rf $temp_restore_dir + exit 8736529 + fi + else + cp -r $temp_restore_dir$CRYPTPAD_DIR/datastore/* $CRYPTPAD_DIR/datastore/ + fi + rm -rf $temp_restore_dir systemctl start cryptpad fi } @@ -157,7 +169,20 @@ function restore_remote_cryptpad { temp_restore_dir=/root/tempcryptpad function_check restore_directory_from_usb restore_directory_from_friend $temp_restore_dir cryptpad - cp -r $temp_restore_dir$CRYPTPAD_DIR/datastore/* $CRYPTPAD_DIR/datastore/ + + if [ ! -d $temp_restore_dir$CRYPTPAD_DIR/datastore ]; then + if [ -d $temp_restore_dir ]; then + cp -r $temp_restore_dir/* $CRYPTPAD_DIR/datastore/ + else + systemctl start cryptpad + echo 'Failed to restore cryptpad' + rm -rf $temp_restore_dir + return + fi + else + cp -r $temp_restore_dir$CRYPTPAD_DIR/datastore/* $CRYPTPAD_DIR/datastore/ + fi + rm -rf $temp_restore_dir systemctl start cryptpad fi } diff --git a/src/freedombone-app-dlna b/src/freedombone-app-dlna index 55ada1c2..9bcf2dd3 100755 --- a/src/freedombone-app-dlna +++ b/src/freedombone-app-dlna @@ -113,7 +113,11 @@ function restore_local_dlna { temp_restore_dir=/root/tempdlna function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir dlna - cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/ + if [ -d $temp_restore_dir/var/cache/minidlna ]; then + cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/ + else + cp -r $temp_restore_dir/* /var/cache/minidlna/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -139,7 +143,11 @@ function restore_remote_dlna { temp_restore_dir=/root/tempdlna function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir dlna - cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/ + if [ -d $temp_restore_dir/var/cache/minidlna ]; then + cp -r $temp_restore_dir/var/cache/minidlna/* /var/cache/minidlna/ + else + cp -r $temp_restore_dir/* /var/cache/minidlna/ + fi if [ ! "$?" = "0" ]; then exit 982 fi diff --git a/src/freedombone-app-dokuwiki b/src/freedombone-app-dokuwiki index 2a1f7772..023c279c 100755 --- a/src/freedombone-app-dokuwiki +++ b/src/freedombone-app-dokuwiki @@ -13,7 +13,7 @@ # License # ======= # -# Copyright (C) 2014-2016 Bob Mottram +# Copyright (C) 2014-2017 Bob Mottram # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -144,59 +144,7 @@ function backup_local_dokuwiki { fi } -function restore_local_dokuwiki_legacy { - if [ -d /var/lib/dokuwiki ]; then - echo $"Restoring Legacy Dokuwiki installation" - function_check get_completion_param - DOKUWIKI_DOMAIN_NAME=$(get_completion_param "dokuwiki domain") - - temp_restore_dir=/root/tempdokuwiki - function_check restore_directory_from_usb - if [ -d ${USB_MOUNT}/backup/dokuwiki ]; then - restore_directory_from_usb ${temp_restore_dir} dokuwiki - else - restore_directory_from_usb ${temp_restore_dir} wiki - fi - - # restore the data - cp -r ${temp_restore_dir}/var/lib/dokuwiki/data/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data - if [ ! "$?" = "0" ]; then - function_check restore_directory_from_usb - set_user_permissions - function_check backup_unmount_drive - backup_unmount_drive - rm -rf ${temp_restore_dir} - exit 73562 - fi - - # restore the users - cp -r ${temp_restore_dir}/var/lib/dokuwiki/acl/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl - cp -r ${temp_restore_dir}/var/lib/dokuwiki/acl/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/conf - if [ ! "$?" = "0" ]; then - function_check restore_directory_from_usb - set_user_permissions - function_check backup_unmount_drive - backup_unmount_drive - rm -rf ${temp_restore_dir} - exit 23985 - fi - rm -rf ${temp_restore_dir} - - chmod -R 755 /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data - chmod -R 755 /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib - chmod 640 /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/users.auth.php - chmod 640 /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/conf/users.auth.php - chown -R www-data:www-data /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs - echo $"Restore of Legacy Dokuwiki complete" - fi -} - function restore_local_dokuwiki { - if [ -d ${USB_MOUNT}/backup/dokuwiki ]; then - restore_local_dokuwiki_legacy - return - fi - echo $"Restoring Dokuwiki installation" function_check get_completion_param DOKUWIKI_DOMAIN_NAME=$(get_completion_param "dokuwiki domain") @@ -205,7 +153,11 @@ function restore_local_dokuwiki { temp_restore_dir=/root/tempdokuwikidat function_check restore_directory_from_usb restore_directory_from_usb ${temp_restore_dir} dokuwikidat - cp -r ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/data/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data + if [ -d ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/data ]; then + cp -r ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/data/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data + else + cp -r ${temp_restore_dir}/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data + fi if [ ! "$?" = "0" ]; then function_check restore_directory_from_usb set_user_permissions @@ -220,8 +172,13 @@ function restore_local_dokuwiki { temp_restore_dir=/root/tempdokuwikiacl function_check restore_directory_from_usb restore_directory_from_usb ${temp_restore_dir} dokuwikiacl - cp ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/lib/plugins/acl/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/ - cp ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/lib/plugins/acl/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/conf/ + if [ -d ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/lib/plugins/acl ]; then + cp ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/lib/plugins/acl/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/ + cp ${temp_restore_dir}/var/www/${DOKUWIKI_DOMAIN_NAME}/htdocs/lib/plugins/acl/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/conf/ + else + cp ${temp_restore_dir}/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/ + cp ${temp_restore_dir}/users.auth.php /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/conf/ + fi if [ ! "$?" = "0" ]; then function_check restore_directory_from_usb set_user_permissions @@ -257,24 +214,34 @@ function restore_remote_dokuwiki { if [ -d $SERVER_DIRECTORY/backup/dokuwikidat ]; then echo $"Restoring Dokuwiki data for $DOKUWIKI_DOMAIN_NAME" - restore_directory_from_friend /root/tempdokuwikidat dokuwikidat - cp -r /root/tempdokuwikidat/var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data/ + temp_restore_dir=/root/tempdokuwikidat + restore_directory_from_friend $temp_restore_dir dokuwikidat + if [ -d $temp_restore_dir/var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data ]; then + cp -r $temp_restore_dir/var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data/ + else + cp -r $temp_restore_dir/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/data/ + fi if [ ! "$?" = "0" ]; then exit 92634 fi - rm -rf /root/tempdokuwikidat + rm -rf $temp_restore_dir echo $"Restore of Dokuwiki data complete" fi if [ -d $SERVER_DIRECTORY/backup/dokuwikiacl ]; then echo $"Restoring Dokuwiki users for $DOKUWIKI_DOMAIN_NAME" - restore_directory_from_friend /root/tempdokuwikiacl dokuwikiacl - cp -r /root/tempdokuwikidat/var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/ + temp_restore_dir=/root/tempdokuwikiacl + restore_directory_from_friend $temp_restore_dir dokuwikiacl + if [ -d $temp_restore_dir/var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl ]; then + cp -r $temp_restore_dir/var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/ + else + cp -r $temp_restore_dir/* /var/www/$DOKUWIKI_DOMAIN_NAME/htdocs/lib/plugins/acl/ + fi if [ ! "$?" = "0" ]; then exit 735287 fi - rm -rf /root/tempdokuwikiacl + rm -rf $temp_restore_dir echo $"Restore of Dokuwiki users complete" fi diff --git a/src/freedombone-app-emacs b/src/freedombone-app-emacs index 0adc6887..db73be22 100755 --- a/src/freedombone-app-emacs +++ b/src/freedombone-app-emacs @@ -81,7 +81,14 @@ function restore_local_emacs { echo $"Restoring Emacs config for $USERNAME" function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir emacs/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.emacs.d /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.emacs.d ]; then + cp -r $temp_restore_dir/home/$USERNAME/.emacs.d /home/$USERNAME/ + else + if [ ! -d /home/$USERNAME/.emacs.d ]; then + mkdir /home/$USERNAME/.emacs.d + fi + cp -r $temp_restore_dir/* /home/$USERNAME/.emacs.d + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -90,7 +97,11 @@ function restore_local_emacs { backup_unmount_drive exit 664 fi - cp -f $temp_restore_dir/home/$USERNAME/.emacs.d/dotemacs /home/$USERNAME/.emacs + if [ -d $temp_restore_dir/home/$USERNAME/.emacs.d ]; then + cp -f $temp_restore_dir/home/$USERNAME/.emacs.d/dotemacs /home/$USERNAME/.emacs + else + cp -f $temp_restore_dir/dotemacs /home/$USERNAME/.emacs + fi rm -rf $temp_restore_dir fi done @@ -125,7 +136,14 @@ function restore_remote_emacs { echo $"Restoring Emacs config for $USERNAME" function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir emacs/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.emacs.d /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.emacs.d ]; then + cp -r $temp_restore_dir/home/$USERNAME/.emacs.d /home/$USERNAME/ + else + if [ ! -d /home/$USERNAME/.emacs.d ]; then + mkdir /home/$USERNAME/.emacs.d + fi + cp -r $temp_restore_dir/* /home/$USERNAME/.emacs.d/* + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -134,7 +152,11 @@ function restore_remote_emacs { backup_unmount_drive exit 664 fi - cp -f $temp_restore_dir/home/$USERNAME/.emacs.d/dotemacs /home/$USERNAME/.emacs + if [ -d $temp_restore_dir/home/$USERNAME/.emacs.d ]; then + cp -f $temp_restore_dir/home/$USERNAME/.emacs.d/dotemacs /home/$USERNAME/.emacs + else + cp -f $temp_restore_dir/dotemacs /home/$USERNAME/.emacs + fi rm -rf $temp_restore_dir fi done diff --git a/src/freedombone-app-ghost b/src/freedombone-app-ghost index 8c44a2da..6361985d 100755 --- a/src/freedombone-app-ghost +++ b/src/freedombone-app-ghost @@ -251,7 +251,11 @@ function restore_local_ghost { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir ghostcontent if [ -d $temp_restore_dir ]; then - cp -r $temp_restore_dir/var/www/$GHOST_DOMAIN_NAME/htdocs/content/* /var/www/$GHOST_DOMAIN_NAME/htdocs/content/ + if [ -d $temp_restore_dir/var/www/$GHOST_DOMAIN_NAME/htdocs/content ]; then + cp -r $temp_restore_dir/var/www/$GHOST_DOMAIN_NAME/htdocs/content/* /var/www/$GHOST_DOMAIN_NAME/htdocs/content/ + else + cp -r $temp_restore_dir/* /var/www/$GHOST_DOMAIN_NAME/htdocs/content/ + fi chown -R ghost:ghost /var/www/$GHOST_DOMAIN_NAME/htdocs/content rm -rf $temp_restore_dir fi @@ -291,7 +295,11 @@ function restore_remote_ghost { function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir ghostcontent if [ -d $temp_restore_dir ]; then - cp -r $temp_restore_dir/var/www/$GHOST_DOMAIN_NAME/htdocs/content/* /var/www/$GHOST_DOMAIN_NAME/htdocs/content/ + if [ -d $temp_restore_dir/var/www/$GHOST_DOMAIN_NAME/htdocs/content ]; then + cp -r $temp_restore_dir/var/www/$GHOST_DOMAIN_NAME/htdocs/content/* /var/www/$GHOST_DOMAIN_NAME/htdocs/content/ + else + cp -r $temp_restore_dir/* /var/www/$GHOST_DOMAIN_NAME/htdocs/content/ + fi chown -R ghost: /var/www/$GHOST_DOMAIN_NAME/htdocs rm -rf $temp_restore_dir fi diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index de77136d..89f63c91 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -430,16 +430,31 @@ function restore_local_gnusocial { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir gnusocialconfig if [ -d $temp_restore_dir ]; then - cp $temp_restore_dir$gnusocial_dir/backup/config.php $gnusocial_dir/ + if [ -d cp $temp_restore_dir$gnusocial_dir ]; then + cp $temp_restore_dir$gnusocial_dir/backup/config.php $gnusocial_dir/ + cp -rp $temp_restore_dir$gnusocial_dir/static $gnusocial_dir/ + else + cp $temp_restore_dir/backup/config.php $gnusocial_dir/ + if [ ! -d $gnusocial_dir/static ]; then + mkdir $gnusocial_dir/static + fi + cp -rp $temp_restore_dir/static/* $gnusocial_dir/static/ + fi chown www-data:www-data $gnusocial_dir/config.php - cp -rp $temp_restore_dir$gnusocial_dir/static $gnusocial_dir/ chown -R www-data:www-data $gnusocial_dir/static rm -rf $temp_restore_dir fi restore_directory_from_usb $temp_restore_dir gnusocialfile if [ -d $temp_restore_dir ]; then - cp -rp $temp_restore_dir$gnusocial_dir/file $gnusocial_dir/ + if [ -d cp $temp_restore_dir$gnusocial_dir/file ]; then + cp -rp $temp_restore_dir$gnusocial_dir/file $gnusocial_dir/ + else + if [ ! -d $gnusocial_dir/file ]; then + mkdir $gnusocial_dir/file + fi + cp -rp $temp_restore_dir/* $gnusocial_dir/file + fi chown -R www-data:www-data $gnusocial_dir/file rm -rf $temp_restore_dir fi @@ -511,16 +526,31 @@ function restore_remote_gnusocial { function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir gnusocialconfig if [ -d $temp_restore_dir ]; then - cp $temp_restore_dir$gnusocial_dir/backup/config.php $gnusocial_dir/ + if [ -d $temp_restore_dir$gnusocial_dir ]; then + cp $temp_restore_dir$gnusocial_dir/backup/config.php $gnusocial_dir/ + cp -rp $temp_restore_dir$gnusocial_dir/static $gnusocial_dir/ + else + cp $temp_restore_dir/backup/config.php $gnusocial_dir/ + if [ ! -d $gnusocial_dir/static ]; then + mkdir $gnusocial_dir/static + fi + cp -rp $temp_restore_dir/static/* $gnusocial_dir/static/ + fi chown www-data:www-data $gnusocial_dir/config.php - cp -rp $temp_restore_dir$gnusocial_dir/static $gnusocial_dir/ chown -R www-data:www-data $gnusocial_dir/static rm -rf $temp_restore_dir fi restore_directory_from_friend $temp_restore_dir gnusocialfile if [ -d $temp_restore_dir ]; then - cp -rp $temp_restore_dir$gnusocial_dir/file $gnusocial_dir/ + if [ ! -d $temp_restore_dir$gnusocial_dir/file ]; then + cp -rp $temp_restore_dir$gnusocial_dir/file $gnusocial_dir/ + else + if [ ! -d $gnusocial_dir/file ]; then + mkdir $gnusocial_dir/file + fi + cp -rp $temp_restore_dir/* $gnusocial_dir/file/ + fi chown -R www-data:www-data $gnusocial_dir/file rm -rf $temp_restore_dir fi diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs index 9a1615a9..5c24e80a 100755 --- a/src/freedombone-app-gogs +++ b/src/freedombone-app-gogs @@ -249,7 +249,11 @@ function restore_local_gogs { if [ ! -d /home/${GOGS_USERNAME}/custom ]; then mkdir -p /home/${GOGS_USERNAME}/custom fi - cp -r ${temp_restore_dir}/home/${GOGS_USERNAME}/custom/* /home/${GOGS_USERNAME}/custom + if [ ! -d ${temp_restore_dir}/home/${GOGS_USERNAME}/custom ]; then + cp -r ${temp_restore_dir}/home/${GOGS_USERNAME}/custom/* /home/${GOGS_USERNAME}/custom + else + cp -r ${temp_restore_dir}/* /home/${GOGS_USERNAME}/custom/ + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -260,7 +264,11 @@ function restore_local_gogs { echo $"Restoring Gogs repos" function_check restore_directory_from_usb restore_directory_from_usb ${temp_restore_dir}repos gogsrepos - cp -r ${temp_restore_dir}repos/home/${GOGS_USERNAME}/gogs-repositories/* /home/${GOGS_USERNAME}/gogs-repositories/ + if [ ! -d ${temp_restore_dir}repos/home/${GOGS_USERNAME}/gogs-repositories ]; then + cp -r ${temp_restore_dir}repos/home/${GOGS_USERNAME}/gogs-repositories/* /home/${GOGS_USERNAME}/gogs-repositories/ + else + cp -r ${temp_restore_dir}/* /home/${GOGS_USERNAME}/gogs-repositories/ + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -274,7 +282,11 @@ function restore_local_gogs { if [ ! -d /home/${GOGS_USERNAME}/.ssh ]; then mkdir /home/${GOGS_USERNAME}/.ssh fi - cp -r ${temp_restore_dir}ssh/home/${GOGS_USERNAME}/.ssh/* /home/${GOGS_USERNAME}/.ssh/ + if [ -d ${temp_restore_dir}ssh/home/${GOGS_USERNAME}/.ssh ]; then + cp -r ${temp_restore_dir}ssh/home/${GOGS_USERNAME}/.ssh/* /home/${GOGS_USERNAME}/.ssh/ + else + cp -r ${temp_restore_dir}/* /home/${GOGS_USERNAME}/.ssh/ + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -338,13 +350,21 @@ function restore_remote_gogs { if [ ! -d /home/${GOGS_USERNAME}/custom ]; then mkdir -p /home/${GOGS_USERNAME}/custom fi - cp -r /root/tempgogs/home/${GOGS_USERNAME}/custom/* /home/${GOGS_USERNAME}/custom/ + if [ -d /root/tempgogs/home/${GOGS_USERNAME}/custom ]; then + cp -r /root/tempgogs/home/${GOGS_USERNAME}/custom/* /home/${GOGS_USERNAME}/custom/ + else + cp -r /root/tempgogs/* /home/${GOGS_USERNAME}/custom/ + fi if [ ! "$?" = "0" ]; then exit 58852 fi echo $"Restoring Gogs repos" restore_directory_from_friend /root/tempgogsrepos gogsrepos - cp -r /root/tempgogsrepos/home/${GOGS_USERNAME}/gogs-repositories/* /home/${GOGS_USERNAME}/gogs-repositories/ + if [ -d /root/tempgogsrepos/home/${GOGS_USERNAME}/gogs-repositories ]; then + cp -r /root/tempgogsrepos/home/${GOGS_USERNAME}/gogs-repositories/* /home/${GOGS_USERNAME}/gogs-repositories/ + else + cp -r /root/tempgogsrepos/* /home/${GOGS_USERNAME}/gogs-repositories/ + fi if [ ! "$?" = "0" ]; then exit 7649 fi @@ -353,7 +373,11 @@ function restore_remote_gogs { if [ ! -d /home/${GOGS_USERNAME}/.ssh ]; then mkdir /home/${GOGS_USERNAME}/.ssh fi - cp -r /root/tempgogsssh/home/${GOGS_USERNAME}/.ssh/* /home/${GOGS_USERNAME}/.ssh/ + if [ -d /root/tempgogsssh/home/${GOGS_USERNAME}/.ssh ]; then + cp -r /root/tempgogsssh/home/${GOGS_USERNAME}/.ssh/* /home/${GOGS_USERNAME}/.ssh/ + else + cp -r /root/tempgogsssh/* /home/${GOGS_USERNAME}/.ssh/ + fi if [ ! "$?" = "0" ]; then exit 74239 fi diff --git a/src/freedombone-app-htmly b/src/freedombone-app-htmly index 36ba5b4f..c41ee27f 100755 --- a/src/freedombone-app-htmly +++ b/src/freedombone-app-htmly @@ -249,8 +249,15 @@ function restore_local_htmly { fi mv /var/www/${HTMLY_DOMAIN_NAME}/htdocs /var/www/${HTMLY_DOMAIN_NAME}/previous fi - temp_source_dir=$(find ${temp_restore_dir} -name htdocs) - cp -r ${temp_source_dir} /var/www/${HTMLY_DOMAIN_NAME}/ + if [ -d ${temp_restore_dir}/var/www/${HTMLY_DOMAIN_NAME}/htdocs ]; then + temp_source_dir=$(find ${temp_restore_dir} -name htdocs) + cp -r ${temp_source_dir} /var/www/${HTMLY_DOMAIN_NAME}/ + else + if [ ! -d /var/www/${HTMLY_DOMAIN_NAME}/htdocs ]; then + mkdir /var/www/${HTMLY_DOMAIN_NAME}/htdocs + fi + cp -r ${temp_restore_dir}/* /var/www/${HTMLY_DOMAIN_NAME}/htdocs/ + fi if [ ! "$?" = "0" ]; then if [ -d /var/www/${HTMLY_DOMAIN_NAME}/previous ]; then mv /var/www/${HTMLY_DOMAIN_NAME}/previous /var/www/${HTMLY_DOMAIN_NAME}/htdocs @@ -315,8 +322,17 @@ function restore_remote_htmly { fi mv /var/www/${HTMLY_DOMAIN_NAME}/htdocs /var/www/${HTMLY_DOMAIN_NAME}/previous fi - temp_source_dir=$(find ${temp_restore_dir} -name htdocs) - cp -r ${temp_source_dir} /var/www/${HTMLY_DOMAIN_NAME}/ + + if [ -d ${temp_restore_dir}/var/www/${HTMLY_DOMAIN_NAME}/htdocs ]; then + temp_source_dir=$(find ${temp_restore_dir} -name htdocs) + cp -r ${temp_source_dir} /var/www/${HTMLY_DOMAIN_NAME}/ + else + if [ ! -d /var/www/${HTMLY_DOMAIN_NAME}/htdocs ]; then + mkdir /var/www/${HTMLY_DOMAIN_NAME}/htdocs + fi + cp -r ${temp_restore_dir}/* /var/www/${HTMLY_DOMAIN_NAME}/htdocs/ + fi + if [ ! "$?" = "0" ]; then if [ -d /var/www/${HTMLY_DOMAIN_NAME}/previous ]; then mv /var/www/${HTMLY_DOMAIN_NAME}/previous /var/www/${HTMLY_DOMAIN_NAME}/htdocs diff --git a/src/freedombone-app-ipfs b/src/freedombone-app-ipfs index 92aec6ed..cc791d46 100755 --- a/src/freedombone-app-ipfs +++ b/src/freedombone-app-ipfs @@ -119,7 +119,11 @@ function restore_local_ipfs { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir ipfs ADMIN_USERNAME=$(get_completion_param "Admin user") - cp -rf $temp_restore_dir/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/.ipfs ]; then + cp -rf $temp_restore_dir/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs + else + cp -rf $temp_restore_dir/* /home/$ADMIN_USERNAME/.ipfs + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -151,7 +155,11 @@ function restore_remote_ipfs { temp_restore_dir=/root/tempipfs function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir ipfs - cp -rf $temp_restore_dir/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/.ipfs ]; then + cp -rf $temp_restore_dir/home/$ADMIN_USERNAME/.ipfs/* /home/$ADMIN_USERNAME/.ipfs + else + cp -rf $temp_restore_dir/* /home/$ADMIN_USERNAME/.ipfs + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions diff --git a/src/freedombone-app-kanboard b/src/freedombone-app-kanboard index ce5d2d74..13c74bdf 100755 --- a/src/freedombone-app-kanboard +++ b/src/freedombone-app-kanboard @@ -243,14 +243,25 @@ function restore_local_kanboard { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir kanboardconfig if [ -d $temp_restore_dir ]; then - cp $temp_restore_dir$kanboard_dir/backup/config.php $kanboard_dir/ + if [ -d $temp_restore_dir$kanboard_dir/backup ]; then + cp $temp_restore_dir$kanboard_dir/backup/config.php $kanboard_dir/ + else + cp $temp_restore_dir/config.php $kanboard_dir/ + fi chown www-data:www-data $kanboard_dir/config.php rm -rf $temp_restore_dir fi restore_directory_from_usb $temp_restore_dir kanboardfile if [ -d $temp_restore_dir ]; then - cp -rp $temp_restore_dir$kanboard_dir/data $kanboard_dir/ + if [ -d $temp_restore_dir$kanboard_dir/data ]; then + cp -rp $temp_restore_dir$kanboard_dir/data $kanboard_dir/ + else + if [ ! -d $kanboard_dir/data ]; then + mkdir $kanboard_dir/data + fi + cp -rp $temp_restore_dir/* $kanboard_dir/data/ + fi chown -R www-data:www-data $kanboard_dir/data rm -rf $temp_restore_dir fi @@ -313,14 +324,25 @@ function restore_remote_kanboard { function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir kanboardconfig if [ -d $temp_restore_dir ]; then - cp $temp_restore_dir$kanboard_dir/backup/config.php $kanboard_dir/ + if [ -d $temp_restore_dir$kanboard_dir/backup ]; then + cp $temp_restore_dir$kanboard_dir/backup/config.php $kanboard_dir/ + else + cp $temp_restore_dir/config.php $kanboard_dir/ + fi chown www-data:www-data $kanboard_dir/config.php rm -rf $temp_restore_dir fi restore_directory_from_friend $temp_restore_dir kanboardfile if [ -d $temp_restore_dir ]; then - cp -rp $temp_restore_dir$kanboard_dir/data $kanboard_dir/ + if [ -d $temp_restore_dir$kanboard_dir/data ]; then + cp -rp $temp_restore_dir$kanboard_dir/data $kanboard_dir/ + else + if [ ! -d $kanboard_dir/data ]; then + mkdir $kanboard_dir/data + fi + cp -rp $temp_restore_dir/* $kanboard_dir/data/ + fi chown -R www-data:www-data $kanboard_dir/data rm -rf $temp_restore_dir fi diff --git a/src/freedombone-app-keyserver b/src/freedombone-app-keyserver index 7001920d..4688a18f 100755 --- a/src/freedombone-app-keyserver +++ b/src/freedombone-app-keyserver @@ -202,7 +202,11 @@ function restore_local_keyserver { temp_restore_dir=/root/tempkeyserverconfig function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir keyserverconfig - cp -r $temp_restore_dir/etc/sks/* /etc/sks/ + if [ -d $temp_restore_dir/etc/sks ]; then + cp -r $temp_restore_dir/etc/sks/* /etc/sks/ + else + cp -r $temp_restore_dir/* /etc/sks/ + fi rm -rf $temp_restore_dir chown -Rc debian-sks: /etc/sks/sksconf chown -Rc debian-sks: /etc/sks/mailsync @@ -211,7 +215,14 @@ function restore_local_keyserver { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir keyserver mv /var/lib/sks/DB /var/lib/sks/DB_prev - cp -r $temp_restore_dir/var/lib/sks/DB /var/lib/sks/DB + if [ -d $temp_restore_dir/var/lib/sks/DB ]; then + cp -r $temp_restore_dir/var/lib/sks/DB /var/lib/sks/DB + else + if [ ! -d /var/lib/sks/DB ]; then + mkdir /var/lib/sks/DB + fi + cp -r $temp_restore_dir/* /var/lib/sks/DB + fi if [ ! "$?" = "0" ]; then # restore the old database rm -rf /var/lib/sks/DB @@ -272,7 +283,11 @@ function restore_remote_keyserver { temp_restore_dir=/root/tempkeyserverconfig function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir keyserverconfig - cp -r $temp_restore_dir/etc/sks/* /etc/sks/ + if [ -d $temp_restore_dir/etc/sks ]; then + cp -r $temp_restore_dir/etc/sks/* /etc/sks/ + else + cp -r $temp_restore_dir/* /etc/sks/ + fi rm -rf $temp_restore_dir chown -Rc debian-sks: /etc/sks/sksconf chown -Rc debian-sks: /etc/sks/mailsync @@ -281,7 +296,14 @@ function restore_remote_keyserver { function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir keyserver mv /var/lib/sks/DB /var/lib/sks/DB_prev - cp -r $temp_restore_dir/var/lib/sks/DB /var/lib/sks/DB + if [ -d $temp_restore_dir/var/lib/sks/DB ]; then + cp -r $temp_restore_dir/var/lib/sks/DB /var/lib/sks/DB + else + if [ ! -d /var/lib/sks/DB ]; then + mkdir /var/lib/sks/DB + fi + cp -r $temp_restore_dir/* /var/lib/sks/DB + fi if [ ! "$?" = "0" ]; then # restore the old database rm -rf /var/lib/sks/DB diff --git a/src/freedombone-app-matrix b/src/freedombone-app-matrix index fac768f7..27a35f4f 100755 --- a/src/freedombone-app-matrix +++ b/src/freedombone-app-matrix @@ -54,14 +54,42 @@ MATRIX_REPO="https://github.com/matrix-org/synapse" MATRIX_COMMIT='c45dc6c62aa2a2e83a10d8116a709dfd8c144e3c' REPORT_STATS="no" MATRIX_SECRET= +MATRIX_EXPIRE_MONTHS=1 matrix_variables=(ONION_ONLY MY_USERNAME MATRIX_SECRET DEFAULT_DOMAIN_NAME MATRIX_DOMAIN_NAME + MATRIX_EXPIRE_MONTHS MATRIX_CODE) +function matrix_expire_old_posts { + read_config_param MY_USERNAME + read_config_param MATRIX_DOMAIN_NAME + read_config_param MATRIX_EXPIRE_MONTHS + read_config_param MATRIX_PORT + + matrix_remove_posts=/usr/bin/matrix-remove + echo '#!/bin/bash' > $matrix_remove_posts + echo "cd $MATRIX_DATA_DIR" >> $matrix_remove_posts + echo 'ROOM=$1' >> $matrix_remove_posts + echo "ADMIN=\"@${MY_USERNAME}:$MATRIX_DOMAIN_NAME\"" >> $matrix_remove_posts + echo "TIME='$MATRIX_EXPIRE_MONTHS months ago'" >> $matrix_remove_posts + echo "UNIX_TIMESTAMP=\$(date +%s%3N --date='TZ=\"UTC+0\" '\"\$TIME\")" >> $matrix_remove_posts + echo 'BUSY="pragma busy_timeout=20000"' >> $matrix_remove_posts + echo "BUFFER=\$(sqlite3 homeserver.db \"\$BUSY;select event_id from events where type='m.room.message' and received_ts<'\$UNIX_TIMESTAMP' and room_id='\$ROOM' order by received_ts desc limit 1;\")" >> $matrix_remove_posts + echo "EVENT_ID=\$(echo \$BUFFER|awk '{print \$2}')" >> $matrix_remove_posts + + echo "BUFFER=\$(sqlite3 homeserver.db \"\$BUSY;select token from access_tokens where user_id like '\$ADMIN' order by id desc limit 1;\")" >> $matrix_remove_posts + echo "TOKEN=\$(echo \$BUFFER|awk '{print \$2}')" >> $matrix_remove_posts + + echo 'set -x' >> $matrix_remove_posts + echo "curl -v -X POST 'https://$MATRIX_DOMAIN_NAME/_matrix/client/r0/admin/purge_history/'\$ROOM'/'\$EVENT_ID'?access_token='\$TOKEN" >> $matrix_remove_posts + + chmod +x $matrix_remove_posts +} + function logging_on_matrix { if [ -f /var/lib/matrix/homeserver.yaml ]; then if ! grep -q "log_file: /etc/matrix/homeserver.log" /var/lib/matrix/homeserver.yaml; then @@ -415,7 +443,11 @@ function restore_local_matrix { temp_restore_dir=/root/tempmatrix function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir matrix - cp -r $temp_restore_dir/etc/matrix/* /etc/matrix + if [ -d $temp_restore_dir/etc/matrix ]; then + cp -r $temp_restore_dir/etc/matrix/* /etc/matrix + else + cp -r $temp_restore_dir/* /etc/matrix/ + fi if [ ! "$?" = "0" ]; then function_check backup_unmount_drive backup_unmount_drive @@ -426,7 +458,11 @@ function restore_local_matrix { temp_restore_dir=/root/tempmatrixdata restore_directory_from_usb $temp_restore_dir matrixdata - cp -r $temp_restore_dir$MATRIX_DATA_DIR/* $MATRIX_DATA_DIR + if [ -d $temp_restore_dir$MATRIX_DATA_DIR ]; then + cp -r $temp_restore_dir$MATRIX_DATA_DIR/* $MATRIX_DATA_DIR + else + cp -r $temp_restore_dir/* $MATRIX_DATA_DIR/ + fi if [ ! "$?" = "0" ]; then function_check backup_unmount_drive backup_unmount_drive @@ -472,7 +508,11 @@ function restore_remote_matrix { temp_restore_dir=/root/tempmatrix function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir matrix - cp -r $temp_restore_dir/etc/matrix/* /etc/matrix + if [ -d $temp_restore_dir/etc/matrix ]; then + cp -r $temp_restore_dir/etc/matrix/* /etc/matrix + else + cp -r $temp_restore_dir/* /etc/matrix/ + fi if [ ! "$?" = "0" ]; then exit 38935 fi @@ -481,7 +521,11 @@ function restore_remote_matrix { temp_restore_dir=/root/tempmatrixdata restore_directory_from_friend $temp_restore_dir matrixdata - cp -r $temp_restore_dir$MATRIX_DATA_DIR/* $MATRIX_DATA_DIR + if [ -d $temp_restore_dir$MATRIX_DATA_DIR ]; then + cp -r $temp_restore_dir$MATRIX_DATA_DIR/* $MATRIX_DATA_DIR + else + cp -r $temp_restore_dir/* $MATRIX_DATA_DIR/ + fi if [ ! "$?" = "0" ]; then exit 60923 fi @@ -635,6 +679,9 @@ function install_home_server { fi chmod -R 700 $MATRIX_DATA_DIR/homeserver.db + cd $MATRIX_DATA_DIR + sqlite3 homeserver.db "PRAGMA auto_vacuum = FULL;" + MATRIX_ONION_HOSTNAME=$(add_onion_service matrix ${MATRIX_PORT} ${MATRIX_ONION_PORT}) echo "HiddenServicePort ${MATRIX_HTTP_PORT} 127.0.0.1:${MATRIX_FEDERATION_ONION_PORT}" >> /etc/tor/torrc systemctl restart tor diff --git a/src/freedombone-app-mediagoblin b/src/freedombone-app-mediagoblin index 54eb6528..a6431adf 100755 --- a/src/freedombone-app-mediagoblin +++ b/src/freedombone-app-mediagoblin @@ -177,7 +177,11 @@ function restore_local_mediagoblin { temp_restore_dir=/root/tempmediagoblin function_check restore_directory_from_usb restore_directory_from_usb ${temp_restore_dir} mediagoblin - cp -r ${temp_restore_dir}$MEDIAGOBLIN_BASE_DIR/* $MEDIAGOBLIN_BASE_DIR/ + if [ -d ${temp_restore_dir}$MEDIAGOBLIN_BASE_DIR ]; then + cp -r ${temp_restore_dir}$MEDIAGOBLIN_BASE_DIR/* $MEDIAGOBLIN_BASE_DIR/ + else + cp -r ${temp_restore_dir}/* $MEDIAGOBLIN_BASE_DIR/ + fi if [ ! "$?" = "0" ]; then function_check restore_directory_from_usb set_user_permissions @@ -186,7 +190,11 @@ function restore_local_mediagoblin { exit 45327 fi restore_directory_from_usb ${temp_restore_dir}2 mediagoblindata - cp -r ${temp_restore_dir}2/var/lib/mediagoblin/* /var/lib/mediagoblin/ + if [ -d ${temp_restore_dir}2/var/lib/mediagoblin ]; then + cp -r ${temp_restore_dir}2/var/lib/mediagoblin/* /var/lib/mediagoblin/ + else + cp -r ${temp_restore_dir}2/* /var/lib/mediagoblin/ + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -214,21 +222,30 @@ function backup_remote_mediagoblin { function restore_remote_mediagoblin { MEDIAGOBLIN_BASE_DIR=/var/www/$MEDIAGOBLIN_DOMAIN_NAME/htdocs if [ -d $SERVER_DIRECTORY/backup/mediagoblin ]; then + temp_restore_dir=/root/tempmediagoblin function_check get_completion_param MEDIAGOBLIN_DOMAIN_NAME=$(get_completion_param "mediagoblin domain") function_check restore_directory_from_friend - restore_directory_from_friend /root/tempmediagoblin mediagoblin - cp -r /root/tempmediagoblin/var/lib/mediagoblin/* /var/lib/mediagoblin/ + restore_directory_from_friend $temp_restore_dir mediagoblin + if [ -d ${temp_restore_dir}$MEDIAGOBLIN_BASE_DIR ]; then + cp -r ${temp_restore_dir}$MEDIAGOBLIN_BASE_DIR/* $MEDIAGOBLIN_BASE_DIR/ + else + cp -r ${temp_restore_dir}/* $MEDIAGOBLIN_BASE_DIR/ + fi if [ ! "$?" = "0" ]; then exit 264824 fi - restore_directory_from_friend /root/tempmediagoblin2 mediagoblindata - cp -r /root/tempmediagoblin/var/lib/mediagoblin/* /var/lib/mediagoblin/ + restore_directory_from_friend ${temp_restore_dir}2 mediagoblindata + if [ -d ${temp_restore_dir}2/var/lib/mediagoblin ]; then + cp -r ${temp_restore_dir}2/var/lib/mediagoblin/* /var/lib/mediagoblin/ + else + cp -r ${temp_restore_dir}2/* /var/lib/mediagoblin/ + fi if [ ! "$?" = "0" ]; then exit 268492 fi - rm -rf /root/tempmediagoblin - rm -rf /root/tempmediagoblin2 + rm -rf ${temp_restore_dir} + rm -rf ${temp_restore_dir}2 chown -hR mediagoblin:www-data $MEDIAGOBLIN_BASE_DIR chown -hR mediagoblin:www-data /var/lib/mediagoblin chmod -R g+wx /var/lib/mediagoblin diff --git a/src/freedombone-app-mumble b/src/freedombone-app-mumble index 7cff5a14..6dc411ff 100755 --- a/src/freedombone-app-mumble +++ b/src/freedombone-app-mumble @@ -107,7 +107,11 @@ function restore_local_mumble { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir voip restore_directory_from_usb $temp_restore_dir mumble - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/ + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/ + else + cp -f $temp_restore_dir/mumble-server.ini /etc/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -116,7 +120,11 @@ function restore_local_mumble { backup_unmount_drive exit 3679 fi - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/ + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/ + else + cp -f $temp_restore_dir/mumble-server.sqlite /var/lib/mumble-server/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -152,17 +160,29 @@ function restore_remote_mumble { temp_restore_dir=/root/tempmumble function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir mumble - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/ + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.ini /etc/ + else + cp -f $temp_restore_dir/mumble-server.ini /etc/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 7823 fi - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf + else + cp -f $temp_restore_dir/sipwitch.conf /etc/sipwitch.conf + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 7823 fi - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/ + if [ $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/mumble-server.sqlite /var/lib/mumble-server/ + else + cp -f $temp_restore_dir/mumble-server.sqlite /var/lib/mumble-server/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 276 diff --git a/src/freedombone-app-nextcloud b/src/freedombone-app-nextcloud index 085b6a0a..33c1639f 100755 --- a/src/freedombone-app-nextcloud +++ b/src/freedombone-app-nextcloud @@ -254,8 +254,13 @@ function restore_local_nextcloud { temp_restore_dir=/root/tempnextcloudfiles restore_directory_from_usb $temp_restore_dir nextcloudfiles - temp_source_dir=$(find ${temp_restore_dir} -name data) - cp -r ${temp_source_dir} /var/www/${NEXTCLOUD_DOMAIN_NAME}/ + + if [ -d $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/data ]; then + cp -r $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/data /var/www/${NEXTCLOUD_DOMAIN_NAME}/ + else + cp -r $temp_restore_dir/* /var/www/${NEXTCLOUD_DOMAIN_NAME}/ + fi + if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -265,8 +270,13 @@ function restore_local_nextcloud { temp_restore_dir=/root/tempnextcloudconfig restore_directory_from_usb $temp_restore_dir nextcloudconfig - temp_source_dir=$(find ${temp_restore_dir} -name config) - cp -r ${temp_source_dir} /var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/ + + if [ -d $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config ]; then + cp -r $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config /var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs + else + cp -r $temp_restore_dir/* /var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config/ + fi + if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -324,8 +334,13 @@ function restore_remote_nextcloud { temp_restore_dir=/root/tempnextcloudfiles restore_directory_from_friend $temp_restore_dir nextcloudfiles - temp_source_dir=$(find ${temp_restore_dir} -name data) - cp -r ${temp_source_dir} /var/www/${NEXTCLOUD_DOMAIN_NAME}/ + + if [ -d $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/data ]; then + cp -r $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/data /var/www/${NEXTCLOUD_DOMAIN_NAME}/ + else + cp -r $temp_restore_dir/* /var/www/${NEXTCLOUD_DOMAIN_NAME}/ + fi + if [ ! "$?" = "0" ]; then exit 768254 fi @@ -333,8 +348,13 @@ function restore_remote_nextcloud { temp_restore_dir=/root/tempnextcloudconfig restore_directory_from_friend $temp_restore_dir nextcloudconfig - temp_source_dir=$(find ${temp_restore_dir} -name config) - cp -r ${temp_source_dir} /var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/ + + if [ -d $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config ]; then + cp -r $temp_restore_dir/var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config /var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs + else + cp -r $temp_restore_dir/* /var/www/${NEXTCLOUD_DOMAIN_NAME}/htdocs/config/ + fi + if [ ! "$?" = "0" ]; then exit 573427 fi diff --git a/src/freedombone-app-pelican b/src/freedombone-app-pelican index 46bcf8e8..af454a5f 100755 --- a/src/freedombone-app-pelican +++ b/src/freedombone-app-pelican @@ -449,7 +449,11 @@ function restore_local_pelican { temp_restore_dir=/root/temppelican function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir pelican - cp -r $temp_restore_dir/etc/blog/* /etc/blog/ + if [ -d $temp_restore_dir/etc/blog ]; then + cp -r $temp_restore_dir/etc/blog/* /etc/blog/ + else + cp -r $temp_restore_dir/* /etc/blog/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -466,7 +470,11 @@ function restore_local_pelican { temp_restore_dir=/root/temppelican-site function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir pelican-site - cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/ + if [ -d $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then + cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/ + else + cp -r $temp_restore_dir/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -495,7 +503,11 @@ function restore_remote_pelican { temp_restore_dir=/root/temppelican function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir pelican - cp -r $temp_restore_dir/etc/blog/* /etc/blog/ + if [ -d $temp_restore_dir/etc/blog ]; then + cp -r $temp_restore_dir/etc/blog/* /etc/blog/ + else + cp -r $temp_restore_dir/* /etc/blog/ + fi if [ ! "$?" = "0" ]; then exit 782352 fi @@ -507,7 +519,11 @@ function restore_remote_pelican { temp_restore_dir=/root/temppelican-site function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir pelican-site - cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/ + if [ -d $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs ]; then + cp -r $temp_restore_dir/var/www/$PELICAN_DOMAIN_NAME/htdocs/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/ + else + cp -r $temp_restore_dir/* /var/www/$PELICAN_DOMAIN_NAME/htdocs/ + fi if [ ! "$?" = "0" ]; then exit 76382562 fi diff --git a/src/freedombone-app-postactiv b/src/freedombone-app-postactiv index 2be6586d..57c06889 100755 --- a/src/freedombone-app-postactiv +++ b/src/freedombone-app-postactiv @@ -446,16 +446,31 @@ function restore_local_postactiv { function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir postactivconfig if [ -d $temp_restore_dir ]; then - cp $temp_restore_dir$postactiv_dir/backup/config.php $postactiv_dir/ + if [ -d $temp_restore_dir$postactiv_dir ]; then + cp $temp_restore_dir$postactiv_dir/backup/config.php $postactiv_dir/ + cp -rp $temp_restore_dir$postactiv_dir/static $postactiv_dir/ + else + cp $temp_restore_dir/backup/config.php $postactiv_dir/ + if [ ! -d $postactiv_dir/static ]; then + mkdir $postactiv_dir/static + fi + cp -rp $temp_restore_dir/static/* $postactiv_dir/static/ + fi chown www-data:www-data $postactiv_dir/config.php - cp -rp $temp_restore_dir$postactiv_dir/static $postactiv_dir/ chown -R www-data:www-data $postactiv_dir/static rm -rf $temp_restore_dir fi restore_directory_from_usb $temp_restore_dir postactivfile if [ -d $temp_restore_dir ]; then - cp -rp $temp_restore_dir$postactiv_dir/file $postactiv_dir/ + if [ -d $temp_restore_dir$postactiv_dir/file ]; then + cp -rp $temp_restore_dir$postactiv_dir/file $postactiv_dir/ + else + if [ ! -d $postactiv_dir/file ]; then + mkdir $postactiv_dir/file + fi + cp -rp $temp_restore_dir/* $postactiv_dir/file/ + fi chown -R www-data:www-data $postactiv_dir/file rm -rf $temp_restore_dir fi @@ -527,16 +542,31 @@ function restore_remote_postactiv { function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir postactivconfig if [ -d $temp_restore_dir ]; then - cp $temp_restore_dir$postactiv_dir/backup/config.php $postactiv_dir/ + if [ -d $temp_restore_dir$postactiv_dir ]; then + cp $temp_restore_dir$postactiv_dir/backup/config.php $postactiv_dir/ + cp -rp $temp_restore_dir$postactiv_dir/static $postactiv_dir/ + else + cp $temp_restore_dir/config.php $postactiv_dir/ + if [ ! -d $postactiv_dir/static ]; then + mkdir $postactiv_dir/static + fi + cp -rp $temp_restore_dir/static/* $postactiv_dir/static/ + fi chown www-data:www-data $postactiv_dir/config.php - cp -rp $temp_restore_dir$postactiv_dir/static $postactiv_dir/ chown -R www-data:www-data $postactiv_dir/static rm -rf $temp_restore_dir fi restore_directory_from_friend $temp_restore_dir postactivfile if [ -d $temp_restore_dir ]; then - cp -rp $temp_restore_dir$postactiv_dir/file $postactiv_dir/ + if [ -d $temp_restore_dir$postactiv_dir/file ]; then + cp -rp $temp_restore_dir$postactiv_dir/file $postactiv_dir/ + else + if [ ! -d $postactiv_dir/file ]; then + mkdir $postactiv_dir/file + fi + cp -rp $temp_restore_dir/* $postactiv_dir/file/ + fi chown -R www-data:www-data $postactiv_dir/file rm -rf $temp_restore_dir fi diff --git a/src/freedombone-app-radicale b/src/freedombone-app-radicale index 855ac02c..eee37373 100755 --- a/src/freedombone-app-radicale +++ b/src/freedombone-app-radicale @@ -214,7 +214,11 @@ function restore_local_radicale { temp_restore_dir=/root/tempradicale function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir radicale - cp -r $temp_restore_dir${RADICALE_DIRECTORY}/* ${RADICALE_DIRECTORY} + if [ -d $temp_restore_dir${RADICALE_DIRECTORY} ]; then + cp -r $temp_restore_dir${RADICALE_DIRECTORY}/* ${RADICALE_DIRECTORY} + else + cp -r $temp_restore_dir/* ${RADICALE_DIRECTORY}/ + fi if [ ! "$?" = "0" ]; then function_check backup_unmount_drive backup_unmount_drive @@ -224,7 +228,11 @@ function restore_local_radicale { temp_restore_dir=/root/tempradicalewww restore_directory_from_usb $temp_restore_dir radicalewww - cp -r $temp_restore_dir/var/www/radicale/* /var/www/radicale + if [ -d $temp_restore_dir/var/www/radicale ]; then + cp -r $temp_restore_dir/var/www/radicale/* /var/www/radicale + else + cp -r $temp_restore_dir/* /var/www/radicale/* + fi if [ ! "$?" = "0" ]; then function_check backup_unmount_drive backup_unmount_drive @@ -251,7 +259,11 @@ function restore_remote_radicale { temp_restore_dir=/root/tempradicale function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir radicale - cp -r $temp_restore_dir${RADICALE_DIRECTORY}/* ${RADICALE_DIRECTORY} + if [ -d $temp_restore_dir${RADICALE_DIRECTORY} ]; then + cp -r $temp_restore_dir${RADICALE_DIRECTORY}/* ${RADICALE_DIRECTORY} + else + cp -r $temp_restore_dir/* ${RADICALE_DIRECTORY}/ + fi if [ ! "$?" = "0" ]; then exit 236746 fi @@ -259,7 +271,11 @@ function restore_remote_radicale { temp_restore_dir=/root/tempradicalewww restore_directory_from_friend $temp_restore_dir radicalewww - cp -r $temp_restore_dir/var/www/radicale/* /var/www/radicale + if [ -d $temp_restore_dir/var/www/radicale ]; then + cp -r $temp_restore_dir/var/www/radicale/* /var/www/radicale + else + cp -r $temp_restore_dir/* /var/www/radicale + fi if [ ! "$?" = "0" ]; then exit 3674284 fi diff --git a/src/freedombone-app-riot b/src/freedombone-app-riot index ea841680..9a6a9969 100755 --- a/src/freedombone-app-riot +++ b/src/freedombone-app-riot @@ -33,9 +33,9 @@ VARIANTS='full full-vim chat' IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=1 -RIOT_VERSION='0.11.4' +RIOT_VERSION='0.12.1' RIOT_FILENAME="riot-v${RIOT_VERSION}" -RIOT_HASH='792b8eb398ec08c6f32f64b27f92d31d658c6d2338c1e43c84136f25f64d1cb2' +RIOT_HASH='f6fc2df335af2abcf9fa1329819d20b4d1a0fc8a94a8f087b5f09941f2d5c44a' RIOT_DOWNLOAD_URL="https://github.com/vector-im/riot-web/releases/download/v${RIOT_VERSION}" RIOT_ONION_PORT=8115 RIOT_ONION_HOSTNAME= diff --git a/src/freedombone-app-rss b/src/freedombone-app-rss index 9fe2c5f7..925f70e0 100755 --- a/src/freedombone-app-rss +++ b/src/freedombone-app-rss @@ -171,9 +171,13 @@ function restore_local_rss { restore_database ttrss ${RSS_READER_DOMAIN_NAME} if [ -d /etc/share/tt-rss ]; then - if [ -d /root/tempttrss/etc/share/tt-rss ]; then - rm -rf /etc/share/tt-rss - mv /root/tempttrss/etc/share/tt-rss /etc/share/ + if [ -d $temp_restore_dir/etc/share/tt-rss ]; then + if [ -d $temp_restore_dir/etc/share/tt-rss ]; then + rm -rf /etc/share/tt-rss + mv $temp_restore_dir/etc/share/tt-rss /etc/share/ + else + cp -r $temp_restore_dir/* /etc/share/tt-rss/ + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -230,6 +234,7 @@ function backup_remote_rss { } function restore_remote_rss { + temp_restore_dir=/root/tempttrss if grep -q "rss reader domain" $COMPLETION_FILE; then echo $"Restoring ttrss" function_check restore_database_from_friend @@ -240,8 +245,12 @@ function restore_remote_rss { restore_database_from_friend ttrss ${RSS_READER_DOMAIN_NAME} if [ -d /etc/share/tt-rss ]; then - rm -rf /etc/share/tt-rss - mv /root/tempttrss/etc/share/tt-rss /etc/share/ + if [ -d $temp_restore_dir/etc/share/tt-rss ]; then + rm -rf /etc/share/tt-rss + mv $temp_restore_dir/etc/share/tt-rss /etc/share/ + else + cp -r $temp_restore_dir/* /etc/share/tt-rss/ + fi if [ ! "$?" = "0" ]; then exit 6391 fi diff --git a/src/freedombone-app-scuttlebot b/src/freedombone-app-scuttlebot index 464f6cc5..977fcad3 100755 --- a/src/freedombone-app-scuttlebot +++ b/src/freedombone-app-scuttlebot @@ -144,8 +144,13 @@ function restore_local_scuttlebot { temp_restore_dir=/root/tempscuttlebot function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir scuttlebot - cp -r $temp_restore_dir/etc/scuttlebot/.ssb /etc/scuttlebot/ + if [ -d $temp_restore_dir/etc/scuttlebot/.ssb ]; then + cp -r $temp_restore_dir/etc/scuttlebot/.ssb /etc/scuttlebot/ + else + cp -r $temp_restore_dir/* /etc/scuttlebot/.ssb/* + fi systemctl start scuttlebot + rm -rf $temp_restore_dir fi } @@ -164,8 +169,13 @@ function restore_remote_scuttlebot { temp_restore_dir=/root/tempscuttlebot function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir scuttlebot - cp -r $temp_restore_dir/etc/scuttlebot/.ssb /etc/scuttlebot/ + if [ -d $temp_restore_dir/etc/scuttlebot/.ssb ]; then + cp -r $temp_restore_dir/etc/scuttlebot/.ssb /etc/scuttlebot/ + else + cp -r $temp_restore_dir/* /etc/scuttlebot/.ssb/* + fi systemctl start scuttlebot + rm -rf $temp_restore_dir fi } diff --git a/src/freedombone-app-sip b/src/freedombone-app-sip index 4215a853..8b3711a7 100755 --- a/src/freedombone-app-sip +++ b/src/freedombone-app-sip @@ -145,7 +145,11 @@ function restore_local_sip { temp_restore_dir=/root/tempsip function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir sip - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf + else + cp -f $temp_restore_dir/sipwitch.conf /etc/sipwitch.conf + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -173,7 +177,23 @@ function backup_remote_sip { } function restore_remote_sip { - echo -n '' + temp_restore_dir=/root/tempsip + function_check restore_directory_from_friend + restore_directory_from_friend $temp_restore_dir sip + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/sipwitch.conf /etc/sipwitch.conf + else + cp -f $temp_restore_dir/sipwitch.conf /etc/sipwitch.conf + fi + if [ ! "$?" = "0" ]; then + rm -rf $temp_restore_dir + function_check set_user_permissions + set_user_permissions + backup_unmount_drive + exit 3679 + fi + rm -rf $temp_restore_dir + systemctl restart sipwitch } function remove_sip { diff --git a/src/freedombone-app-syncthing b/src/freedombone-app-syncthing index befe878b..18398425 100755 --- a/src/freedombone-app-syncthing +++ b/src/freedombone-app-syncthing @@ -286,7 +286,13 @@ function restore_local_syncthing { echo $"Restoring syncthing configuration" function_check restore_directory_from_usb restore_directory_from_usb ${temp_restore_dir}config syncthingconfig - cp -r ${temp_restore_dir}config/* / + #cp -r ${temp_restore_dir}config/* / + + if [ ! -d /root/.config/syncthing ]; then + mkdir -p /root/.config/syncthing + fi + cp -r ${temp_restore_dir}config/* /root/.config/syncthing/ + if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -300,7 +306,13 @@ function restore_local_syncthing { if [ -d $USB_MOUNT/backup/syncthingshared ]; then echo $"Restoring syncthing shared files" restore_directory_from_usb ${temp_restore_dir}shared syncthingshared - cp -r ${temp_restore_dir}shared/* / + #cp -r ${temp_restore_dir}shared/* / + + if [ ! -d /var/lib/syncthing/SyncShared ]; then + mkdir -p /var/lib/syncthing/SyncShared + fi + cp -r ${temp_restore_dir}shared/* /var/lib/syncthing/SyncShared/ + if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -320,7 +332,11 @@ function restore_local_syncthing { fi echo $"Restoring syncthing files for $USERNAME" restore_directory_from_usb ${temp_restore_dir} syncthing/$USERNAME - cp -r ${temp_restore_dir}/home/$USERNAME/Sync /home/$USERNAME/ + if [ -d ${temp_restore_dir}/home/$USERNAME/Sync ]; then + cp -r ${temp_restore_dir}/home/$USERNAME/Sync /home/$USERNAME/ + else + cp -r ${temp_restore_dir}/* /home/$USERNAME/Sync/ + fi if [ ! "$?" = "0" ]; then rm -rf ${temp_restore_dir} set_user_permissions @@ -399,7 +415,11 @@ function restore_remote_syncthing { temp_restore_dir=/root/tempsyncthingconfig function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir syncthingconfig - cp -r $temp_restore_dir/* / + #cp -r $temp_restore_dir/* / + if [ ! -d /root/.config/syncthing ]; then + mkdir -p /root/.config/syncthing + fi + cp -r ${temp_restore_dir}config/* /root/.config/syncthing/ if [ ! "$?" = "0" ]; then systemctl start syncthing systemctl start cron @@ -413,7 +433,11 @@ function restore_remote_syncthing { temp_restore_dir=/root/tempsyncthingshared function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir syncthingshared - cp -r $temp_restore_dir/* / + #cp -r $temp_restore_dir/* / + if [ ! -d /var/lib/syncthing/SyncShared ]; then + mkdir -p /var/lib/syncthing/SyncShared + fi + cp -r ${temp_restore_dir}shared/* /var/lib/syncthing/SyncShared/ if [ ! "$?" = "0" ]; then systemctl start syncthing systemctl start cron @@ -433,7 +457,11 @@ function restore_remote_syncthing { temp_restore_dir=/root/tempsyncthing function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir syncthing/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/Sync /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/Sync ]; then + cp -r $temp_restore_dir/home/$USERNAME/Sync /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/Sync/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir systemctl start syncthing diff --git a/src/freedombone-app-tahoelafs b/src/freedombone-app-tahoelafs index 676721c1..458f1e05 100755 --- a/src/freedombone-app-tahoelafs +++ b/src/freedombone-app-tahoelafs @@ -298,13 +298,22 @@ function restore_local_tahoelafs { systemctl stop tahoelafs-client temp_restore_dir=/root/temptahoelafs restore_directory_from_usb $temp_restore_dir tahoelafs - mv $TAHOE_DIR ${TAHOE_DIR}-old - cp -r $temp_restore_dir$TAHOE_DIR $TAHOE_DIR + if [ -d $temp_restore_dir$TAHOE_DIR ]; then + mv $TAHOE_DIR ${TAHOE_DIR}-old + cp -r $temp_restore_dir$TAHOE_DIR $TAHOE_DIR + else + cp -r $temp_restore_dir/* $TAHOE_DIR/ + fi if [ ! "$?" = "0" ]; then - mv ${TAHOE_DIR}-old $TAHOE_DIR + if [ -d ${TAHOE_DIR}-old ]; then + mv ${TAHOE_DIR}-old $TAHOE_DIR + fi exit 246833 fi - rm -rf ${TAHOE_DIR}-old + if [ -d ${TAHOE_DIR}-old ]; then + rm -rf ${TAHOE_DIR}-old + fi + rm -rf $temp_restore_dir chown -R tahoelafs:debian-tor $TAHOE_DIR systemctl start tahoelafs-client systemctl start tahoelafs-storage @@ -331,13 +340,22 @@ function restore_remote_tahoelafs { systemctl stop tahoelafs-client temp_restore_dir=/root/temptahoelafs restore_directory_from_friend $temp_restore_dir tahoelafs - mv $TAHOE_DIR ${TAHOE_DIR}-old - cp -r $temp_restore_dir$TAHOE_DIR $TAHOE_DIR + if [ -d $temp_restore_dir$TAHOE_DIR ]; then + mv $TAHOE_DIR ${TAHOE_DIR}-old + cp -r $temp_restore_dir$TAHOE_DIR $TAHOE_DIR + else + cp -r $temp_restore_dir/* $TAHOE_DIR/ + fi if [ ! "$?" = "0" ]; then - mv ${TAHOE_DIR}old $TAHOE_DIR + if [ -d ${$TAHOE_DIR}-old ]; then + mv ${TAHOE_DIR}-old $TAHOE_DIR + fi exit 623925 fi - rm -rf ${$TAHOE_DIR}-old + if [ -d ${$TAHOE_DIR}-old ]; then + rm -rf ${$TAHOE_DIR}-old + fi + rm -rf $temp_restore_dir chown -R tahoelafs:debian-tor $TAHOE_DIR systemctl start tahoelafs-client systemctl start tahoelafs-storage diff --git a/src/freedombone-app-tox b/src/freedombone-app-tox index 3de26113..a07896ee 100755 --- a/src/freedombone-app-tox +++ b/src/freedombone-app-tox @@ -213,7 +213,8 @@ function restore_local_tox { if [ -d $USB_MOUNT/backup/tox ]; then echo $"Restoring Tox node settings" function_check restore_directory_from_usb - restore_directory_from_usb / tox + #restore_directory_from_usb / tox + restore_directory_from_usb /var/lib/tox-bootstrapd tox if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -250,7 +251,8 @@ function restore_remote_tox { if [ -d $SERVER_DIRECTORY/backup/tox ]; then echo $"Restoring Tox node settings" function_check restore_directory_from_friend - restore_directory_from_friend / tox + #restore_directory_from_friend / tox + restore_directory_from_friend /var/lib/tox-bootstrapd tox if [ ! "$?" = "0" ]; then exit 93653 fi diff --git a/src/freedombone-app-turtl b/src/freedombone-app-turtl index 4d8f756b..44355931 100755 --- a/src/freedombone-app-turtl +++ b/src/freedombone-app-turtl @@ -249,18 +249,14 @@ function restore_local_turtl { if [ $TURTL_DOMAIN_NAME ]; then temp_restore_dir=/root/tempturtl restore_directory_from_usb $temp_restore_dir turtl - if [ -d $TURTL_BASE_DIR ]; then - if [ -d /etc/turtl_previous ]; then - rm -rf /etc/turtl_previous - fi - mv $TURTL_BASE_DIR /etc/turtl_previous + + if [ -d ${temp_restore_dir}/etc/turtl ]; then + cp -r ${temp_restore_dir}/etc/turtl/* /etc/turtl/ + else + cp -r ${temp_restore_dir}/* /etc/turtl/ fi - temp_source_dir=$(find ${temp_restore_dir} -name turtl) - cp -r ${temp_source_dir} /etc/ + if [ ! "$?" = "0" ]; then - if [ -d /etc/turtl_previous ]; then - mv /etc/turtl_previous $TURTL_BASE_DIR - fi set_user_permissions backup_unmount_drive exit 36723 @@ -270,18 +266,14 @@ function restore_local_turtl { temp_restore_dir=/root/temprethinkdb restore_directory_from_usb $temp_restore_dir rethinkdb - if [ -d /var/lib/rethinkdb ]; then - if [ -d /var/lib/previous_rethinkdb ]; then - rm -rf /var/lib/previous_rethinkdb - fi - mv /var/lib/rethinkdb /var/lib/previous_rethinkdb + + if [ -d ${temp_restore_dir}/var/lib/rethinkdb ]; then + cp -r ${temp_restore_dir}/var/lib/rethinkdb/* /var/lib/rethinkdb/ + else + cp -r ${temp_restore_dir}/* /var/lib/rethinkdb/ fi - temp_source_dir=$(find ${temp_restore_dir} -name rethinkdb) - cp -r ${temp_source_dir} /var/lib/ + if [ ! "$?" = "0" ]; then - if [ -d /var/lib/previous_rethinkdb ]; then - mv /var/lib/previous_rethinkdb /var/lib/rethinkdb - fi set_user_permissions backup_unmount_drive exit 378324 @@ -319,18 +311,18 @@ function restore_remote_turtl { mkdir $temp_restore_dir function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir turtl - if [ -d $TURTL_BASE_DIR ]; then - if [ -d /etc/turtl_previous ]; then - rm -rf /etc/turtl_previous - fi - mv $TURTL_BASE_DIR /etc/turtl_previous + + if [ -d ${temp_restore_dir}/etc/turtl ]; then + cp -r ${temp_restore_dir}/etc/turtl/* /etc/turtl/ + else + cp -r ${temp_restore_dir}/* /etc/turtl/ fi - temp_source_dir=$(find ${temp_restore_dir} -name turtl) - cp -r ${temp_source_dir} /etc/ + if [ ! "$?" = "0" ]; then if [ -d /etc/turtl_previous ]; then mv /etc/turtl_previous $TURTL_BASE_DIR fi + set_user_permissions exit 37823 fi rm -rf ${temp_restore_dir} @@ -339,18 +331,15 @@ function restore_remote_turtl { mkdir $temp_restore_dir function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir rethinkdb - if [ -d /var/lib/rethinkdb ]; then - if [ -d /var/lib/previous_rethinkdb ]; then - rm -rf /var/lib/previous_rethinkdb - fi - mv /var/lib/rethinkdb /var/lib/previous_rethinkdb + + if [ -d ${temp_restore_dir}/var/lib/rethinkdb ]; then + cp -r ${temp_restore_dir}/var/lib/rethinkdb/* /var/lib/rethinkdb/ + else + cp -r ${temp_restore_dir}/* /var/lib/rethinkdb/ fi - temp_source_dir=$(find ${temp_restore_dir} -name rethinkdb) - cp -r ${temp_source_dir} /var/lib/ + if [ ! "$?" = "0" ]; then - if [ -d /var/lib/previous_rethinkdb ]; then - mv /var/lib/previous_rethinkdb /var/lib/rethinkdb - fi + set_user_permissions exit 26783 fi rm -rf ${temp_restore_dir} diff --git a/src/freedombone-app-vim b/src/freedombone-app-vim index f4da1cd5..d1544410 100755 --- a/src/freedombone-app-vim +++ b/src/freedombone-app-vim @@ -100,7 +100,14 @@ function restore_local_vim { echo $"Restoring Vim config for $USERNAME" function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir vim/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR ]; then + cp -r $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR /home/$USERNAME/ + else + if [ ! -d /home/$USERNAME/$VIM_TEMP_DIR ]; then + mkdir /home/$USERNAME/$VIM_TEMP_DIR + fi + cp -r $temp_restore_dir/* /home/$USERNAME/$VIM_TEMP_DIR/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions @@ -168,7 +175,14 @@ function restore_remote_vim { echo $"Restoring Vim config for $USERNAME" function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir vim/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR ]; then + cp -r $temp_restore_dir/home/$USERNAME/$VIM_TEMP_DIR /home/$USERNAME/ + else + if [ ! -d /home/$USERNAME/$VIM_TEMP_DIR ]; then + mkdir /home/$USERNAME/$VIM_TEMP_DIR + fi + cp -r $temp_restore_dir/* /home/$USERNAME/$VIM_TEMP_DIR/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir function_check set_user_permissions diff --git a/src/freedombone-app-wekan b/src/freedombone-app-wekan index 86bb57b5..97a86cbf 100755 --- a/src/freedombone-app-wekan +++ b/src/freedombone-app-wekan @@ -134,8 +134,12 @@ function restore_local_wekan { temp_restore_dir=/root/tempwekan function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir wekan - cp -r $temp_restore_dir$WEKAN_DIR/data/* $WEKAN_DIR/data/ - + if [ -d $temp_restore_dir$WEKAN_DIR/data ]; then + cp -r $temp_restore_dir$WEKAN_DIR/data/* $WEKAN_DIR/data/ + else + cp -r $temp_restore_dir/* $WEKAN_DIR/data/ + fi + rm -rf $temp_restore_dir systemctl start wekan fi } @@ -177,8 +181,12 @@ function restore_remote_wekan { temp_restore_dir=/root/tempwekan function_check restore_directory_from_usb restore_directory_from_friend $temp_restore_dir wekan - cp -r $temp_restore_dir$WEKAN_DIR/data/* $WEKAN_DIR/data/ - + if [ -d $temp_restore_dir$WEKAN_DIR/data ]; then + cp -r $temp_restore_dir$WEKAN_DIR/data/* $WEKAN_DIR/data/ + else + cp -r $temp_restore_dir/* $WEKAN_DIR/data/ + fi + rm -rf $temp_restore_dir systemctl start wekan fi } diff --git a/src/freedombone-app-xmpp b/src/freedombone-app-xmpp index 5e0b06b8..f141533a 100755 --- a/src/freedombone-app-xmpp +++ b/src/freedombone-app-xmpp @@ -460,7 +460,11 @@ function restore_local_xmpp { temp_restore_dir=/root/tempxmpp function_check restore_directory_from_usb restore_directory_from_usb $temp_restore_dir xmpp - cp -r $temp_restore_dir/var/lib/prosody/* /var/lib/prosody + if [ -d $temp_restore_dir/var/lib/prosody ]; then + cp -r $temp_restore_dir/var/lib/prosody/* /var/lib/prosody + else + cp -r $temp_restore_dir/* /var/lib/prosody/ + fi if [ ! "$?" = "0" ]; then function_check set_user_permissions set_user_permissions @@ -489,7 +493,11 @@ function restore_remote_xmpp { temp_restore_dir=/root/tempxmpp function_check restore_directory_from_friend restore_directory_from_friend $temp_restore_dir xmpp - cp -r $temp_restore_dir/var/lib/prosody/* /var/lib/prosody + if [ -d $temp_restore_dir/var/lib/prosody ]; then + cp -r $temp_restore_dir/var/lib/prosody/* /var/lib/prosody + else + cp -r $temp_restore_dir/* /var/lib/prosody/ + fi if [ ! "$?" = "0" ]; then exit 725 fi diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 57dd0371..ed9363aa 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -1065,8 +1065,9 @@ function image_setup_utils { rm $rootdir/root/sysctl.conf # all the packages - chroot "$rootdir" apt-get -yq install cryptsetup libgfshare-bin obnam sshpass wget avahi-daemon - chroot "$rootdir" apt-get -yq install avahi-utils avahi-discover connect-proxy openssh-server + chroot "$rootdir" apt-get -yq install cryptsetup libgfshare-bin duplicity sshpass wget + chroot "$rootdir" apt-get -yq install avahi-daemon avahi-utils avahi-discover + chroot "$rootdir" apt-get -yq install connect-proxy openssh-server chroot "$rootdir" apt-get -yq install sudo git dialog build-essential avahi-daemon avahi-utils chroot "$rootdir" apt-get -yq install avahi-discover avahi-autoipd iptables dnsutils net-tools chroot "$rootdir" apt-get -yq install network-manager iputils-ping libnss-mdns libnss-myhostname @@ -1166,7 +1167,7 @@ function image_setup_utils { chroot "$rootdir" apt-get -yq install dovecot-imapd #backup - chroot "$rootdir" apt-get -yq install obnam gnupg + chroot "$rootdir" apt-get -yq install duplicity gnupg # monkeysphere #chroot "$rootdir" apt-get -yq install monkeysphere msva-perl diff --git a/src/freedombone-restore-local b/src/freedombone-restore-local index b047a92d..e41ea027 100755 --- a/src/freedombone-restore-local +++ b/src/freedombone-restore-local @@ -123,8 +123,10 @@ function restore_blocklist { temp_restore_dir=/root/tempblocklist restore_directory_from_usb $temp_restore_dir blocklist - if [ -f $temp_restore_dir/root/tempbackupblocklist/${PROJECT_NAME}-firewall-domains.cfg ]; then + if [ -d $temp_restore_dir/root/tempbackupblocklist ]; then cp -f $temp_restore_dir/root/tempbackupblocklist/${PROJECT_NAME}-firewall-domains.cfg /root/${PROJECT_NAME}-firewall-domains.cfg + else + cp -f $temp_restore_dir/${PROJECT_NAME}-firewall-domains.cfg /root/${PROJECT_NAME}-firewall-domains.cfg fi rm -rf $temp_restore_dir @@ -146,13 +148,25 @@ function restore_configfiles { temp_restore_dir=/root/tempconfigfiles restore_directory_from_usb $temp_restore_dir configfiles - if [ -f $temp_restore_dir/root/.nostore ]; then - if [ ! -f /root/.nostore ]; then - touch /root/.nostore + if [ -d $temp_restore_dir/root ]; then + if [ -f $temp_restore_dir/root/.nostore ]; then + if [ ! -f /root/.nostore ]; then + touch /root/.nostore + fi + else + if [ -f /root/.nostore ]; then + rm /root/.nostore + fi fi else - if [ -f /root/.nostore ]; then - rm /root/.nostore + if [ -f $temp_restore_dir/.nostore ]; then + if [ ! -f /root/.nostore ]; then + touch /root/.nostore + fi + else + if [ -f /root/.nostore ]; then + rm /root/.nostore + fi fi fi @@ -196,8 +210,14 @@ function restore_configfiles { fi # restore nginx password hashes - if [ -f $temp_restore_dir/root/htpasswd ]; then - cp -f $temp_restore_dir/root/htpasswd /etc/nginx/.htpasswd + if [ -d $temp_restore_dir/root ]; then + if [ -f $temp_restore_dir/root/htpasswd ]; then + cp -f $temp_restore_dir/root/htpasswd /etc/nginx/.htpasswd + fi + else + if [ -f $temp_restore_dir/htpasswd ]; then + cp -f $temp_restore_dir/htpasswd /etc/nginx/.htpasswd + fi fi rm -rf $temp_restore_dir @@ -238,11 +258,19 @@ function restore_mariadb { db_pass=$(cat /root/.mariadboriginal) if [ ${#db_pass} -gt 0 ]; then echo $"Restore the MariaDB user table" - mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + else + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}/mysql.sql) + fi if [ ! "$?" = "0" ]; then echo $"Try again using the password obtained from backup" db_pass=$(${PROJECT_NAME}-pass -u root -a mariadb) - mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + else + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}/mysql.sql) + fi fi if [ ! "$?" = "0" ]; then echo "$mysqlsuccess" @@ -269,7 +297,8 @@ function restore_letsencrypt { fi if [ -d $USB_MOUNT/backup/letsencrypt ]; then echo $"Restoring Lets Encrypt settings" - restore_directory_from_usb / letsencrypt + #restore_directory_from_usb / letsencrypt + restore_directory_from_usb /etc/letsencrypt letsencrypt chgrp -R ssl-cert /etc/letsencrypt chmod -R g=rX /etc/letsencrypt fi @@ -284,7 +313,8 @@ function restore_passwordstore { if [ -d $USB_MOUNT/backup/passwordstore ]; then store_original_mariadb_password echo $"Restoring password store" - restore_directory_from_usb / passwordstore + #restore_directory_from_usb / passwordstore + restore_directory_from_usb /root/.passwords passwordstore fi } @@ -296,7 +326,8 @@ function restore_tor { fi if [ -d $USB_MOUNT/backup/tor ]; then echo $"Restoring Tor settings" - restore_directory_from_usb / tor + #restore_directory_from_usb / tor + restore_directory_from_usb /var/lib/tor tor fi } @@ -316,15 +347,28 @@ function restore_mutt_settings { echo $"Restoring Mutt settings for $USERNAME" temp_restore_dir=/root/tempmutt restore_directory_from_usb $temp_restore_dir mutt/$USERNAME - if [ -f $temp_restore_dir/home/$USERNAME/tempbackup/.muttrc ]; then - cp -f $temp_restore_dir/home/$USERNAME/tempbackup/.muttrc /home/$USERNAME/.muttrc - sed -i '/set sidebar_delim/d' /home/$USERNAME/.muttrc - sed -i '/set sidebar_sort/d' /home/$USERNAME/.muttrc - fi - if [ -f $temp_restore_dir/home/$USERNAME/tempbackup/Muttrc ]; then - cp -f $temp_restore_dir/home/$USERNAME/tempbackup/Muttrc /etc/Muttrc - sed -i '/set sidebar_delim/d' /etc/Muttrc - sed -i '/set sidebar_sort/d' /etc/Muttrc + if [ -d $temp_restore_dir/home/$USERNAME/tempbackup ]; then + if [ -f $temp_restore_dir/home/$USERNAME/tempbackup/.muttrc ]; then + cp -f $temp_restore_dir/home/$USERNAME/tempbackup/.muttrc /home/$USERNAME/.muttrc + sed -i '/set sidebar_delim/d' /home/$USERNAME/.muttrc + sed -i '/set sidebar_sort/d' /home/$USERNAME/.muttrc + fi + if [ -f $temp_restore_dir/home/$USERNAME/tempbackup/Muttrc ]; then + cp -f $temp_restore_dir/home/$USERNAME/tempbackup/Muttrc /etc/Muttrc + sed -i '/set sidebar_delim/d' /etc/Muttrc + sed -i '/set sidebar_sort/d' /etc/Muttrc + fi + else + if [ -f $temp_restore_dir/.muttrc ]; then + cp -f $temp_restore_dir/.muttrc /home/$USERNAME/.muttrc + sed -i '/set sidebar_delim/d' /home/$USERNAME/.muttrc + sed -i '/set sidebar_sort/d' /home/$USERNAME/.muttrc + fi + if [ -f $temp_restore_dir/Muttrc ]; then + cp -f $temp_restore_dir/Muttrc /etc/Muttrc + sed -i '/set sidebar_delim/d' /etc/Muttrc + sed -i '/set sidebar_sort/d' /etc/Muttrc + fi fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir @@ -353,7 +397,11 @@ function restore_gpg { echo $"Restoring gnupg settings for $USERNAME" temp_restore_dir=/root/tempgnupg restore_directory_from_usb $temp_restore_dir gnupg/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.gnupg /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.gnupg ]; then + cp -r $temp_restore_dir/home/$USERNAME/.gnupg /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.gnupg/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -393,7 +441,11 @@ function restore_procmail { temp_restore_dir=/root/tempprocmail restore_directory_from_usb $temp_restore_dir procmail/$USERNAME if [ -d $temp_restore_dir ]; then - cp -f $temp_restore_dir/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/ + else + cp -f $temp_restore_dir/.procmailrc /home/$USERNAME/.procmailrc + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -424,7 +476,11 @@ function restore_spamassassin { echo $"Restoring spamassassin settings for $USERNAME" temp_restore_dir=/root/tempspamassassin restore_directory_from_usb $temp_restore_dir spamassassin/$USERNAME - cp -rf $temp_restore_dir/home/$USERNAME/.spamassassin /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME ]; then + cp -rf $temp_restore_dir/home/$USERNAME/.spamassassin /home/$USERNAME/ + else + cp -rf $temp_restore_dir/* /home/$USERNAME/.spamassassin/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -457,7 +513,11 @@ function restore_admin_readme { temp_restore_dir=/root/tempreadme restore_directory_from_usb $temp_restore_dir readme - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/ + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/ + else + cp -f $temp_restore_dir/README /home/$ADMIN_USERNAME/README + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -484,7 +544,11 @@ function restore_user_ssh_keys { echo $"Restoring ssh keys for $USERNAME" temp_restore_dir=/root/tempssh restore_directory_from_usb $temp_restore_dir ssh/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.ssh /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.ssh ]; then + cp -r $temp_restore_dir/home/$USERNAME/.ssh /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.ssh/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -513,7 +577,11 @@ function restore_user_config { echo $"Restoring config files for $USERNAME" temp_restore_dir=/root/tempconfig restore_directory_from_usb $temp_restore_dir config/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.config /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.config ]; then + cp -r $temp_restore_dir/home/$USERNAME/.config /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.config/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -542,7 +610,11 @@ function restore_user_monkeysphere { echo $"Restoring monkeysphere ids for $USERNAME" temp_restore_dir=/root/tempmonkeysphere restore_directory_from_usb $temp_restore_dir monkeysphere/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.monkeysphere /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.monkeysphere ]; then + cp -r $temp_restore_dir/home/$USERNAME/.monkeysphere /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.monkeysphere + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -579,7 +651,11 @@ function restore_user_fin { echo $"Restoring fin files for $USERNAME" temp_restore_dir=/root/tempfin restore_directory_from_usb $temp_restore_dir fin/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.fin /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.fin ]; then + cp -r $temp_restore_dir/home/$USERNAME/.fin /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.fin/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -608,7 +684,11 @@ function restore_user_local { echo $"Restoring local files for $USERNAME" temp_restore_dir=/root/templocal restore_directory_from_usb $temp_restore_dir local/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.local /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.local ]; then + cp -r $temp_restore_dir/home/$USERNAME/.local /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.local/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir set_user_permissions @@ -631,7 +711,11 @@ function restore_certs { echo $"Restoring certificates" mkdir /root/tempssl restore_directory_from_usb /root/tempssl ssl - cp -r /root/tempssl/etc/ssl/* /etc/ssl + if [ -d /root/tempssl/etc/ssl ]; then + cp -r /root/tempssl/etc/ssl/* /etc/ssl + else + cp -r /root/tempssl/* /etc/ssl/ + fi if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -686,7 +770,11 @@ function restore_personal_settings { if [ -d /home/$USERNAME/personal ]; then rm -rf /home/$USERNAME/personal fi - mv $temp_restore_dir/home/$USERNAME/personal /home/$USERNAME + if [ -d $temp_restore_dir/home/$USERNAME/personal ]; then + mv $temp_restore_dir/home/$USERNAME/personal /home/$USERNAME + else + cp -r $temp_restore_dir/* /home/$USERNAME/personal/ + fi if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -709,7 +797,11 @@ function restore_mailing_list { echo $"Restoring public mailing list" temp_restore_dir=/root/tempmailinglist restore_directory_from_usb $temp_restore_dir mailinglist - cp -r $temp_restore_dir/root/spool/mlmmj/* /var/spool/mlmmj + if [ -d $temp_restore_dir/root/spool/mlmmj ]; then + cp -r $temp_restore_dir/root/spool/mlmmj/* /var/spool/mlmmj + else + cp -r $temp_restore_dir/* /var/spool/mlmmj/ + fi if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive @@ -738,11 +830,15 @@ function restore_email { if [ ! -d /home/$USERNAME/Maildir ]; then mkdir /home/$USERNAME/Maildir fi - tar -xzvf $temp_restore_dir/root/tempbackupemail/$USERNAME/maildir.tar.gz -C / + if [ -d $temp_restore_dir/root/tempbackupemail/$USERNAME ]; then + tar -xzvf $temp_restore_dir/root/tempbackupemail/$USERNAME/maildir.tar.gz -C / + else + tar -xzvf $temp_restore_dir/maildir.tar.gz -C / + fi if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive - exit 927 + exit 9276382 fi rm -rf $temp_restore_dir fi diff --git a/src/freedombone-restore-remote b/src/freedombone-restore-remote index 3e8c0c68..d4b302b2 100755 --- a/src/freedombone-restore-remote +++ b/src/freedombone-restore-remote @@ -113,10 +113,11 @@ function restore_blocklist { echo $"Restoring blocklist" temp_restore_dir=/root/tempblocklist restore_directory_from_friend $temp_restore_dir blocklist - restore_directory_from_usb $temp_restore_dir blocklist - if [ -f $temp_restore_dir/root/tempbackupblocklist/${PROJECT_NAME}-firewall-domains.cfg ]; then + if [ -d $temp_restore_dir/root/tempbackupblocklist ]; then cp -f $temp_restore_dir/root/tempbackupblocklist/${PROJECT_NAME}-firewall-domains.cfg /root/${PROJECT_NAME}-firewall-domains.cfg + else + cp -f $temp_restore_dir/${PROJECT_NAME}-firewall-domains.cfg /root/${PROJECT_NAME}-firewall-domains.cfg fi rm -rf $temp_restore_dir @@ -136,13 +137,25 @@ function restore_configfiles { temp_restore_dir=/root/tempconfigfiles restore_directory_from_friend $temp_restore_dir configfiles - if [ -f $temp_restore_dir/root/.nostore ]; then - if [ ! -f /root/.nostore ]; then - touch /root/.nostore + if [ -d $temp_restore_dir/root ]; then + if [ -f $temp_restore_dir/root/.nostore ]; then + if [ ! -f /root/.nostore ]; then + touch /root/.nostore + fi + else + if [ -f /root/.nostore ]; then + rm /root/.nostore + fi fi else - if [ -f /root/.nostore ]; then - rm /root/.nostore + if [ -f $temp_restore_dir/.nostore ]; then + if [ ! -f /root/.nostore ]; then + touch /root/.nostore + fi + else + if [ -f /root/.nostore ]; then + rm /root/.nostore + fi fi fi @@ -214,11 +227,19 @@ function restore_mariadb { db_pass=$(cat /root/.mariadboriginal) if [ ${#db_pass} -gt 0 ]; then echo $"Restore the MariaDB user table" - mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + else + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}/mysql.sql) + fi if [ ! "$?" = "0" ]; then echo $"Try again using the password obtained from backup" db_pass=$(${PROJECT_NAME}-pass -u root -a mariadb) - mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + if [ -d ${temp_restore_dir}${temp_restore_dir} ]; then + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}${temp_restore_dir}/mysql.sql) + else + mysqlsuccess=$(mysql -u root --password="$db_pass" mysql -o < ${temp_restore_dir}/mysql.sql) + fi fi if [ ! "$?" = "0" ]; then echo "$mysqlsuccess" @@ -242,7 +263,7 @@ function restore_letsencrypt { fi if [ -d $SERVER_DIRECTORY/backup/letsencrypt ]; then echo $"Restoring Lets Encrypt settings" - restore_directory_from_friend / letsencrypt + restore_directory_from_friend /etc/letsencrypt letsencrypt fi } @@ -255,7 +276,7 @@ function restore_passwordstore { if [ -d $SERVER_DIRECTORY/backup/passwordstore ]; then store_original_mariadb_password echo $"Restoring password store" - restore_directory_from_friend / passwordstore + restore_directory_from_friend /root/.passwords passwordstore fi } @@ -267,7 +288,7 @@ function restore_tor { fi if [ -d $SERVER_DIRECTORY/backup/tor ]; then echo $"Restoring Tor settings" - restore_directory_from_friend / tor + restore_directory_from_friend /var/lib/tor tor fi } @@ -287,15 +308,28 @@ function restore_mutt_settings { echo $"Restoring Mutt settings for $USERNAME" temp_restore_dir=/root/tempmutt restore_directory_from_friend ${temp_restore_dir} mutt/$USERNAME - if [ -f ${temp_restore_dir}/home/$USERNAME/tempbackup/.muttrc ]; then - cp -f ${temp_restore_dir}/home/$USERNAME/tempbackup/.muttrc /home/$USERNAME/.muttrc - sed -i '/set sidebar_delim/d' /home/$USERNAME/.muttrc - sed -i '/set sidebar_sort/d' /home/$USERNAME/.muttrc - fi - if [ -f ${temp_restore_dir}/home/$USERNAME/tempbackup/Muttrc ]; then - cp -f ${temp_restore_dir}/home/$USERNAME/tempbackup/Muttrc /etc/Muttrc - sed -i '/set sidebar_delim/d' /etc/Muttrc - sed -i '/set sidebar_sort/d' /etc/Muttrc + if [ -d ${temp_restore_dir}/home/$USERNAME/tempbackup ]; then + if [ -f ${temp_restore_dir}/home/$USERNAME/tempbackup/.muttrc ]; then + cp -f ${temp_restore_dir}/home/$USERNAME/tempbackup/.muttrc /home/$USERNAME/.muttrc + sed -i '/set sidebar_delim/d' /home/$USERNAME/.muttrc + sed -i '/set sidebar_sort/d' /home/$USERNAME/.muttrc + fi + if [ -f ${temp_restore_dir}/home/$USERNAME/tempbackup/Muttrc ]; then + cp -f ${temp_restore_dir}/home/$USERNAME/tempbackup/Muttrc /etc/Muttrc + sed -i '/set sidebar_delim/d' /etc/Muttrc + sed -i '/set sidebar_sort/d' /etc/Muttrc + fi + else + if [ -f ${temp_restore_dir}/.muttrc ]; then + cp -f ${temp_restore_dir}/.muttrc /home/$USERNAME/.muttrc + sed -i '/set sidebar_delim/d' /home/$USERNAME/.muttrc + sed -i '/set sidebar_sort/d' /home/$USERNAME/.muttrc + fi + if [ -f ${temp_restore_dir}/Muttrc ]; then + cp -f ${temp_restore_dir}/Muttrc /etc/Muttrc + sed -i '/set sidebar_delim/d' /etc/Muttrc + sed -i '/set sidebar_sort/d' /etc/Muttrc + fi fi if [ ! "$?" = "0" ]; then rm -rf ${temp_restore_dir} @@ -322,7 +356,11 @@ function restore_gpg { echo $"Restoring gnupg settings for $USERNAME" temp_restore_dir=/root/tempgnupg restore_directory_from_friend ${temp_restore_dir} gnupg/$USERNAME - cp -r ${temp_restore_dir}/home/$USERNAME/.gnupg /home/$USERNAME/ + if [ -d ${temp_restore_dir}/home/$USERNAME/.gnupg ]; then + cp -r ${temp_restore_dir}/home/$USERNAME/.gnupg /home/$USERNAME/ + else + cp -r ${temp_restore_dir}/* /home/$USERNAME/.gnupg/ + fi if [ ! "$?" = "0" ]; then rm -rf ${temp_restore_dir} exit 276 @@ -356,7 +394,11 @@ function restore_procmail { echo $"Restoring procmail settings for $USERNAME" temp_restore_dir=/root/tempprocmail restore_directory_from_friend ${temp_restore_dir} procmail/$USERNAME - cp -f ${temp_restore_dir}/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/ + if [ -d ${temp_restore_dir}/home/$USERNAME/tempbackup ]; then + cp -f ${temp_restore_dir}/home/$USERNAME/tempbackup/.procmailrc /home/$USERNAME/ + else + cp -f ${temp_restore_dir}/.procmailrc /home/$USERNAME/.procmailrc + fi if [ ! "$?" = "0" ]; then rm -rf ${temp_restore_dir} exit 276 @@ -383,7 +425,11 @@ function restore_spamassassin { echo $"Restoring spamassassin settings for $USERNAME" temp_restore_dir=/root/tempspamassassin restore_directory_from_friend $temp_restore_dir spamassassin/$USERNAME - cp -rf $temp_restore_dir/home/$USERNAME/.spamassassin /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME ]; then + cp -rf $temp_restore_dir/home/$USERNAME/.spamassassin /home/$USERNAME/ + else + cp -rf $temp_restore_dir/* /home/$USERNAME/.spamassassin/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 276 @@ -404,7 +450,11 @@ function restore_admin_readme { echo $"Restoring README" temp_restore_dir=/root/tempreadme restore_directory_from_friend $temp_restore_dir readme - cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/ + if [ -d $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup ]; then + cp -f $temp_restore_dir/home/$ADMIN_USERNAME/tempbackup/README /home/$ADMIN_USERNAME/ + else + cp -f $temp_restore_dir/README /home/$ADMIN_USERNAME/README + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 276 @@ -429,7 +479,11 @@ function restore_ssh_keys { echo $"Restoring ssh keys for $USERNAME" temp_restore_dir=/root/tempssh restore_directory_from_friend $temp_restore_dir ssh/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.ssh /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.ssh ]; then + cp -r $temp_restore_dir/home/$USERNAME/.ssh /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.ssh/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 664 @@ -456,7 +510,11 @@ function restore_user_config { echo $"Restoring config files for $USERNAME" temp_restore_dir=/root/tempconfig restore_directory_from_friend $temp_restore_dir config/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.config /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME ]; then + cp -r $temp_restore_dir/home/$USERNAME/.config /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.config/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 664 @@ -483,7 +541,11 @@ function restore_user_monkeysphere { echo $"Restoring monkeysphere ids for $USERNAME" temp_restore_dir=/root/tempmonkeysphere restore_directory_from_friend $temp_restore_dir monkeysphere/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.monkeysphere /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.monkeysphere ]; then + cp -r $temp_restore_dir/home/$USERNAME/.monkeysphere /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.monkeysphere/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 664 @@ -518,7 +580,11 @@ function restore_user_fin { echo $"Restoring fin files for $USERNAME" temp_restore_dir=/root/tempfin restore_directory_from_friend $temp_restore_dir fin/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.fin /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.fin ]; then + cp -r $temp_restore_dir/home/$USERNAME/.fin /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.fin/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 664 @@ -545,7 +611,11 @@ function restore_user_local { echo $"Restoring local files for $USERNAME" temp_restore_dir=/root/templocal restore_directory_from_friend $temp_restore_dir local/$USERNAME - cp -r $temp_restore_dir/home/$USERNAME/.local /home/$USERNAME/ + if [ -d $temp_restore_dir/home/$USERNAME/.local ]; then + cp -r $temp_restore_dir/home/$USERNAME/.local /home/$USERNAME/ + else + cp -r $temp_restore_dir/* /home/$USERNAME/.local/ + fi if [ ! "$?" = "0" ]; then rm -rf $temp_restore_dir exit 664 @@ -565,7 +635,11 @@ function restore_certs { if [ -d $SERVER_DIRECTORY/backup/ssl ]; then echo $"Restoring certificates" restore_directory_from_friend /root/tempssl ssl - cp -r /root/tempssl/etc/ssl/* /etc/ssl + if [ -d /root/tempssl/etc/ssl ]; then + cp -r /root/tempssl/etc/ssl/* /etc/ssl + else + cp -r /root/tempssl/* /etc/ssl/ + fi if [ ! "$?" = "0" ]; then exit 276 fi @@ -614,12 +688,16 @@ function restore_personal_settings { echo $"Restoring personal settings for $USERNAME" temp_restore_dir=/root/temppersonal restore_directory_from_friend $temp_restore_dir personal/$USERNAME - if [ -d /home/$USERNAME/personal ]; then - rm -rf /home/$USERNAME/personal + if [ -d $temp_restore_dir/home/$USERNAME/personal ]; then + if [ -d /home/$USERNAME/personal ]; then + rm -rf /home/$USERNAME/personal + fi + mv $temp_restore_dir/home/$USERNAME/personal /home/$USERNAME + else + cp -r $temp_restore_dir/* /home/$USERNAME/personal/ fi - mv $temp_restore_dir/home/$USERNAME/personal /home/$USERNAME if [ ! "$?" = "0" ]; then - exit 184 + exit 18437643 fi rm -rf $temp_restore_dir fi @@ -637,7 +715,11 @@ function restore_mailing_list { echo $"Restoring public mailing list" temp_restore_dir=/root/tempmailinglist restore_directory_from_friend $temp_restore_dir mailinglist - cp -r $temp_restore_dir/root/spool/mlmmj/* /var/spool/mlmmj + if [ -d $temp_restore_dir/root/spool/mlmmj ]; then + cp -r $temp_restore_dir/root/spool/mlmmj/* /var/spool/mlmmj + else + cp -r $temp_restore_dir/* /var/spool/mlmmj/ + fi if [ ! "$?" = "0" ]; then exit 526 fi @@ -664,7 +746,11 @@ function restore_email { if [ ! -d /home/$USERNAME/Maildir ]; then mkdir /home/$USERNAME/Maildir fi - tar -xzvf $temp_restore_dir/root/tempbackupemail/$USERNAME/maildir.tar.gz -C / + if [ -d $temp_restore_dir/root/tempbackupemail/$USERNAME ]; then + tar -xzvf $temp_restore_dir/root/tempbackupemail/$USERNAME/maildir.tar.gz -C / + else + tar -xzvf $temp_restore_dir/maildir.tar.gz -C / + fi if [ ! "$?" = "0" ]; then exit 927 fi diff --git a/src/freedombone-utils-backup b/src/freedombone-utils-backup index e0fd65fd..c48bf4f0 100755 --- a/src/freedombone-utils-backup +++ b/src/freedombone-utils-backup @@ -13,7 +13,7 @@ # License # ======= # -# Copyright (C) 2014-2016 Bob Mottram +# Copyright (C) 2014-2017 Bob Mottram # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by @@ -34,6 +34,21 @@ SUSPENDED_SITE= # Dummy password used for the backup key BACKUP_DUMMY_PASSWORD='backup' +BACKUP_TEMP_DIRECTORY=/root/.backuptemp +BACKUP_GPG_OPTIONS="--pinentry-mode loopback" + +function create_backups_temp_directory { + if [ ! -d $BACKUP_TEMP_DIRECTORY ]; then + mkdir $BACKUP_TEMP_DIRECTORY + fi +} + +function remove_backups_temp_directory { + if [ -d $BACKUP_TEMP_DIRECTORY ]; then + rm -rf $BACKUP_TEMP_DIRECTORY + fi +} + function suspend_site { # suspends a given website SUSPENDED_SITE="$1" @@ -247,6 +262,71 @@ function set_obnam_client_name { echo "client-name = ${PROJECT_NAME}" >> /etc/obnam.conf } +function backup_directory_to_usb_duplicity { + create_backups_temp_directory + echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --encrypt-key $MY_BACKUP_KEY_ID --full-if-older-than 4W --exclude-other-filesystems ${1} file://$USB_MOUNT/backup/${2} + if [ ! "$?" = "0" ]; then + umount $USB_MOUNT + rm -rf $USB_MOUNT + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then + shred -zu ${1}/* + rm -rf ${1} + fi + function_check restart_site + restart_site + remove_backups_temp_directory + exit 8352925 + fi + if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then + echo "$BACKUP_DUMMY_PASSWORD" | duplicity verify --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --encrypt-key $MY_BACKUP_KEY_ID --full-if-older-than 4W --exclude-other-filesystems ${1} file://$USB_MOUNT/backup/${2} + if [ ! "$?" = "0" ]; then + umount $USB_MOUNT + rm -rf $USB_MOUNT + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then + shred -zu ${1}/* + rm -rf ${1} + fi + function_check restart_site + restart_site + remove_backups_temp_directory + exit 683252 + fi + fi + remove_backups_temp_directory +} + +function backup_directory_to_usb_obnam { + set_obnam_client_name + echo "$BACKUP_DUMMY_PASSWORD" | obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1} + echo "$BACKUP_DUMMY_PASSWORD" | obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1} + if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then + echo "$BACKUP_DUMMY_PASSWORD" | obnam verify -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1} + if [ ! "$?" = "0" ]; then + umount $USB_MOUNT + rm -rf $USB_MOUNT + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then + shred -zu ${1}/* + rm -rf ${1} + fi + function_check restart_site + restart_site + exit 683252 + fi + fi + echo "$BACKUP_DUMMY_PASSWORD" | obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID + if [ ! "$?" = "0" ]; then + umount $USB_MOUNT + rm -rf $USB_MOUNT + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then + shred -zu ${1}/* + rm -rf ${1} + fi + function_check restart_site + restart_site + exit 7 + fi +} + function backup_directory_to_usb { if [ ! -d ${1} ]; then echo $"WARNING: directory does not exist: ${1}" @@ -263,35 +343,10 @@ function backup_directory_to_usb { if [ ! -d $USB_MOUNT/backup/${2} ]; then mkdir -p $USB_MOUNT/backup/${2} fi - set_obnam_client_name - echo "$BACKUP_DUMMY_PASSWORD" | obnam force-lock -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1} - echo "$BACKUP_DUMMY_PASSWORD" | obnam backup -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1} - if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then - echo "$BACKUP_DUMMY_PASSWORD" | obnam verify -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID ${1} - if [ ! "$?" = "0" ]; then - umount $USB_MOUNT - rm -rf $USB_MOUNT - if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then - shred -zu ${1}/* - rm -rf ${1} - fi - function_check restart_site - restart_site - exit 683252 - fi - fi - echo "$BACKUP_DUMMY_PASSWORD" | obnam forget --keep=30d -r $USB_MOUNT/backup/${2} --encrypt-with $MY_BACKUP_KEY_ID - if [ ! "$?" = "0" ]; then - umount $USB_MOUNT - rm -rf $USB_MOUNT - if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then - shred -zu ${1}/* - rm -rf ${1} - fi - function_check restart_site - restart_site - exit 7 - fi + + backup_directory_to_usb_duplicity ${1} ${2} + #backup_directory_to_usb_obnam ${1} ${2} + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then shred -zu ${1}/* rm -rf ${1} @@ -299,22 +354,49 @@ function backup_directory_to_usb { fi } +function restore_directory_from_usb_obnam { + set_obnam_client_name + echo "$BACKUP_DUMMY_PASSWORD" | obnam restore -r $USB_MOUNT/backup/${2} --to ${1} +} + +function restore_directory_from_usb_duplicity { + create_backups_temp_directory + PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --force file://$USB_MOUNT/backup/${2} ${1} + if [ ! "$?" = "0" ]; then + echo "WARNING: failed to restore $USB_MOUNT/backup/${2} to ${1}" + fi + PASSPHRASE= + remove_backups_temp_directory +} + function restore_directory_from_usb { if [ ! ${1} ]; then - echo "obnam restore -r $USB_MOUNT/backup/${2} --to ${1}" + echo "$USB_MOUNT/backup/${2} -> ${1}" echo $'No restore destination given' return fi if [ ! ${2} ]; then - echo "obnam restore -r $USB_MOUNT/backup/${2} --to ${1}" + echo "$USB_MOUNT/backup/${2} -> ${1}" echo $'No restore source given' return fi if [ ! -d ${1} ]; then mkdir ${1} fi + restore_directory_from_usb_duplicity ${1} ${2} + #restore_directory_from_usb_obnam ${1} ${2} +} + +function restore_directory_from_friend_obnam { set_obnam_client_name - echo "$BACKUP_DUMMY_PASSWORD" | obnam restore -r $USB_MOUNT/backup/${2} --to ${1} + echo "$BACKUP_DUMMY_PASSWORD" | obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1} +} + +function restore_directory_from_friend_duplicity { + create_backups_temp_directory + PASSPHRASE="$BACKUP_DUMMY_PASSWORD" duplicity restore --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --force file://$SERVER_DIRECTORY/backup/${2} ${1} + PASSPHRASE= + remove_backups_temp_directory } function restore_directory_from_friend { @@ -331,8 +413,8 @@ function restore_directory_from_friend { if [ ! -d ${1} ]; then mkdir ${1} fi - set_obnam_client_name - echo "$BACKUP_DUMMY_PASSWORD" | obnam restore -r $SERVER_DIRECTORY/backup/${2} --to ${1} + restore_directory_from_friend_duplicity ${1} ${2} + #restore_directory_from_friend_obnam ${1} ${2} } function backup_database_to_usb { @@ -357,19 +439,36 @@ function set_user_permissions { done } -function backup_directory_to_friend { - BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)") +function backup_directory_to_friend_duplicity { + create_backups_temp_directory + echo "$BACKUP_DUMMY_PASSWORD" | duplicity full --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --ssh-askpass --encrypt-key ${ADMIN_BACKUP_KEY_ID} --full-if-older-than 4W --exclude-other-filesystems ${1} $SERVER_DIRECTORY/backup/${2} if [ ! "$?" = "0" ]; then - echo $"Backup key could not be found" + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then + shred -zu ${1}/* + rm -rf ${1} + fi function_check restart_site restart_site - exit 43382 + remove_backups_temp_directory + exit 5293526 fi + if [[ $ENABLE_BACKUP_VERIFICATION == "yes" ]]; then + echo "$BACKUP_DUMMY_PASSWORD" | duplicity verify --gpg-options "$BACKUP_GPG_OPTIONS" --tempdir $BACKUP_TEMP_DIRECTORY --ssh-askpass --encrypt-key ${ADMIN_BACKUP_KEY_ID} --full-if-older-than 4W --exclude-other-filesystems ${1} $SERVER_DIRECTORY/backup/${2} + if [ ! "$?" = "0" ]; then + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then + shred -zu ${1}/* + rm -rf ${1} + fi + function_check restart_site + restart_site + remove_backups_temp_directory + exit 683252 + fi + fi + remove_backups_temp_directory +} - ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | sed -n '2p' | sed 's/^[ \t]*//') - if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then - mkdir -p $SERVER_DIRECTORY/backup/${2} - fi +function backup_directory_to_friend_obnam { set_obnam_client_name echo "$BACKUP_DUMMY_PASSWORD" | obnam force-lock -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1} echo "$BACKUP_DUMMY_PASSWORD" | obnam backup -r $SERVER_DIRECTORY/backup/${2} --encrypt-with ${ADMIN_BACKUP_KEY_ID} ${1} @@ -399,6 +498,25 @@ function backup_directory_to_friend { restart_site exit 853 fi +} + +function backup_directory_to_friend { + BACKUP_KEY_EXISTS=$(gpg --list-keys "$ADMIN_NAME (backup key)") + if [ ! "$?" = "0" ]; then + echo $"Backup key could not be found" + function_check restart_site + restart_site + exit 43382 + fi + + ADMIN_BACKUP_KEY_ID=$(gpg --list-keys "$ADMIN_NAME (backup key)" | sed -n '2p' | sed 's/^[ \t]*//') + if [ ! -d $SERVER_DIRECTORY/backup/${2} ]; then + mkdir -p $SERVER_DIRECTORY/backup/${2} + fi + + backup_directory_to_friend_duplicity ${1} ${2} + #backup_directory_to_friend_obnam ${1} ${2} + if [[ ${1} == "/root/temp"* || ${1} == *"tempbackup" ]]; then shred -zu /root/temp${2}/* rm -rf /root/temp${2} @@ -510,7 +628,11 @@ function restore_database_from_friend { echo $"Restoring ${1} database" local_database_dir=/root/temp${1}data restore_directory_from_friend ${local_database_dir} ${1}data - if [ ! -f ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/${1}.sql ]; then + database_file=${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.sql + if [ ! -f $database_file ]; then + database_file=${local_database_dir}/${restore_app_name}.sql + fi + if [ ! -f $database_file ]; then echo $"Unable to restore ${1} database" rm -rf ${local_database_dir} exit 503 @@ -521,21 +643,35 @@ function restore_database_from_friend { echo "$mysqlsuccess" exit 964 fi - shred -zu ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/* + if [ -d ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data ]; then + shred -zu ${local_database_dir}/${RESTORE_SUBDIR}/temp${1}data/* + else + shred -zu ${local_database_dir}/*.sql + fi rm -rf ${local_database_dir} echo $"Restoring ${1} installation" restore_directory_from_friend /root/temp${1} ${1} RESTORE_SUBDIR="var" if [ ${1} ]; then + # create directory to restore to if [ ! -d /var/www/${2}/htdocs ]; then mkdir -p /var/www/${2}/htdocs chown www-data:www-data /var/www/${2}/htdocs fi if [ -d /var/www/${2}/htdocs ]; then - if [ -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then - rm -rf /var/www/${2}/htdocs - mv /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs /var/www/${2}/ + restore_from_dir=/root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs + if [ ! -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then + restore_from_dir=/root/temp${1} + fi + + if [ -d $restore_from_dir ]; then + if [ -d /root/temp${1}/${RESTORE_SUBDIR}/www/${2}/htdocs ]; then + rm -rf /var/www/${2}/htdocs + mv $restore_from_dir /var/www/${2}/ + else + cp -r $restore_from_dir/* /var/www/${2}/htdocs/ + fi if [ ! "$?" = "0" ]; then exit 683 fi @@ -567,7 +703,11 @@ function restore_database { fi function_check restore_directory_from_usb restore_directory_from_usb "${local_database_dir}" "${restore_app_name}data" - if [ ! -f /root/temp${restore_app_name}data/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.sql ]; then + database_file=${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.sql + if [ ! -f $database_file ]; then + database_file=${local_database_dir}/${restore_app_name}.sql + fi + if [ ! -f $database_file ]; then echo $"Unable to restore ${restore_app_name} database" rm -rf ${local_database_dir} function_check set_user_permissions @@ -577,7 +717,7 @@ function restore_database { exit 503 fi keep_database_running - mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < ${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/${restore_app_name}.sql) + mysqlsuccess=$(mysql -u root --password="$DATABASE_PASSWORD" ${restore_app_name} -o < $database_file) if [ ! "$?" = "0" ]; then echo "$mysqlsuccess" function_check set_user_permissions @@ -586,7 +726,12 @@ function restore_database { backup_unmount_drive exit 964 fi - shred -zu ${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/* + if [ -d ${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data ]; then + shred -zu ${local_database_dir}/${RESTORE_SUBDIR}/temp${restore_app_name}data/* + else + shred -zu ${local_database_dir}/*.sql + fi + rm -rf ${local_database_dir} echo $"Restoring ${restore_app_name} installation" if [ ! -d /root/temp${restore_app_name} ]; then @@ -596,14 +741,24 @@ function restore_database { restore_directory_from_usb "/root/temp${restore_app_name}" "${restore_app_name}" RESTORE_SUBDIR="var" if [ ${restore_app_domain} ]; then + # create directory to restore to if [ ! -d /var/www/${restore_app_domain}/htdocs ]; then mkdir -p /var/www/${restore_app_domain}/htdocs chown www-data:www-data /var/www/${restore_app_domain}/htdocs fi + if [ -d /var/www/${restore_app_domain}/htdocs ]; then - if [ -d /root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs ]; then - rm -rf /var/www/${restore_app_domain}/htdocs - mv /root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs /var/www/${restore_app_domain}/ + restore_from_dir=/root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs + if [ ! -d $restore_from_dir ]; then + restore_from_dir=/root/temp${restore_app_name} + fi + if [ -d $restore_from_dir ]; then + if [ -d /root/temp${restore_app_name}/${RESTORE_SUBDIR}/www/${restore_app_domain}/htdocs ]; then + rm -rf /var/www/${restore_app_domain}/htdocs + mv $restore_from_dir /var/www/${restore_app_domain}/ + else + cp -r $restore_from_dir/* /var/www/${restore_app_domain}/htdocs/ + fi if [ ! "$?" = "0" ]; then set_user_permissions backup_unmount_drive diff --git a/src/freedombone-utils-guile b/src/freedombone-utils-guile new file mode 100755 index 00000000..16e9756c --- /dev/null +++ b/src/freedombone-utils-guile @@ -0,0 +1,95 @@ +#!/bin/bash +# +# .---. . . +# | | | +# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. +# | | (.-' (.-' ( | ( )| | | | )( )| | (.-' +# ' ' --' --' -' - -' ' ' -' -' -' ' - --' +# +# Freedom in the Cloud +# +# Recent version of guile +# +# License +# ======= +# +# Copyright (C) 2017 Bob Mottram +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +GUILE_VERSION='2.2.0' +GUILE_HASH='c707b9cf6f97ecca3a4e3e704e62b83f95f1aec28ed1535f5d0a1d36af07a015' + +EIGHTSYNC_REPO="git://git.savannah.gnu.org/8sync.git" +EIGHTSYNC_COMMIT='8cbb7f22227c0afdd3b0bd758ebec0efba2fa1e1' + +function install_8sync { + apt-get -qy install flex libunistring-dev libgc-dev autoconf texinfo + + if [ ! -d $INSTALL_DIR ]; then + mkdir $INSTALL_DIR + fi + cd $INSTALL_DIR + + git_clone $EIGHTSYNC_REPO $INSTALL_DIR/eightsync + cd $INSTALL_DIR/eightsync + git checkout ${EIGHTSYNC_COMMIT} -b ${EIGHTSYNC_COMMIT} + + export GUILE_BASE_PATH=/opt/guile-${GUILE_VERSION} + export GUILE_CFLAGS="-I${GUILE_BASE_PATH}/include" + export GUILE_LIBS="-L${GUILE_BASE_PATH}/lib -lguile -lqthreads -ldl -ltermcap -lsocket -lnsl -lm" + ./bootstrap.sh + configure + make + make install +} + +function install_guile { + # Currently this only works for x86_64 + read_config_param ARCHITECTURE + if [[ ${ARCHITECTURE} != "x86_64" ]]; then + return + fi + GUILE_ARCH='x86_64' + + apt-get -qy install flex libunistring-dev libgc-dev autoconf texinfo lzip wget + + if [ ! -d $INSTALL_DIR ]; then + mkdir $INSTALL_DIR + fi + cd $INSTALL_DIR + + if [ ! -f guile-${GUILE_VERSION}-pack-${GUILE_ARCH}-linux-gnu.tar.lz ]; then + wget https://ftp.gnu.org/gnu/guile/guile-${GUILE_VERSION}-pack-${GUILE_ARCH}-linux-gnu.tar.lz + fi + if [ ! -f guile-${GUILE_VERSION}-pack-${GUILE_ARCH}-linux-gnu.tar.lz ]; then + echo 'Unable to download guile pack' + exit 6735238 + fi + CURR_GUILE_HASH=$(sha256sum guile-${GUILE_VERSION}-pack-${GUILE_ARCH}-linux-gnu.tar.lz | awk -F ' ' '{print $1}') + if [[ "$CURR_GUILE_HASH" != "$GUILE_HASH" ]]; then + echo 'Guile hash does not match' + exit 7237625 + fi + cd / + tar xvf $INSTALL_DIR/guile-${GUILE_VERSION}-pack-${GUILE_ARCH}-linux-gnu.tar.lz + if [ ! -d /opt/guile-${GUILE_VERSION}/bin ]; then + echo 'Guile was not installed' + exit 825269 + fi + echo "export GUILE_PATH=/opt/guile-${GUILE_VERSION}/bin" >> ~/.bashrc + echo 'export PATH=$PATH:$GUILE_PATH' >> ~/.bashrc +} + +# NOTE: deliberately no exit 0 diff --git a/src/freedombone-utils-setup b/src/freedombone-utils-setup index 07ab75cf..ce528df6 100755 --- a/src/freedombone-utils-setup +++ b/src/freedombone-utils-setup @@ -260,7 +260,7 @@ function initial_setup { apt-get -yq dist-upgrade apt-get -yq install ca-certificates apt-get -yq install apt-utils - apt-get -yq install cryptsetup libgfshare-bin obnam sshpass wget avahi-daemon + apt-get -yq install cryptsetup libgfshare-bin duplicity sshpass wget avahi-daemon apt-get -yq install avahi-utils avahi-discover connect-proxy openssh-server apt-get -yq install sudo git dialog build-essential avahi-daemon avahi-utils apt-get -yq install avahi-discover avahi-autoipd iptables dnsutils net-tools diff --git a/website/EN/app_matrix.html b/website/EN/app_matrix.html index 78b9927a..b41c9256 100644 --- a/website/EN/app_matrix.html +++ b/website/EN/app_matrix.html @@ -3,7 +3,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + @@ -260,9 +260,13 @@ for the JavaScript code in this tag. Matrix is a federated communications system, typically for multi-user chat, with end-to-end content security features. You can consider it to be like a modernized version of IRC chat where the crypto and access controls have been built in by default. At present Matrix is really only a creature of the clearnet and so there isn't any way to protect the metadata. Despite the talk of security the lack of metadata defenses make this really only suitable for public communications, similar to microblogging or public IRC channels.

-
-

Installation

-
+

+Another consideration is that since matrix operates on the usual HTTPS port number (443) this may make it difficult for ISPs or governments to censor this type of communications via port blocking without significant blowback. +

+ +
+

Installation

+

Log into your system with:

@@ -282,9 +286,9 @@ Select Add/Remove Apps then matrix. You will then be asked for a d
-
-

Initial setup

-
+
+

Initial setup

+

Go to the Administrator control panel and select Passwords then matrix. This will give you the password to initially log in to the system and you can change it later from a client app if needed.

@@ -299,9 +303,9 @@ Other client apps are available but are currently mostly only at the alpha stage
-
-

DNS setup

-
+
+

DNS setup

+

It's recommended that you add an SRV record for Matrix to your DNS setup. How you do this will depend upon your dynamic DNS provider and their web interface. On FreeDNS on the subdomains settings in addition to the subdomain which you are using for the matrix server create an extra entry as follows: