Univention Bugzilla – Bug 15561
keine UCR keys mit : (Doppelpunkt) möglich, was IPv6 static hosts verhindert
Last modified: 2010-02-18 14:36:53 CET
Das Anlegen eines UCR keys für einen IPv6 static host schlägt wegen des Doppelpunkts fehl: # ucr set hosts/static/2001:db8:100::2=2m6 Please fix invalid char ":" in config registry key "hosts/static/2001:db8:100::2" Not setting hosts/static/2001:db8:100::2 #
Man kann den entsprechenden hosts-Eintrag natürlich am Ende der Datei /etc/univention/templates/files/etc/hosts.d/00-base anfügen.
History der Ausschluss-regex für Keys: r11783: (#14565) Newlines verboten (seither unverändert) re.compile ('[\\r\\n\!\"\§\$\%\&\(\)\[\]\{\}\=\?\`\+\#\'\,\;\:\<\>\\\]') r7521: (#12501) Punkt erlaubt re.compile('[\!\"\§\$\%\&\(\)\[\]\{\}\=\?\`\+\#\'\,\;\:\<\>\\\]'); r4672: - und _ doch wieder erlauben re.compile('[\!\"\§\$\%\&\(\)\[\]\{\}\=\?\`\+\#\'\,\;\.\:\<\>\\\]'); r4670: - und _ verbieten re.compile('[\!\"\§\$\%\&\(\)\[\]\{\}\=\?\`\+\#\'\,\;\.\:\<\>\-\_\\\]'); r321: Encoding fixes re.compile('[\!\"\§\$\%\&\(\)\[\]\{\}\=\?\`\+\#\'\,\;\.\:\<\>\\\]'); r3: import aus cvs re.compile('[\!\"\<A7>\$\%\&\(\)\[\]\{\}\=\?\`\+\#\'\,\;\.\:\<\>\\\]'); Hieraus schonmal keine Begründung ablesbar, warum ':' nicht erlaubt. Seit r11766 wird das Shellescaping für das Umwandeln von ucr-keys in shell-variablennamen per character-whitelisting gemacht. In der zuvor verwendeten Version war der Doppelpunkt nicht geblacklistet, d.h. die Blacklist hat sich wohl darauf verlassen, dass Doppelpunkte ohnehin nicht in Keys sein können. Das wiederum legt die Vermutung nahe, dass das großzügige generelle blacklisten anfangs wohl schon im Hinblick auf Shellabbildbarkeit der Keys eingeführt wurde und es keinen weiteren Grund gibt, warum ':' momentan verboten ist: -def shellEscape(line): - escapes = { '/': '_', - '-': '_', - '@':'_', - '.':'_', - '*':'\*', - ' ': '_', } - return replaceDict(line, escapes) +def keyShellEscape(line): + if not line: + raise Exception ('got empty line') + new_line = [] + if line[0] in string.digits: + new_line.append ('_') + for letter in line: + if letter in shell_valid_chars: + new_line.append (letter) + else: + new_line.append ('_') + return ''.join (new_line)
Da ein Zeichen erlaubt werden soll, und nicht verboten, sollte es auch keine Probleme mit bestehenden Keys geben. Warte trotzdem noch auf grünes Licht.
Das sollte nicht mehr zur 2.3 gemacht werden.
Doppelpunkte sind jetzt erlaubt. ChangeLog-Eintrag ist hinzugefügt
~$ ucr set hosts/static/foo:foo:bar=22:44:33 Create hosts/static/foo:foo:bar Multifile: /etc/hosts ~$ ucr get hosts/static/foo:foo:bar 22:44:33 ~$ Changelogeintrag für 2.3-1 vorhanden - verified
UCS 2.3-1 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".