Merge pull request #424 from Spitfireap/restore

Backup & restore system
This commit is contained in:
Antoine Nguyen
2022-11-03 12:17:16 +01:00
committed by GitHub
19 changed files with 563 additions and 31 deletions

View File

@@ -3,6 +3,7 @@
import glob
import os
import pwd
import shutil
from .. import database
from .. import package
@@ -95,6 +96,25 @@ class Dovecot(base.Installer):
def post_run(self):
"""Additional tasks."""
mail_dir = os.path.join(self.restore, "mails/")
if self.restore is not None and len(os.listdir(mail_dir)) > 0:
utils.printcolor(
"Copying mail backup over dovecot directory.", utils.GREEN)
if os.path.exists(self.home_dir):
shutil.rmtree(self.home_dir)
shutil.copytree(mail_dir, self.home_dir)
# Resetting permission for vmail
for dirpath, dirnames, filenames in os.walk(self.home_dir):
shutil.chown(dirpath, self.user, self.user)
for filename in filenames:
shutil.chown(os.path.join(dirpath, filename),
self.user, self.user)
elif self.restore is not None:
utils.printcolor(
"It seems that mails were not backed up, skipping mail restoration.", utils.MAGENTA)
if self.dbengine == "postgres":
dbname = self.config.get("modoboa", "dbname")
dbuser = self.config.get("modoboa", "dbuser")