Improved backups
This commit is contained in:
@@ -16,10 +16,7 @@ class Opendkim(base.Installer):
|
||||
"""OpenDKIM installer."""
|
||||
|
||||
appname = "opendkim"
|
||||
packages = {
|
||||
"deb": ["opendkim"],
|
||||
"rpm": ["opendkim"]
|
||||
}
|
||||
packages = {"deb": ["opendkim"], "rpm": ["opendkim"]}
|
||||
config_files = ["opendkim.conf", "opendkim.hosts"]
|
||||
|
||||
def get_packages(self):
|
||||
@@ -36,30 +33,34 @@ class Opendkim(base.Installer):
|
||||
"""Make sure config directory exists."""
|
||||
user = self.config.get("opendkim", "user")
|
||||
pw = pwd.getpwnam(user)
|
||||
targets = [
|
||||
[self.app_config["keys_storage_dir"], pw[2], pw[3]]
|
||||
]
|
||||
targets = [[self.app_config["keys_storage_dir"], pw[2], pw[3]]]
|
||||
for target in targets:
|
||||
if not os.path.exists(target[0]):
|
||||
utils.mkdir(
|
||||
target[0],
|
||||
stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP |
|
||||
stat.S_IROTH | stat.S_IXOTH,
|
||||
target[1], target[2]
|
||||
stat.S_IRWXU
|
||||
| stat.S_IRGRP
|
||||
| stat.S_IXGRP
|
||||
| stat.S_IROTH
|
||||
| stat.S_IXOTH,
|
||||
target[1],
|
||||
target[2],
|
||||
)
|
||||
super().install_config_files()
|
||||
|
||||
def get_template_context(self):
|
||||
"""Additional variables."""
|
||||
context = super(Opendkim, self).get_template_context()
|
||||
context.update({
|
||||
"db_driver": self.db_driver,
|
||||
"db_name": self.config.get("modoboa", "dbname"),
|
||||
"db_user": self.app_config["dbuser"],
|
||||
"db_password": self.app_config["dbpassword"],
|
||||
"port": self.app_config["port"],
|
||||
"user": self.app_config["user"]
|
||||
})
|
||||
context.update(
|
||||
{
|
||||
"db_driver": self.db_driver,
|
||||
"db_name": self.config.get("modoboa", "dbname"),
|
||||
"db_user": self.app_config["dbuser"],
|
||||
"db_password": self.app_config["dbpassword"],
|
||||
"port": self.app_config["port"],
|
||||
"user": self.app_config["user"],
|
||||
}
|
||||
)
|
||||
return context
|
||||
|
||||
def setup_database(self):
|
||||
@@ -72,11 +73,14 @@ class Opendkim(base.Installer):
|
||||
dbuser = self.config.get("modoboa", "dbuser")
|
||||
dbpassword = self.config.get("modoboa", "dbpassword")
|
||||
self.backend.load_sql_file(
|
||||
dbname, dbuser, dbpassword,
|
||||
self.get_file_path("dkim_view_{}.sql".format(self.dbengine))
|
||||
dbname,
|
||||
dbuser,
|
||||
dbpassword,
|
||||
self.get_file_path("dkim_view_{}.sql".format(self.dbengine)),
|
||||
)
|
||||
self.backend.grant_right_on_table(
|
||||
dbname, "dkim", self.app_config["dbuser"], "SELECT")
|
||||
dbname, "dkim", self.app_config["dbuser"], "SELECT"
|
||||
)
|
||||
|
||||
def post_run(self):
|
||||
"""Additional tasks.
|
||||
@@ -90,31 +94,33 @@ class Opendkim(base.Installer):
|
||||
else:
|
||||
params_file = "/etc/opendkim.conf"
|
||||
pattern = r"s/^(SOCKET=.*)/#\1/"
|
||||
utils.exec_cmd(
|
||||
"perl -pi -e '{}' {}".format(pattern, params_file))
|
||||
utils.exec_cmd("perl -pi -e '{}' {}".format(pattern, params_file))
|
||||
with open(params_file, "a") as f:
|
||||
f.write('\n'.join([
|
||||
"",
|
||||
'SOCKET="inet:12345@localhost"',
|
||||
]))
|
||||
f.write(
|
||||
"\n".join(
|
||||
[
|
||||
"",
|
||||
'SOCKET="inet:12345@localhost"',
|
||||
]
|
||||
)
|
||||
)
|
||||
|
||||
# Make sure opendkim is started after postgresql and mysql,
|
||||
# respectively.
|
||||
if (self.dbengine != "postgres" and package.backend.FORMAT == "deb"):
|
||||
if self.dbengine != "postgres" and package.backend.FORMAT == "deb":
|
||||
dbservice = "mysql.service"
|
||||
elif (self.dbengine != "postgres" and package.backend.FORMAT != "deb"):
|
||||
elif self.dbengine != "postgres" and package.backend.FORMAT != "deb":
|
||||
dbservice = "mysqld.service"
|
||||
else:
|
||||
dbservice = "postgresql.service"
|
||||
pattern = (
|
||||
"s/^After=(.*)$/After=$1 {}/".format(dbservice))
|
||||
pattern = "s/^After=(.*)$/After=$1 {}/".format(dbservice)
|
||||
utils.exec_cmd(
|
||||
"perl -pi -e '{}' /lib/systemd/system/opendkim.service".format(pattern))
|
||||
"perl -pi -e '{}' /lib/systemd/system/opendkim.service".format(pattern)
|
||||
)
|
||||
|
||||
def restore(self):
|
||||
"""Restore keys."""
|
||||
dkim_keys_backup = os.path.join(
|
||||
self.archive_path, "custom/dkim")
|
||||
dkim_keys_backup = os.path.join(self.archive_path, "custom/opendkim")
|
||||
keys_storage_dir = self.app_config["keys_storage_dir"]
|
||||
if os.path.isdir(dkim_keys_backup):
|
||||
for file in os.listdir(dkim_keys_backup):
|
||||
@@ -129,6 +135,5 @@ class Opendkim(base.Installer):
|
||||
def custom_backup(self, path):
|
||||
"""Backup DKIM keys."""
|
||||
if os.path.isdir(self.app_config["keys_storage_dir"]):
|
||||
shutil.copytree(self.app_config["keys_storage_dir"], os.path.join(path, "dkim"))
|
||||
utils.printcolor(
|
||||
"DKIM keys saved!", utils.GREEN)
|
||||
shutil.copytree(self.app_config["keys_storage_dir"], path)
|
||||
utils.printcolor("DKIM keys saved!", utils.GREEN)
|
||||
|
||||
Reference in New Issue
Block a user