Bug 18006 - Encoding-Traceback in UCR wenn nicht UTF-8 Zeichen in base.conf stehen
Encoding-Traceback in UCR wenn nicht UTF-8 Zeichen in base.conf stehen
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UCS Installer
UCS 2.3
Other Linux
: P5 normal (vote)
: UCS 3.0 - MS2
Assigned To: Janek Walkenhorst
Andreas Büsching
:
Depends on: 16637 18101
Blocks: 55512 23750 23751 23752 23753 24492 24493
  Show dependency treegraph
 
Reported: 2010-03-30 11:21 CEST by Andreas Büsching
Modified: 2022-12-21 17:10 CET (History)
5 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): Internationalization
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Büsching univentionstaff 2010-03-30 11:21:29 CEST
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.
Comment 1 Stefan Gohmann univentionstaff 2010-06-10 19:27:33 CEST
Für 3.0 vorgesehen, da wir Bug #16637 auch erst zur 3.0 angehen.
Comment 2 Janis Meybohm univentionstaff 2011-03-15 09:48:32 CET
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
---
Comment 3 Janis Meybohm univentionstaff 2011-03-28 17:00:27 CEST
Erneut aufgetreten an 2011031610000176
Comment 4 Tobias Scherer univentionstaff 2011-06-10 15:29:58 CEST
Der Vollständigkeit halber, Berichtet an:
Ticket#: 2011030810000244
Ticket#: 2011032310000984
Ticket#: 2011060910001343
Comment 5 Janek Walkenhorst univentionstaff 2011-09-21 18:07:09 CEST
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.
Comment 6 Andreas Büsching univentionstaff 2011-09-26 12:39:46 CEST
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
Comment 7 Janek Walkenhorst univentionstaff 2011-09-27 16:21:19 CEST
Es wird jetzt eine Meldung ausgegeben.

Für Bibliotheksaufrufe wird eine univention.config_registry.StrictModeException geworfen.

Exit1 wurde beibehalten.
Comment 8 Andreas Büsching univentionstaff 2011-09-27 17:45:26 CEST
(In reply to comment #7)
> Es wird jetzt eine Meldung ausgegeben.
> 
> Für Bibliotheksaufrufe wird eine univention.config_registry.StrictModeException
> geworfen.

Funktioniert wunderbar
Comment 9 Sönke Schwardt-Krummrich univentionstaff 2011-12-13 15:49:47 CET
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"