added an automatic bash option (no path provided) or a path provided bash (for cron job)

This commit is contained in:
Spitap
2022-07-21 19:00:32 +02:00
parent 5318fa279b
commit 579faccfa5
3 changed files with 45 additions and 10 deletions

View File

@@ -24,7 +24,7 @@ def install(appname, config, upgrade):
utils.printcolor(u"{}".format(inst), utils.RED)
sys.exit(1)
def backup(config, isBash):
def backup(config, bashArg):
"""Backup instance"""
try:
script = importlib.import_module(
@@ -32,7 +32,7 @@ def backup(config, isBash):
except ImportError:
print("Error importing backup")
try:
getattr(script, "Backup")(config, isBash).run()
getattr(script, "Backup")(config, bashArg).run()
except utils.FatalError as inst:
utils.printcolor(u"{}".format(inst), utils.RED)
sys.exit(1)

View File

@@ -5,6 +5,7 @@ import pwd
import shutil
import stat
import datetime
import sys
from .. import database
from .. import utils
@@ -27,12 +28,17 @@ class Backup():
#||--> mails
# |--> vmails
def __init__(self, config, isBash):
def __init__(self, config, bashArg):
self.config = config
self.isBash = isBash
self.destinationPath = ""
self.BACKUPDIRECTORY = ["mails/", "custom/", "databases/"]
self.isBash = False
self.bash = ""
if bashArg != "NOBASH":
self.isBash = True
self.bash = bashArg
def preparePath(self):
pw = pwd.getpwnam("root")
@@ -80,9 +86,16 @@ class Backup():
def setPath(self):
"""Setup backup directory"""
if self.isBash:
date = datetime.datetime.now().strftime("%m_%d_%Y_%H_%M")
path = f"/modoboa_backup/backup_{date}/"
self.validatePath(path)
if self.bash == "TRUE":
date = datetime.datetime.now().strftime("%m_%d_%Y_%H_%M")
path = f"/modoboa_backup/backup_{date}/"
self.validatePath(path)
else :
validate = self.validatePath(self.bash)
if not validate:
print("provided bash is not right, exiting...")
print(f"Path provided : {self.bash}")
sys.exit(1)
else:
user_value = None
while (user_value == '' or user_value == None or not self.validatePath(user_value)):