Univention Bugzilla – Bug 16637
Encoding-Traceback in UCR wenn nicht UTF-8 Zeichen in base.conf stehen
Last modified: 2011-12-13 15:46:59 CET
Bei dem Versuch den AD-Connector über die UMC einzurichten trat der folgende Fehler beim Speichern der Konfiguration auf: ------------ Die Ausführung des Kommandos 'adconnector/configure' ist fehlgeschlagen: Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/__init__.py", line 180, in execute func( object ) File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/adconnector/__init__.py", line 212, in configure univention.config_registry.handler_set( [ u'%s=%s' % (ucrkey, val) ] ) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 869, in handler_set reg.save() File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 126, in save self._registry[ self._write_registry ].save() File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 275, in save self.__save_file(filename) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 260, in __save_file fp.write(self.__str__()) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 296, in __str__ return '\n'.join(['%s: %s' % (key, self.removeInvalidChars (val)) for key, val in self.items()]) File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 15-18: invalid data ----------- Und hier der Relevante Ausschnitt aus der umc-modules.log Datei: 30.11.09 15:21:42 ADMIN ( INFO ) : modserver.py: _recv: msg._id=125959089695400-16 UNIVENTION_DEBUG_BEGIN : adconnector.handler.configure 30.11.09 15:21:42 ADMIN ( INFO ) : ...dconnector/__init__.py:174: configure: options={'ad_mapping_group_language': u'de', 'ad_ldap_binddn': u'cn=Administrator,cn=users,DC=w2k3', 'ad_windows_version': u'win2003', 'ad_poll_sleep': u'5', 'debug_level': u'_1_', 'ad_mapping_sync_mode': u'sync', 'ad_retry_rejected': u'10', 'ad_ldap_host': u'win2k3.ad2003.local', 'ad_ldap_base': u'DC=w2k3', 'ad_ldap_bindpw': u'univention', 'action': 'save', 'debug_function': u'_1_'} 30.11.09 15:21:42 ADMIN ( INFO ) : ...dconnector/__init__.py:211: setting connector/ad/ldap/host=win2k3.ad2003.local UNIVENTION_DEBUG_END : adconnector.handler.configure Der Connector war in Version 4.1.2-1.134.200910221141 installiert.
Während der Installation wurde bei den SSL-Zertifikatsangaben eine Angabe mit Umlaut gemacht. Da der Installer mit Latin-1-Encoding läuft, wurde dies wohl auch in diesem Encoding in die base.conf geschrieben. UCR hat beim Auslesen der base.conf keine Probleme mit Umlauten. Allerdings beim Ändern einer UCR-Variable wird über ein return '\n'.join(['%s: %s' % (key, self.removeInvalidChars (val)) for key, val in self.items()]) die neue base.conf zusammengebaut. Enthält val ein Latin-1-Zeichen führt dies zu obigem Traceback. Konkreter Auslöser (in Latin-1 kodiert): ssl/locality: löjlk
Neben dem UMC Modul für die Einrichtung des Ad-Connectors wirkt sich dieser Bug auf das UMC Modul "Univention Configuration Registry" aus. Bei einer Suche über die Kategorien "Alle", "Alle (inkl. nicht registrierter)" und "System: Zertifikatsverwaltung" tritt folgende Fehlermeldung auf: Traceback (most recent call last): File "/usr/share/univention-webui/modules/requests.py", line 462, in startRequest xmltext=xmlout.toxml() File "/usr/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", line 47, in toxml return self.toprettyxml("", "", encoding) File "/usr/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", line 62, in toprettyxml return writer.getvalue() File "/usr/lib/python2.4/StringIO.py", line 271, in getvalue self.buf += ''.join(self.buflist) File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 20-23: unexpected end of data
(In reply to comment #2) > Neben dem UMC Modul für die Einrichtung des Ad-Connectors wirkt sich dieser Bug > auf das UMC Modul "Univention Configuration Registry" aus. Bei einer Suche über > die Kategorien "Alle", "Alle (inkl. nicht registrierter)" und "System: > Zertifikatsverwaltung" tritt folgende Fehlermeldung auf: > > Traceback (most recent call last): > File "/usr/share/univention-webui/modules/requests.py", line 462, in > startRequest xmltext=xmlout.toxml() > File "/usr/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", line 47, in > toxml return self.toprettyxml("", "", encoding) > File "/usr/lib/python2.4/site-packages/_xmlplus/dom/minidom.py", line 62, in > toprettyxml return writer.getvalue() > File "/usr/lib/python2.4/StringIO.py", line 271, in getvalue self.buf += > ''.join(self.buflist) > File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode return > codecs.utf_8_decode(input, errors, True) > UnicodeDecodeError: 'utf8' codec can't decode bytes in position 20-23: > unexpected end of data Existiert dieses System noch in dem gleichen Zustand? Wenn ja, können Sie einmal prüfen, ob sich in den Dateien unterhalb von /etc/univention/registry.info/ Dateien mit Umlauten befinden, die nicht in UTF-8 kodiert sind? Wahrscheinlich wird dieser Traceback dadurch ausgelöst.
Das Problem aus Comment 0 ist jetzt behoben. Es wird dafür gesorgt, dass nur UTF-8 Werte in die Dateien geschrieben und gelesen werden. Das Problem aus Comment 2 bezieht sich wahrscheinlich auf die Info-Dateien und hat damit einen anderen Ursprung.
Ich bin mir nicht sicher, ob das der richtige Bug ist. Aus der updater.log von einem Update auf UCS 2.3-2: Setting up univention-windows-installer (3.0.1-2.64.201003150943) ... Installing new version of config file /etc/univention/templates/info/univention-windows-installer.info ... File: /var/lib/univention-windows-installer/install/lib/unattend.txt File: /var/lib/univention-windows-installer/install/site/unattend.txt Traceback (most recent call last): File "/usr/sbin/univention-config-registry", line 40, in ? ub.main(sys.argv[1:]) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 1457, in main handlers[ action ][ 0 ]( args, cmd_opts ) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 973, in handler_register c.register(args[0], b) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 748, in register object((bc, d)) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 505, in __call__ to_fp.write(filter(from_fp.read(), bc, srcfiles = [self.from_file], opts = filter_opts)) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 355, in filter template = template[:start.start()]+value+template[end.end():] File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 255-260: unsupported Unicode code range Create windowsinstaller/perl/msi
Es gibt noch eine zusätzliche Meldung: Setting up univention-directory-manager (7.0.52-1.248.201003090948) ... Installing new version of config file /etc/univention/templates/files/etc/cron.d/univention-directory-reports-cleanup ... Multifile: /etc/hosts File: /usr/share/univention-directory-manager/www/config.php File: /etc/apache2/sites-available/univention-directory-manager Multifile: /var/www/ucs-overview/de.html Traceback (most recent call last): File "/usr/sbin/univention-config-registry", line 40, in ? ub.main(sys.argv[1:]) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 1457, in main handlers[ action ][ 0 ]( args, cmd_opts ) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 973, in handler_register c.register(args[0], b) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 748, in register object((bc, d)) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 455, in __call__ to_fp.write(filter(from_fp.read(), bc, srcfiles = self.from_files, opts = filter_opts)) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 355, in filter template = template[:start.start()]+value+template[end.end():] File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 256-261: unsupported Unicode code range
Zu Comment 5 und Comment 6: Steht wahrscheinlich mit Bug #18019 in Zusammenhang. Es scheint noch Templates zu eben, die ISO-8859-* kodiert sind. Es könnte sein, dass das erst jetzt mit der explizites Kodierung der UCR-Werte nach UTF-8 auffällt. Frage ist, ob wir die "falschen" Templates korrigieren wollen oder die Änderung erst einmal wieder zurücknehmen wollen?
(In reply to comment #7) > Zu Comment 5 und Comment 6: Steht wahrscheinlich mit Bug #18019 in > Zusammenhang. Es scheint noch Templates zu eben, die ISO-8859-* kodiert sind. > Es könnte sein, dass das erst jetzt mit der explizites Kodierung der UCR-Werte > nach UTF-8 auffällt. Frage ist, ob wir die "falschen" Templates korrigieren > wollen oder die Änderung erst einmal wieder zurücknehmen wollen? Nein, das geht nicht, da wir die Schnittstellen in einem Patchlevel-Release nicht ändern können.
Wir schieben diese Änderung auf 3.0, da sonst die Schnittstellen geändert werden.
Created attachment 2379 [details] Force utf-8 encoding Dieser Patch wurde erst einmal wieder aus dem SVN entfernt.
*** Bug 17956 has been marked as a duplicate of this bug. ***
erneut berichtet im Forum: http://forum.univention.de/viewtopic.php?f=48&t=1525&p=5175#p5175
(In reply to comment #4) > Das Problem aus Comment 0 ist jetzt behoben. Es wird dafür gesorgt, dass nur > UTF-8 Werte in die Dateien geschrieben und gelesen werden. Dies wurde mit Bug #18006 > > Das Problem aus Comment 2 bezieht sich wahrscheinlich auf die Info-Dateien und > hat damit einen anderen Ursprung. Damit verbleibt dieses Problem für diesen Bug.
Bitte prüfen, ob hier noch etwas offen ist.
(In reply to comment #13) > > Das Problem aus Comment 2 bezieht sich wahrscheinlich auf die Info-Dateien und > > hat damit einen anderen Ursprung. > Damit verbleibt dieses Problem für diesen Bug. Es gibt in UCS 3.0 keine nicht-UTF-8 Templates oder Quellcode-Dateien mehr, daher sollte das Problem nicht mehr auftreten.
(In reply to comment #15) > (In reply to comment #13) > > > Das Problem aus Comment 2 bezieht sich wahrscheinlich auf die Info-Dateien und > > > hat damit einen anderen Ursprung. > > Damit verbleibt dieses Problem für diesen Bug. > Es gibt in UCS 3.0 keine nicht-UTF-8 Templates oder Quellcode-Dateien mehr, > daher sollte das Problem nicht mehr auftreten. UMC - OUTSOURCED Es gibt noch ein Problem mit UMC UCR, dies wird aber an Bug #24440 behandelt. Non-UTF-8 in Templates - OK Scheint auch kein Problem mehr zu sein # iso latin -> echo "äöä" >> /etc/univention/templates/files/var/www/ucs-overview/de.html.d/50nagios-de.html -> ucr commit /var/www/ucs-overview/de.html Multifile: /var/www/ucs-overview/de.html # utf8 -> echo "äöüöüüö" >> /etc/univention/templates/files/var/www/ucs-overview/de.html.d/50nagios-de.html -> ucr commit /var/www/ucs-overview/de.html Multifile: /var/www/ucs-overview/de.html
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"