a hostname shall not start with a number

This commit is contained in:
gwen 2014-02-25 15:20:03 +01:00
parent 716d2b2348
commit 0c9d6554ae
2 changed files with 14 additions and 5 deletions

View file

@ -25,15 +25,19 @@ def test_domainname():
c.f = 'toto.com'
c.f = 'toto'
def test_domainname_special():
"""domain name option that starts with a number
def test_special_domain_name():
"""domain name option that starts with a number or not
"""
d = DomainnameOption('d', '')
od = OptionDescription('a', '', [d])
e = DomainnameOption('e', '', type_='netbios')
od = OptionDescription('a', '', [d,e])
c = Config(od)
c.read_write()
c.d = '1toto.com'
c.d = '123toto.com'
c.e = 'toto'
raises(ValueError, "c.e = '1toto'")
def test_domainname_netbios():
d = DomainnameOption('d', '', type_='netbios')

View file

@ -993,6 +993,10 @@ class DomainnameOption(Option):
end = ''
extrachar = ''
extrachar_mandatory = ''
if self._type != 'netbios':
allow_number = '\d'
else:
allow_number = ''
if self._type == 'netbios':
length = 14
elif self._type == 'hostname':
@ -1004,8 +1008,9 @@ class DomainnameOption(Option):
else:
extrachar = '\.'
end = '+[a-z]*'
self._domain_re = re.compile(r'^(?:[a-z\d][a-z\d\-{0}]{{,{1}}}{2}){3}$'
''.format(extrachar, length, extrachar_mandatory, end))
self._domain_re = re.compile(r'^(?:[a-z{0}][a-z\d\-{1}]{{,{2}}}{3}){4}$'
''.format(allow_number, extrachar, length,
extrachar_mandatory, end))
super(DomainnameOption, self).__init__(name, doc, default=default,
default_multi=default_multi,
callback=callback,