From d2aa7200ee446dd6b0535eb0318eba3db650d559 Mon Sep 17 00:00:00 2001 From: almereyda Date: Wed, 6 Jul 2016 17:39:44 +0100 Subject: [PATCH 1/3] update SSL logic to accomodate pregenerated certificates The @ecobytes instance showed a misbehaviour concerning TLS certificates which had been set in instance.cfg. Ultimately 89cdc314ea9ad93d7951d1800e525f85ec47eaac#diff-c226f84131b50059e044a64c41fe782c added a logic which would not account for preconfigured TLS certificates anymore. This commit introduces a small change to revive usage of third-party certificates without overwriting their configuration options. --- modoboa_installer/ssl.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/modoboa_installer/ssl.py b/modoboa_installer/ssl.py index 9bfb366..a28bbdc 100644 --- a/modoboa_installer/ssl.py +++ b/modoboa_installer/ssl.py @@ -11,16 +11,19 @@ class CertificateBackend(object): def __init__(self, config): """Set path to certificates.""" self.config = config - for base_dir in ["/etc/pki/tls", "/etc/ssl"]: - if os.path.exists(base_dir): - self.config.set( - "general", "tls_key_file", - "{}/private/%(hostname)s.key".format(base_dir)) - self.config.set( - "general", "tls_cert_file", - "{}/certs/%(hostname)s.cert".format(base_dir)) - return - raise RuntimeError("Cannot find a directory to store certificate") + if not config.has_option("general", "tls_key_file"): + for base_dir in ["/etc/pki/tls", "/etc/ssl"]: + if os.path.exists(base_dir): + self.config.set( + "general", "tls_key_file", + "{}/private/%(hostname)s.key".format(base_dir)) + self.config.set( + "general", "tls_cert_file", + "{}/certs/%(hostname)s.cert".format(base_dir)) + return + raise RuntimeError("Cannot find a directory to store certificate") + else: + return class SelfSignedCertificate(CertificateBackend): From 2898c57127741f8bb7c1c88ac98cf6a491ad5304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20de=20l=27Epine?= Date: Tue, 13 Sep 2016 16:38:24 +0200 Subject: [PATCH 2/3] Centos7 / Mariadb fixes * Add mariadb-server package to the yum installation * Add root password initial settings ("post"seed fashion) * Handle centos "mysql" service name according to MariaDB switch * add modoboa@localhost in order to give access --- modoboa_installer/database.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modoboa_installer/database.py b/modoboa_installer/database.py index 84bf12b..19b8fb1 100644 --- a/modoboa_installer/database.py +++ b/modoboa_installer/database.py @@ -123,9 +123,9 @@ class MySQL(Database): packages = { "deb": ["mysql-server", "libmysqlclient-dev"], - "rpm": ["mariadb", "mariadb-devel"], + "rpm": ["mariadb", "mariadb-devel","mariadb-server"], } - service = "mysql" + service = "mariadb" if package.backend.FORMAT == "rpm" else "mysql" def install_package(self): """Preseed package installation.""" @@ -134,9 +134,11 @@ class MySQL(Database): package.backend.preconfigure( "mysql-server", "root_password_again", "password", self.dbpassword) super(MySQL, self).install_package() + if package.backend.FORMAT == "rpm": + utils.exec_cmd("mysqladmin -u root password '{}'".format(self.dbpassword)) def _exec_query(self, query, dbname=None, dbuser=None, dbpassword=None): - """Exec a postgresql query.""" + """Exec a mysql query.""" if dbuser is None and dbpassword is None: dbuser = self.dbuser dbpassword = self.dbpassword @@ -150,6 +152,9 @@ class MySQL(Database): self._exec_query( "CREATE USER '{}'@'%' IDENTIFIED BY '{}'".format( name, password)) + self._exec_query( + "CREATE USER '{}'@'localhost' IDENTIFIED BY '{}'".format( + name, password)) def create_database(self, name, owner): """Create a database.""" @@ -162,6 +167,9 @@ class MySQL(Database): self._exec_query( "GRANT ALL PRIVILEGES ON {}.* to '{}'@'%'" .format(dbname, user)) + self._exec_query( + "GRANT ALL PRIVILEGES ON {}.* to '{}'@'localhost'" + .format(dbname, user)) def load_sql_file(self, dbname, dbuser, dbpassword, path): """Load SQL file.""" From 4e30601580d2542f095adabc1e6583159c29b15e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20de=20l=27Epine?= Date: Wed, 14 Sep 2016 21:11:55 +0200 Subject: [PATCH 3/3] Update database.py indent fix --- modoboa_installer/database.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modoboa_installer/database.py b/modoboa_installer/database.py index 19b8fb1..3ce77c9 100644 --- a/modoboa_installer/database.py +++ b/modoboa_installer/database.py @@ -134,8 +134,8 @@ class MySQL(Database): package.backend.preconfigure( "mysql-server", "root_password_again", "password", self.dbpassword) super(MySQL, self).install_package() - if package.backend.FORMAT == "rpm": - utils.exec_cmd("mysqladmin -u root password '{}'".format(self.dbpassword)) + if package.backend.FORMAT == "rpm": + utils.exec_cmd("mysqladmin -u root password '{}'".format(self.dbpassword)) def _exec_query(self, query, dbname=None, dbuser=None, dbpassword=None): """Exec a mysql query."""