Bug 16637 - 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 WORKSFORME
Product: UCS
Classification: Unclassified
Component: UCS Installer
UCS 2.3
Other Linux
: P5 normal (vote)
: UCS 3.0 - RC
Assigned To: Janek Walkenhorst
Felix Botner
:
: 17956 (view as bug list)
Depends on:
Blocks: 18006 18101
  Show dependency treegraph
 
Reported: 2009-11-30 14:25 CET by Andre Fenske
Modified: 2011-12-13 15:46 CET (History)
6 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):
Max CVSS v3 score:


Attachments
Force utf-8 encoding (1.05 KB, patch)
2010-04-12 11:04 CEST, Andreas Büsching
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andre Fenske univentionstaff 2009-11-30 14:25:16 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.
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2009-11-30 17:48:08 CET
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
Comment 2 Andreas Burkert 2010-02-04 17:08:29 CET
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
Comment 3 Andreas Büsching univentionstaff 2010-03-30 09:00:57 CEST
(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.
Comment 4 Andreas Büsching univentionstaff 2010-03-30 11:17:33 CEST
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.
Comment 5 Stefan Gohmann univentionstaff 2010-04-07 08:13:52 CEST
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
Comment 6 Stefan Gohmann univentionstaff 2010-04-07 08:15:02 CEST
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
Comment 7 Andreas Büsching univentionstaff 2010-04-07 12:18:51 CEST
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?
Comment 8 Stefan Gohmann univentionstaff 2010-04-07 12:20:06 CEST
(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.
Comment 9 Andreas Büsching univentionstaff 2010-04-12 10:56:19 CEST
Wir schieben diese Änderung auf 3.0, da sonst die Schnittstellen geändert werden.
Comment 10 Andreas Büsching univentionstaff 2010-04-12 11:04:08 CEST
Created attachment 2379 [details]
Force utf-8 encoding

Dieser Patch wurde erst einmal wieder aus dem SVN entfernt.
Comment 11 Stefan Gohmann univentionstaff 2010-04-27 07:59:52 CEST
*** Bug 17956 has been marked as a duplicate of this bug. ***
Comment 12 Tobias Scherer univentionstaff 2011-07-21 15:23:44 CEST
erneut berichtet im Forum:
http://forum.univention.de/viewtopic.php?f=48&t=1525&p=5175#p5175
Comment 13 Janek Walkenhorst univentionstaff 2011-09-22 11:32:54 CEST
(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.
Comment 14 Stefan Gohmann univentionstaff 2011-11-01 08:58:49 CET
Bitte prüfen, ob hier noch etwas offen ist.
Comment 15 Janek Walkenhorst univentionstaff 2011-11-01 13:00:35 CET
(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.
Comment 16 Felix Botner univentionstaff 2011-11-08 13:13:34 CET
(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
Comment 17 Sönke Schwardt-Krummrich univentionstaff 2011-12-13 15:41:12 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"