LogoKolab Groupware OBS > Projects
Log In

View File 0001-Add-mysqlhost.patch of Package pykolab (Project home:sicherha:branches:Kolab:16)

From 894df668e96af15b172eff9b0e4ffcb42aa76084 Mon Sep 17 00:00:00 2001
From: "Jeroen van Meeuwen (Kolab Systems)" <vanmeeuwen@kolabsys.com>
Date: Wed, 25 Sep 2019 08:10:49 +0200
Subject: [PATCH] Add --mysqlhost

---
 pykolab/setup/setup_mysql.py     | 105 +++++++++++++++++--------------
 pykolab/setup/setup_roundcube.py |   3 +-
 pykolab/setup/setup_syncroton.py |  13 +++-
 3 files changed, 72 insertions(+), 49 deletions(-)

diff --git a/pykolab/setup/setup_mysql.py b/pykolab/setup/setup_mysql.py
index 807bc7f..d5e62a0 100644
--- a/pykolab/setup/setup_mysql.py
+++ b/pykolab/setup/setup_mysql.py
@@ -48,6 +48,14 @@ def cli_options():
         help=_("Specify whether to use an (existing) or (new) MySQL server.")
     )
 
+    mysql_group.add_option(
+        "--mysqlhost",
+        dest="mysqlhost",
+        action="store",
+        default='127.0.0.1',
+        help=_("The MySQL host address.")
+    )
+
     mysql_group.add_option(
         "--mysqlrootpw",
         dest="mysqlrootpw",
@@ -70,45 +78,46 @@ def execute(*args, **kw):  # noqa: C901
     ]
 
     # on CentOS7, there is MariaDB instead of MySQL
-    mysqlservice = 'mysqld.service'
-    if os.path.isfile('/usr/lib/systemd/system/mariadb.service'):
-        mysqlservice = 'mariadb.service'
-    elif os.path.isfile('/usr/lib/systemd/system/mysql.service'):
-        mysqlservice = 'mysql.service'
-    if not os.path.isfile('/usr/lib/systemd/system/' + mysqlservice):
-        # on Debian Jessie, systemctl restart mysql
-        mysqlservice = 'mysql'
-
-    if os.path.isfile('/bin/systemctl'):
-        subprocess.call(['/bin/systemctl', 'restart', mysqlservice])
-    elif os.path.isfile('/sbin/service'):
-        subprocess.call(['/sbin/service', 'mysqld', 'restart'])
-    elif os.path.isfile('/usr/sbin/service'):
-        subprocess.call(['/usr/sbin/service', 'mysql', 'restart'])
-    else:
-        log.error(_("Could not start the MySQL database service."))
-
-    if os.path.isfile('/bin/systemctl'):
-        subprocess.call(['/bin/systemctl', 'enable', mysqlservice])
-    elif os.path.isfile('/sbin/chkconfig'):
-        subprocess.call(['/sbin/chkconfig', 'mysqld', 'on'])
-    elif os.path.isfile('/usr/sbin/update-rc.d'):
-        subprocess.call(['/usr/sbin/update-rc.d', 'mysql', 'defaults'])
-    else:
-        log.error(
-            _("Could not configure to start on boot, the MySQL database service.")
-        )
+    if conf.mysqlserver != 'existing':
+        mysqlservice = 'mysqld.service'
+        if os.path.isfile('/usr/lib/systemd/system/mariadb.service'):
+            mysqlservice = 'mariadb.service'
+        elif os.path.isfile('/usr/lib/systemd/system/mysql.service'):
+            mysqlservice = 'mysql.service'
+        if not os.path.isfile('/usr/lib/systemd/system/' + mysqlservice):
+            # on Debian Jessie, systemctl restart mysql
+            mysqlservice = 'mysql'
+
+        if os.path.isfile('/bin/systemctl'):
+            subprocess.call(['/bin/systemctl', 'restart', mysqlservice])
+        elif os.path.isfile('/sbin/service'):
+            subprocess.call(['/sbin/service', 'mysqld', 'restart'])
+        elif os.path.isfile('/usr/sbin/service'):
+            subprocess.call(['/usr/sbin/service', 'mysql', 'restart'])
+        else:
+            log.error(_("Could not start the MySQL database service."))
+
+        if os.path.isfile('/bin/systemctl'):
+            subprocess.call(['/bin/systemctl', 'enable', mysqlservice])
+        elif os.path.isfile('/sbin/chkconfig'):
+            subprocess.call(['/sbin/chkconfig', 'mysqld', 'on'])
+        elif os.path.isfile('/usr/sbin/update-rc.d'):
+            subprocess.call(['/usr/sbin/update-rc.d', 'mysql', 'defaults'])
+        else:
+            log.error(
+                _("Could not configure to start on boot, the MySQL database service.")
+            )
 
