diff --git a/modoboa_installer/database.py b/modoboa_installer/database.py index 0f8c304..1276a12 100644 --- a/modoboa_installer/database.py +++ b/modoboa_installer/database.py @@ -61,6 +61,7 @@ class PostgreSQL(Database): if dbname and dbuser: self._setup_pgpass(dbname, dbuser, dbpassword) cmd += " -h {} -d {} -U {} -w".format(self.dbhost, dbname, dbuser) + query = query.replace("'", "'\"'\"'") cmd = "{} -c '{}' ".format(cmd, query) utils.exec_cmd(cmd, sudo_user=self.dbuser) @@ -146,7 +147,8 @@ class MySQL(Database): cmd = "mysql -h {} -u {} -p{}".format(self.dbhost, dbuser, dbpassword) if dbname: cmd += " -D {}".format(dbname) - utils.exec_cmd(cmd + """ -e "{}" """.format(query)) + query = query.replace("'", "'\"'\"'") + utils.exec_cmd(cmd + """ -e '{}' """.format(query)) def create_user(self, name, password): """Create a user.""" diff --git a/modoboa_installer/scripts/__init__.py b/modoboa_installer/scripts/__init__.py index cfc287a..c90c436 100644 --- a/modoboa_installer/scripts/__init__.py +++ b/modoboa_installer/scripts/__init__.py @@ -18,4 +18,9 @@ def install(appname, config): except ImportError: print("Unknown application {}".format(appname)) sys.exit(1) - getattr(script, appname.capitalize())(config).run() + try: + getattr(script, appname.capitalize())(config).run() + except utils.FatalError as inst: + utils.printcolor(utils.RED, "Failure") + print(inst) + sys.exit(1) diff --git a/modoboa_installer/scripts/modoboa.py b/modoboa_installer/scripts/modoboa.py index a9b5dd9..536e0b7 100644 --- a/modoboa_installer/scripts/modoboa.py +++ b/modoboa_installer/scripts/modoboa.py @@ -109,10 +109,12 @@ class Modoboa(base.Installer): self.config.get("amavis", "dbname") ) ] - utils.exec_cmd( + code, output = utils.exec_cmd( "bash -c '{} modoboa-admin.py deploy instance {}'".format( prefix, " ".join(args)), sudo_user=self.user, cwd=self.home_dir) + if code: + raise utils.FatalError(output) def get_packages(self): """Include extra packages if needed.""" @@ -167,7 +169,7 @@ class Modoboa(base.Installer): settings["modoboa_stats"]["logfile"] = path settings = json.dumps(settings) query = ( - "UPDATE core_localconfig SET _parameters='\"'\"'{}'\"'\"'" + "UPDATE core_localconfig SET _parameters='{}'" .format(settings) ) self.backend._exec_query(