Projects
Kolab:16:TestingLinked
pykolab
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 45
View file
0001-Fix-settting-up-new-MySQL-servers-with-root-password.patch
Added
@@ -0,0 +1,300 @@ +From 0515774829661080010492539335f2f84967ddea Mon Sep 17 00:00:00 2001 +From: "Jeroen van Meeuwen (Kolab Systems)" <vanmeeuwen@kolabsys.com> +Date: Mon, 29 Jul 2019 13:35:10 +0200 +Subject: PATCH 1/2 Fix settting up new MySQL servers with root passwords + rather than auth sockets. + +--- + pykolab/setup/setup_mysql.py | 197 ++++++++++++++++++++++++----------- + 1 file changed, 137 insertions(+), 60 deletions(-) + +diff --git a/pykolab/setup/setup_mysql.py b/pykolab/setup/setup_mysql.py +index 2b3e17c..ec9e6d4 100644 +--- a/pykolab/setup/setup_mysql.py ++++ b/pykolab/setup/setup_mysql.py +@@ -33,30 +33,34 @@ from pykolab.translate import _ + log = pykolab.getLogger('pykolab.setup') + conf = pykolab.getConf() + ++ + def __init__(): + components.register('mysql', execute, description=description()) + ++ + def cli_options(): + ldap_group = conf.add_cli_parser_option_group(_("MySQL Options")) + + ldap_group.add_option( +- "--mysqlserver", +- dest = "mysqlserver", +- action = "store", +- help = _("Specify whether to use an (existing) or (new) MySQL server.") +- ) ++ "--mysqlserver", ++ dest="mysqlserver", ++ action="store", ++ help=_("Specify whether to use an (existing) or (new) MySQL server.") ++ ) ++ + + def description(): + return _("Setup MySQL.") + +-def execute(*args, **kw): ++ ++def execute(*args, **kw): # noqa: C901 + + socket_paths = +- "/var/lib/mysql/mysql.sock", +- "/var/run/mysqld/mysqld.sock", +- "/var/run/mysql/mysql.sock", +- "/var/run/mysqld/mysqld.pid" +- ++ "/var/lib/mysql/mysql.sock", ++ "/var/run/mysqld/mysqld.sock", ++ "/var/run/mysql/mysql.sock", ++ "/var/run/mysqld/mysqld.pid" ++ + + # on CentOS7, there is MariaDB instead of MySQL + mysqlservice = 'mysqld.service' +@@ -73,7 +77,7 @@ def execute(*args, **kw): + 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') ++ subprocess.call('/usr/sbin/service', 'mysql', 'restart') + else: + log.error(_("Could not start the MySQL database service.")) + +@@ -84,8 +88,9 @@ def execute(*args, **kw): + 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.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 +@@ -99,9 +104,9 @@ def execute(*args, **kw): + time.sleep(1) + + options = { +- 1: "Existing MySQL server (with root password already set).", +- 2: "New MySQL server (needs to be initialized)." +- } ++ 1: "Existing MySQL server (with root password already set).", ++ 2: "New MySQL server (needs to be initialized)." ++ } + + answer = 0 + if len(x for x in socket_paths if os.path.exists(x)) > 0: +@@ -115,37 +120,76 @@ def execute(*args, **kw): + + if answer == "1" or answer == 1: + print >> sys.stderr, utils.multiline_message( +- _(""" +- Please supply the root password for MySQL, so we can set +- up user accounts for other components that use MySQL. +- """) +- ) ++ _(""" ++ Please supply the root password for MySQL, so we can set ++ up user accounts for other components that use MySQL. ++ """) ++ ) + + mysql_root_password = utils.ask_question( +- _("MySQL root password"), +- password=True +- ) ++ _("MySQL root password"), ++ password=True ++ ) + + else: + print >> sys.stderr, utils.multiline_message( +- _(""" +- Please supply a root password for MySQL. This password +- will be the administrative user for this MySQL server, +- and it should be kept a secret. After this setup process +- has completed, Kolab is going to discard and forget +- about this password, but you will need it for +- administrative tasks in MySQL. +- """) +- ) ++ _(""" ++ Please supply a root password for MySQL. This password ++ will be the administrative user for this MySQL server, ++ and it should be kept a secret. After this setup process ++ has completed, Kolab is going to discard and forget ++ about this password, but you will need it for ++ administrative tasks in MySQL. ++ """) ++ ) + + mysql_root_password = utils.ask_question( +- _("MySQL root password"), +- default=utils.generate_password(), +- password=True, +- confirm=True +- ) ++ _("MySQL root password"), ++ default=utils.generate_password(), ++ password=True, ++ confirm=True ++ ) ++ ++ p1 = subprocess.Popen( ++ ++ 'echo', ++ 'UPDATE mysql.user SET Password=PASSWORD(\'%s\') WHERE User=\'root\';' % ( ++ mysql_root_password ++ ) ++ , ++ stdout=subprocess.PIPE ++ ) ++ ++ p2 = subprocess.Popen('mysql', stdin=p1.stdout) ++ p1.stdout.close() ++ p2.communicate() ++ ++ p1 = subprocess.Popen( ++ ++ 'echo', ++ "UPDATE mysql.user SET authentication_string=PASSWORD('%s') WHERE User='root';" % ( ++ mysql_root_password ++ ) ++ , ++ stdout=subprocess.PIPE ++ ) ++ ++ p2 = subprocess.Popen('mysql', stdin=p1.stdout) ++ p1.stdout.close() ++ p2.communicate() ++ ++ p1 = subprocess.Popen( ++ ++ 'echo', ++ """ ++ UPDATE mysql.user ++ SET plugin='mysql_native_password' ++ WHERE User='root' AND plugin='auth_socket'; ++ """ ++ , ++ stdout=subprocess.PIPE ++ ) + +- p1 = subprocess.Popen('echo', 'UPDATE mysql.user SET Password=PASSWORD(\'%s\') WHERE User=\'root\';' % (mysql_root_password), stdout=subprocess.PIPE) + p2 = subprocess.Popen('mysql', stdin=p1.stdout) + p1.stdout.close() + p2.communicate() +@@ -162,7 +206,7 @@ password='%s' + """ % (mysql_root_password) + + fp = open('/tmp/kolab-setup-my.cnf', 'w') +- os.chmod('/tmp/kolab-setup-my.cnf', 0600)
View file
0002-Work-around-out-dated-augeas-on-Xenial.patch
Added
@@ -0,0 +1,150 @@ +From 5e23af6c1d6e11135bb977afd92acb9c8c1a9155 Mon Sep 17 00:00:00 2001 +From: "Jeroen van Meeuwen (Kolab Systems)" <vanmeeuwen@kolabsys.com> +Date: Mon, 29 Jul 2019 14:15:32 +0200 +Subject: PATCH 2/2 Work around out-dated augeas on Xenial + +--- + pykolab/setup/setup_php.py | 103 ++++++++++++++++++++++--------------- + 1 file changed, 62 insertions(+), 41 deletions(-) + +diff --git a/pykolab/setup/setup_php.py b/pykolab/setup/setup_php.py +index 942d09f..f27dd3f 100644 +--- a/pykolab/setup/setup_php.py ++++ b/pykolab/setup/setup_php.py +@@ -35,50 +35,60 @@ from pykolab.translate import _ + log = pykolab.getLogger('pykolab.setup') + conf = pykolab.getConf() + ++ + def __init__(): + components.register('php', execute, description=description()) + ++ + def cli_options(): + php_group = conf.add_cli_parser_option_group(_("PHP Options")) + + php_group.add_option( +- "--timezone", +- dest = "timezone", +- action = "store", +- default = None, +- help = _("Specify the timezone for PHP.") +- ) ++ "--timezone", ++ dest="timezone", ++ action="store", ++ default=None, ++ help=_("Specify the timezone for PHP.") ++ ) + + php_group.add_option( +- "--with-php-ini", +- dest = "php_ini_path", +- action = "store", +- default = None, +- help = _("Specify the path to the php.ini file used with the webserver.") +- ) ++ "--with-php-ini", ++ dest="php_ini_path", ++ action="store", ++ default=None, ++ help=_("Specify the path to the php.ini file used with the webserver.") ++ ) ++ + + def description(): + return _("Setup PHP.") + ++ + def execute(*args, **kw): +- if conf.timezone == None: ++ if conf.timezone is None: + print >> sys.stderr, utils.multiline_message( +- _(""" +- Please supply the timezone PHP should be using. +- You have to use a Continent or Country / City locality name +- like 'Europe/Berlin', but not just 'CEST'. +- """) +- ) ++ _(""" ++ Please supply the timezone PHP should be using. ++ You have to use a Continent or Country / City locality name ++ like 'Europe/Berlin', but not just 'CEST'. ++ """) ++ ) + + conf.timezone = utils.ask_question( +- _("Timezone ID"), +- default="UTC" +- ) ++ _("Timezone ID"), ++ default="UTC" ++ ) + +- if not conf.php_ini_path == None: ++ if conf.php_ini_path is not None: + if not os.path.isfile(conf.php_ini_path): +- log.error(_("Cannot configure PHP through %r (No such file or directory)") % (conf.php_ini_path)) ++ log.error( ++ _("Cannot configure PHP through %r (No such file or directory)") % ( ++ conf.php_ini_path ++ ) ++ ) ++ + return ++ + php_ini = conf.php_ini_path + + else: +@@ -98,20 +108,31 @@ def execute(*args, **kw): + log.error(_("Could not find PHP configuration file php.ini")) + return + +- myaugeas = Augeas() +- +- setting_base = '/files%s/' % (php_ini) +- +- setting = os.path.join(setting_base, 'Date', 'date.timezone') +- current_value = myaugeas.get(setting) +- +- if current_value == None: +- insert_paths = myaugeas.match('/files%s/Date/*' % (php_ini)) +- insert_path = insert_paths(len(insert_paths)-1) +- myaugeas.insert(insert_path, 'date.timezone', False) +- +- log.debug(_("Setting key %r to %r") % ('Date/date.timezone', conf.timezone), level=8) +- myaugeas.set(setting, conf.timezone) +- +- myaugeas.save() +- ++ try: ++ myaugeas = Augeas() ++ ++ setting_base = '/files%s/' % (php_ini) ++ ++ setting = os.path.join(setting_base, 'Date', 'date.timezone') ++ current_value = myaugeas.get(setting) ++ ++ if current_value is None: ++ insert_paths = myaugeas.match('/files%s/Date/*' % (php_ini)) ++ insert_path = insert_paths(len(insert_paths) - 1) ++ myaugeas.insert(insert_path, 'date.timezone', False) ++ ++ log.debug(_("Setting key %r to %r") % ('Date/date.timezone', conf.timezone), level=8) ++ myaugeas.set(setting, conf.timezone) ++ ++ myaugeas.save() ++ except IndexError: ++ subprocess.Popen( ++ ++ 'sed', ++ '-i', ++ '-r', ++ '-e', ++ r's|^(;*)date\.timezone.*$|date.timezone = %s|g' % (conf.timezone), ++ php_ini ++ ++ ) +-- +2.20.1 +
View file
debian.changelog
Changed
@@ -1,3 +1,11 @@ +pykolab (0.8.13-0~kolab4) unstable; urgency=low + + * Require both python-pymysql and python-mysqldb + * Fix PHP setup on Xenial + * Fix MySQL setup on Bionic + + -- Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Mon, 29 Jul 2019 01:49:00 +0100 + pykolab (0.8.13-0~kolab3) unstable; urgency=low * Release of version 0.8.13
View file
debian.control
Changed
@@ -41,6 +41,7 @@ python-ldap, python-pyasn1, python-pyasn1-modules, + python-pymysql, python-sqlalchemy, ${misc:Depends}, ${shlibs:Depends},
View file
debian.series
Changed
@@ -1,1 +1,3 @@ cyrus-imapd.conf-cert-paths.patch -p1 +0001-Fix-settting-up-new-MySQL-servers-with-root-password.patch -p1 +0002-Work-around-out-dated-augeas-on-Xenial.patch -p1
View file
pykolab.dsc
Changed
@@ -2,7 +2,7 @@ Source: pykolab Binary: pykolab, kolab-cli, kolab-conf, kolab-saslauthd, kolab-server, kolab-telemetry, kolab-xml, wallace Architecture: all -Version: 0.8.13-0~kolab3 +Version: 0.8.13-0~kolab4 Maintainer: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Uploaders: Paul Klos <kolab@klos2day.nl> Homepage: http://www.kolab.org
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.