From 7a222289d08c47fd2003ae43bdb4becdc3c93ca9 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Mon, 26 Jun 2017 11:08:38 +0100
Subject: [PATCH] Backup and restore blocklist

---
 src/freedombone-backup-local   | 18 ++++++++++++++++++
 src/freedombone-backup-remote  | 17 +++++++++++++++++
 src/freedombone-controlpanel   |  1 +
 src/freedombone-restore-local  | 26 ++++++++++++++++++++++++--
 src/freedombone-restore-remote | 27 +++++++++++++++++++++++++--
 5 files changed, 85 insertions(+), 4 deletions(-)

diff --git a/src/freedombone-backup-local b/src/freedombone-backup-local
index b358084af..4bbcf7b87 100755
--- a/src/freedombone-backup-local
+++ b/src/freedombone-backup-local
@@ -259,6 +259,22 @@ function prepare_directories {
     fi
 }
 
+function backup_blocklist {
+    if [ ! -f /root/${PROJECT_NAME}-firewall-domains.cfg ]; then
+        return
+    fi
+    echo $"Backing up ${PROJECT_NAME} blocklist"
+    temp_backup_dir=/root/tempbackupblocklist
+    if [ ! -d $temp_backup_dir ]; then
+        mkdir -p $temp_backup_dir
+    fi
+    if [ -f $NODEJS_INSTALLED_APPS_FILE ]; then
+        cp -f /root/${PROJECT_NAME}-firewall-domains.cfg $temp_backup_dir
+    fi
+    backup_directory_to_usb $temp_backup_dir blocklist
+    rm -rf $temp_backup_dir
+}
+
 function backup_configfiles {
     echo $"Backing up ${PROJECT_NAME} configuration files"
     temp_backup_dir=/root/tempbackupconfig
@@ -285,6 +301,7 @@ function backup_configfiles {
         cp -f /etc/nginx/.htpasswd $temp_backup_dir/htpasswd
     fi
     backup_directory_to_usb $temp_backup_dir configfiles
+    rm -rf $temp_backup_dir
 }
 
 function backup_admin_readme {
@@ -335,6 +352,7 @@ prepare_directories
 backup_directories
 backup_apps local
 backup_configfiles
+backup_blocklist
 backup_admin_readme
 backup_mariadb
 backup_extra_directories local
diff --git a/src/freedombone-backup-remote b/src/freedombone-backup-remote
index 3e0ac983f..e3fc870ad 100755
--- a/src/freedombone-backup-remote
+++ b/src/freedombone-backup-remote
@@ -105,6 +105,22 @@ function restart_site {
     SUSPENDED_SITE=
 }
 
+function backup_blocklist {
+    if [ ! -f /root/${PROJECT_NAME}-firewall-domains.cfg ]; then
+        return
+    fi
+    echo $"Backing up ${PROJECT_NAME} blocklist"
+    temp_backup_dir=/root/tempbackupblocklist
+    if [ ! -d $temp_backup_dir ]; then
+        mkdir -p $temp_backup_dir
+    fi
+    if [ -f $NODEJS_INSTALLED_APPS_FILE ]; then
+        cp -f /root/${PROJECT_NAME}-firewall-domains.cfg $temp_backup_dir
+    fi
+    backup_directory_to_friend $temp_backup_dir blocklist
+    rm -rf $temp_backup_dir
+}
+
 function backup_configfiles {
     echo $"Backing up ${PROJECT_NAME} configuration files"
     temp_backup_dir=/root/tempbackupconfig
@@ -386,6 +402,7 @@ fi
 
 backup_configfiles
 if [[ $TEST_MODE == "no" ]]; then
+    backup_blocklist
     backup_users
     backup_letsencrypt
     backup_passwordstore
diff --git a/src/freedombone-controlpanel b/src/freedombone-controlpanel
index 09cbe6919..47c4139fa 100755
--- a/src/freedombone-controlpanel
+++ b/src/freedombone-controlpanel
@@ -1102,6 +1102,7 @@ function restore_data_from_storage {
     fi
 
     utils_installed=(configfiles
+                     blocklist
                      mariadb
                      letsencrypt
                      passwords
diff --git a/src/freedombone-restore-local b/src/freedombone-restore-local
index 91b98a382..eee58f835 100755
--- a/src/freedombone-restore-local
+++ b/src/freedombone-restore-local
@@ -111,6 +111,27 @@ function copy_gpg_keys {
     gpg_set_permissions root
 }
 
+function restore_blocklist {
+    if [[ $RESTORE_APP != 'all' ]]; then
+        if [[ $RESTORE_APP != 'blocklist' ]]; then
+            return
+        fi
+    fi
+
+    # this restores *.cfg and COMPLETION_FILE
+    if [ -d $USB_MOUNT/backup/blocklist ]; then
+        echo $"Restoring 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
+            cp -f $temp_restore_dir/root/tempbackupblocklist/${PROJECT_NAME}-firewall-domains.cfg /root/${PROJECT_NAME}-firewall-domains.cfg
+        fi
+
+        rm -rf $temp_restore_dir
+    fi
+}
+
 function restore_configfiles {
     if [[ $RESTORE_APP != 'all' ]]; then
         if [[ $RESTORE_APP != 'configfiles' ]]; then
@@ -119,9 +140,9 @@ function restore_configfiles {
     fi
 
     # this restores *.cfg and COMPLETION_FILE
-    if [ -d $USB_MOUNT/backup/config ]; then
+    if [ -d $USB_MOUNT/backup/configfiles ]; then
         echo $"Restoring configuration files"
-        temp_restore_dir=/root/tempconfig
+        temp_restore_dir=/root/tempconfigfiles
         restore_directory_from_usb $temp_restore_dir configfiles
 
         if [ -f $temp_restore_dir/root/.nostore ]; then
@@ -741,6 +762,7 @@ backup_mount_drive ${1} ${ADMIN_USERNAME} ${2}
 check_backup_exists
 check_admin_user
 copy_gpg_keys
+restore_blocklist
 restore_configfiles
 same_admin_user
 restore_passwordstore
diff --git a/src/freedombone-restore-remote b/src/freedombone-restore-remote
index 88ab638e1..56f476b08 100755
--- a/src/freedombone-restore-remote
+++ b/src/freedombone-restore-remote
@@ -102,15 +102,37 @@ function copy_gpg_keys {
     gpg_set_permissions root
 }
 
+function restore_blocklist {
+    if [[ $RESTORE_APP != 'all' ]]; then
+        if [[ $RESTORE_APP != 'blocklist' ]]; then
+            return
+        fi
+    fi
+
+    # this restores *.cfg and COMPLETION_FILE
+    if [ -d $USB_MOUNT/backup/blocklist ]; then
+        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
+            cp -f $temp_restore_dir/root/tempbackupblocklist/${PROJECT_NAME}-firewall-domains.cfg /root/${PROJECT_NAME}-firewall-domains.cfg
+        fi
+
+        rm -rf $temp_restore_dir
+    fi
+}
+
 function restore_configfiles {
     if [[ $RESTORE_APP != 'all' ]]; then
         if [[ $RESTORE_APP != 'configfiles' ]]; then
             return
         fi
     fi
-    if [ -d $SERVER_DIRECTORY/backup/config ]; then
+    if [ -d $SERVER_DIRECTORY/backup/configfiles ]; then
         echo $"Restoring configuration files"
-        temp_restore_dir=/root/tempconfig
+        temp_restore_dir=/root/tempconfigfiles
         restore_directory_from_friend $temp_restore_dir configfiles
 
         if [ -f $temp_restore_dir/root/.nostore ]; then
@@ -655,6 +677,7 @@ function restore_email {
 ${PROJECT_NAME}-recoverkey -u ${ADMIN_USERNAME} -l $BACKUP_LIST
 
 copy_gpg_keys
+restore_blocklist
 restore_configfiles
 restore_passwordstore
 restore_mariadb
-- 
GitLab