-    log.info(_("Waiting for at most 30 seconds for MySQL/MariaDB to settle..."))
-    max_wait = 30
-    while max_wait > 0:
-        for socket_path in socket_paths:
-            if os.path.exists(socket_path):
-                max_wait = 0
+        log.info(_("Waiting for at most 30 seconds for MySQL/MariaDB to settle..."))
+        max_wait = 30
+        while max_wait > 0:
+            for socket_path in socket_paths:
+                if os.path.exists(socket_path):
+                    max_wait = 0
 
-        if max_wait > 0:
-            max_wait = max_wait - 1
-            time.sleep(1)
+            if max_wait > 0:
+                max_wait = max_wait - 1
+                time.sleep(1)
 
     options = {
         1: "Existing MySQL server (with root password already set).",
@@ -116,14 +125,17 @@ def execute(*args, **kw):  # noqa: C901
     }
 
     answer = 0
-    if len([x for x in socket_paths if os.path.exists(x)]) > 0:
-        if conf.mysqlserver:
-            if conf.mysqlserver == 'existing':
-                answer = 1
-            elif conf.mysqlserver == 'new':
-                answer = 2
-        if answer == 0:
-            answer = utils.ask_menu(_("What MySQL server are we setting up?"), options)
+    if conf.mysqlserver != 'existing':
+        if len([x for x in socket_paths if os.path.exists(x)]) > 0:
+            if conf.mysqlserver:
+                if conf.mysqlserver == 'existing':
+                    answer = 1
+                elif conf.mysqlserver == 'new':
+                    answer = 2
+            if answer == 0:
+                answer = utils.ask_menu(_("What MySQL server are we setting up?"), options)
+    else:
+        answer = 1
 
     if answer == "1" or answer == 1:
         if not conf.mysqlrootpw:
@@ -214,7 +226,8 @@ def execute(*args, **kw):  # noqa: C901
 [mysql]
 user=root
 password='%s'
-""" % (mysql_root_password)
+host=%s
+""" % (mysql_root_password, conf.mysqlhost)
 
     fp = open('/tmp/kolab-setup-my.cnf', 'w')
     os.chmod('/tmp/kolab-setup-my.cnf', 600)
diff --git a/pykolab/setup/setup_roundcube.py b/pykolab/setup/setup_roundcube.py
index 1be5cb6..36c7aa7 100644
--- a/pykolab/setup/setup_roundcube.py
+++ b/pykolab/setup/setup_roundcube.py
@@ -232,7 +232,8 @@ def execute(*args, **kw):
 [mysql]
 user=root
 password='%s'
-""" % (mysql_root_password)
+host=%s
+""" % (mysql_root_password, conf.mysqlhost)
 
         fp = open('/tmp/kolab-setup-my.cnf', 'w')
         os.chmod('/tmp/kolab-setup-my.cnf', 600)
diff --git a/pykolab/setup/setup_syncroton.py b/pykolab/setup/setup_syncroton.py
index 5b9f915..446577f 100644
--- a/pykolab/setup/setup_syncroton.py
+++ b/pykolab/setup/setup_syncroton.py
@@ -33,12 +33,20 @@ from pykolab.translate import _
 log = pykolab.getLogger('pykolab.setup')
 conf = pykolab.getConf()
 
+
 def __init__():
-    components.register('syncroton', execute, description=description(), after=['mysql','ldap','roundcube'])
+    components.register(
+        'syncroton',
+        execute,
+        description=description(),
+        after=['mysql','ldap','roundcube']
+    )
+
 
 def description():
     return _("Setup Syncroton.")
 
+
 def execute(*args, **kw):
     schema_files = []
     for root, directories, filenames in os.walk('/usr/share/doc/'):
@@ -71,7 +79,8 @@ def execute(*args, **kw):
 [mysql]
 user=root
 password='%s'
-""" % (mysql_root_password)
+host=%s
+""" % (mysql_root_password, conf.mysqlhost)
 
         fp = open('/tmp/kolab-setup-my.cnf', 'w')
         os.chmod('/tmp/kolab-setup-my.cnf', 0600)
-- 
2.21.0