Univention Bugzilla – Bug 18006
Encoding-Traceback in UCR wenn nicht UTF-8 Zeichen in base.conf stehen
Last modified: 2022-12-21 17:10:38 CET
Die Veränderung, die hier durchgeführt wurde könnte den Installer beeinflussen, da dieser noch die Latin1-Kodierung nutzt. Dies sollte noch einmal getestet werden. +++ This bug was initially created as a clone of Bug #16637 +++ 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.
Für 3.0 vorgesehen, da wir Bug #16637 auch erst zur 3.0 angehen.
Aufgetreten mit OXAE an 2011030810000244 ssl/organization enthielt einen ISO-8859 Umlaut (vermutlich aus dem Installer). --- /var/log/univention/management-console-modules.log 08.03.11 12:01:48 ADMIN ( ERROR ) : Die Ausführung des Kommandos 'update/components_settings' ist fehlgeschlagen: Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/__init__.py", line 160, in execute func( object ) File "/usr/lib/python2.4/site-packages/univention/management/console/handlers/update/__init__.py", line 394, in components_settings univention.config_registry.handler_set(res) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 903, in handler_set reg.save() File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 130, in save self._registry[ self._write_registry ].save() File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 293, in save self.__save_file(filename) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 278, in __save_file fp.write(self.__str__()) File "/usr/lib/python2.4/site-packages/univention/config_registry.py", line 314, in __str__ return '\n'.join(['0<DA><C3>\F^?: ' % (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 19-22: invalid data ---
Erneut aufgetreten an 2011031610000176
Der Vollständigkeit halber, Berichtet an: Ticket#: 2011030810000244 Ticket#: 2011032310000984 Ticket#: 2011060910001343
Es wurde ucr/encoding/strict hinzugefügt. Wenn diese UCRV wahr ist, dann akzeptiert UCR beim Setzen von Werten keine Schlüssel oder Werte die nicht gültiges UTF-8 sind. Jegliche Software kann sich dann darauf verlassen, dass immer gültiges UTF-8 aus UCR raus kommt, wodurch obige Probleme in Zukunft vermieden werden. Bei Neuinstallationen wird dieser Modus aktiviert, bei Updates nicht. univention-config-registry (7.0.17-1), changelog angepasst.
das funktioniert grundsätzlich: - Die Variable wird nur bei Neuinstallationen gesetzt - Ist sie auf true gesetzt wird nur noch UTF-8 akzeptiert - Ist sie auf false gesetzt, dann geht weiterhin jedes Encoding (z.B. ISO-8859-1) Ist sie auf true gesetzt und man versucht einen Wert mit falschem Encoding zu setzen, dann gibt es einen Traceback: root@master:~/crunchy/univention-directory-manager-modules# ucr set bla=$(< bla) Setting bla Traceback (most recent call last): File "/usr/sbin/ucr", line 41, in <module> ub.main(sys.argv[1:]) File "/usr/lib/pymodules/python2.6/univention/config_registry.py", line 1594, in main handlers[ action ][ 0 ]( args, cmd_opts ) File "/usr/lib/pymodules/python2.6/univention/config_registry.py", line 1031, in handler_set reg[key] = value File "/usr/lib/pymodules/python2.6/univention/config_registry.py", line 156, in __setitem__ registry[key] = value File "/usr/lib/pymodules/python2.6/univention/config_registry.py", line 334, in __setitem__ value.decode('UTF-8') # only accept valid UTF-8 encoded bytes File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xf6 in position 0: invalid start byte ich denke hier wäre es besser eine Fehlermeldung auszugeben. Der Exit-Code ist dann 1 was gut ist. ChangeLog ist vorhanden
Es wird jetzt eine Meldung ausgegeben. Für Bibliotheksaufrufe wird eine univention.config_registry.StrictModeException geworfen. Exit1 wurde beibehalten.
(In reply to comment #7) > Es wird jetzt eine Meldung ausgegeben. > > Für Bibliotheksaufrufe wird eine univention.config_registry.StrictModeException > geworfen. Funktioniert wunderbar
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"