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.com'
c.f = 'toto' c.f = 'toto'
def test_domainname_special(): def test_special_domain_name():
"""domain name option that starts with a number """domain name option that starts with a number or not
""" """
d = DomainnameOption('d', '') d = DomainnameOption('d', '')
od = OptionDescription('a', '', [d]) e = DomainnameOption('e', '', type_='netbios')
od = OptionDescription('a', '', [d,e])
c = Config(od) c = Config(od)
c.read_write() c.read_write()
c.d = '1toto.com' c.d = '1toto.com'
c.d = '123toto.com' c.d = '123toto.com'
c.e = 'toto'
raises(ValueError, "c.e = '1toto'")
def test_domainname_netbios(): def test_domainname_netbios():
d = DomainnameOption('d', '', type_='netbios') d = DomainnameOption('d', '', type_='netbios')

View File

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