Browse Source

Merge branch 'bugfix/2020-07_v-restore-user' into staging/fixes

Kristan Kenney 5 years ago
parent
commit
54ea0549ba
1 changed files with 61 additions and 0 deletions
  1. 61 0
      bin/v-restore-user

+ 61 - 0
bin/v-restore-user

@@ -603,6 +603,67 @@ if [ "$mail" != 'no' ] && [ ! -z "$MAIL_SYSTEM" ]; then
             cp -f $tmpdir/mail/$domain/$backup_system/$domain.pub $USER_DATA/mail/
         fi
 
+        # Restore SSL
+        check_config=$(grep "DOMAIN='$domain'" $USER_DATA/mail.conf | grep -o "SSL='yes'")
+        if [ ! -z "$check_config" ]; then
+            if [ ! -e "$HESTIA/data/users/$user/ssl/" ]; then
+                mkdir -p $HESTIA/data/users/$user/ssl/
+            fi
+            
+            if [ ! -e "$HOMEDIR/$user/conf/mail/$domain/ssl/" ]; then
+                mkdir -p $HOMEDIR/$user/conf/mail/$domain/ssl/
+            fi
+
+            # Add certificate to Hestia user configuration data directory
+            if [ -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.crt ]; then
+                echo "path found"
+                cp -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.crt $USER_DATA/ssl/mail.$domain.crt
+                cp -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.key $USER_DATA/ssl/mail.$domain.key
+                cp -f $tmpdir/mail/$domain/$backup_system/ssl/$domain.crt $USER_DATA/ssl/mail.$domain.pem
+                if [ -e "$tmpdir/mail/$domain/$backup_system/ssl//$domain.ca" ]; then
+                    cp -f $tmpdir/mail/$domain/$backup_system/ssl//$domain.ca $USER_DATA/ssl/mail.$domain.ca
+                    echo >> $USER_DATA/ssl/mail.$domain.pem
+                    cat $USER_DATA/ssl/mail.$domain.ca >> $USER_DATA/ssl/mail.$domain.pem
+                fi
+            fi
+            
+            chmod 660 $USER_DATA/ssl/mail.$domain.*
+
+            # Add certificate to user home directory
+            cp -f $USER_DATA/ssl/mail.$domain.crt $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.crt
+            cp -f $USER_DATA/ssl/mail.$domain.key $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key
+            cp -f $USER_DATA/ssl/mail.$domain.pem $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem
+            if [ -e "$USER_DATA/ssl/mail.$domain.ca" ]; then
+                cp -f $USER_DATA/ssl/mail.$domain.ca $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.ca
+            fi
+
+            # Add domain SSL configuration to dovecot
+            if [ -f /etc/dovecot/conf.d/domains/$domain.conf ]; then
+                rm -f /etc/dovecot/conf.d/domains/$domain.conf
+            fi
+                
+            echo "" >> /etc/dovecot/conf.d/domains/$domain.conf
+            echo "local_name mail.$domain {" >> /etc/dovecot/conf.d/domains/$domain.conf
+            echo "  ssl_cert = <$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem" >> /etc/dovecot/conf.d/domains/$domain.conf
+            echo "  ssl_key = <$HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key" >> /etc/dovecot/conf.d/domains/$domain.conf
+            echo "}" >> /etc/dovecot/conf.d/domains/$domain.conf
+
+            # Add domain SSL configuration to exim4
+            # Cleanup broken symlinks
+            find /usr/local/hestia/ssl/mail -xtype l -delete
+
+            ln -s -f $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.pem /usr/local/hestia/ssl/mail/mail.$domain.crt
+            ln -s -f $HOMEDIR/$user/conf/mail/$domain/ssl/$domain.key /usr/local/hestia/ssl/mail/mail.$domain.key
+
+            # Set correct permissions on certificates
+            chmod 750 $HOMEDIR/$user/conf/mail/$domain/ssl
+            chown -R $MAIL_USER:mail $HOMEDIR/$user/conf/mail/$domain/ssl
+            chmod 0644 $HOMEDIR/$user/conf/mail/$domain/ssl/*
+            chown -h $user:mail $HOMEDIR/$user/conf/mail/$domain/ssl/*
+            chmod -R 0644 /usr/local/hestia/ssl/mail/*
+            chown -h $user:mail /usr/local/hestia/ssl/mail/*
+        fi
+
         # Restoring email accounts
         cp -f $tmpdir/mail/$domain/$backup_system/$domain.conf $USER_DATA/mail/