Bug 28131 - univention-config-registry-info Dateien ungeeignet für regexp mit [] im UCR-Variablen-Namen
univention-config-registry-info Dateien ungeeignet für regexp mit [] im UCR-V...
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UCR
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Philipp Hahn
Stefan Gohmann
: interim-1
Depends on:
Blocks: 26058 32297
  Show dependency treegraph
 
Reported: 2012-08-01 11:34 CEST by Philipp Hahn
Modified: 2013-08-22 11:07 CEST (History)
1 user (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): Further conceptual development
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp Hahn univentionstaff 2012-08-01 11:34:56 CEST
Die debian/*.univention-config-registry-info Dateien dienen dazu, die UCR-variablen zu beschreiben. Für jede Variable gibt es einen eigenen Abschnitt, dessen Name ein regulärer Ausdruck ist, um die Beschreibung mit dem Namen der UCR-Variable zu assoziieren.
Reguläre Ausdrücke können eckige Klammern enthalten, die aber nicht verwendet werden dürfen, weil diese Zeichen die Metazeichen für das INI-Format sind, das von <http://docs.python.org/library/configparser.html> verarbeitet wird.

from ConfigParser import ConfigParser
cfg = ConfigParser()
cfg.set(r'interfaces/[^/]\+/address', 'foo', '42')
with open('example.cfg', 'wb') as configfile: cfg.write(configfile)
cfg = ConfigParser()
cfg.read('exmaple.cfg')
cfg.sections()
# ['interfaces/[^/']

Problematisch ist das für die Umsetzung von Bug #26058, weil dort auch die Beschreibungen für die ganzen "interfaces/"-Variablen angepasst werden müssen. Insbesondere passt der reguläre Ausdruck
 [interfaces/.*/address]
auch auf
 [interfaces/.*/ipv6/.*/address]

Ich sehe hier folgende Möglichkeiten:
1. In univention-config die regulären Ausdrücke der Länge nach sortieren und mit den spezielleren Ausdrücken anfangen.
2. Escaping-Regel einführen und in univention-config de-escapen.
3. ConfigParser anpassen, so daß nur die letzte schließende Klammer die Abschnittüberschrift beendet
Comment 1 Philipp Hahn univentionstaff 2012-08-03 22:17:42 CEST
Der Code in univention_config_info.py unterstützt derzeit nur ".*" als Regular Expression, von daher setzte ich jetzt hier Möglichkeit 1 um und sortiere die Regular Expressions absteigend der Länge nach.

svn34614, univention-config-registry_8.0.1-1.389.201208032206
Comment 2 Stefan Gohmann univentionstaff 2012-09-17 10:34:07 CEST
Code: OK

root@backup132:~# ucr search interfaces/.*address
interfaces/eth0/address: 10.201.13.2
 IPv4 address of the network interface

interfaces/eth0/ipv6/foo/address: x
 IPv6 address of the network interface

root@backup132:~# 

Changelog: OK
Comment 3 Stefan Gohmann univentionstaff 2012-12-12 21:10:39 CET
UCS 3.1-0 has been released: 
 http://forum.univention.de/viewtopic.php?f=54&t=2125

If this error occurs again, please use "Clone This Bug".