| Lines 104-133
          def validate_zonename(zonename):
      
      
        Link Here | 
        
          | 104 | 	'foo' | 104 | 	'foo' | 
        
          | 105 | 	>>> validate_zonename('foo.bar') | 105 | 	>>> validate_zonename('foo.bar') | 
        
          | 106 | 	'foo.bar' | 106 | 	'foo.bar' | 
          
            
              | 107 | 	>>> validate_zonename('foo.zone')  # doctest: +IGNORE_EXCEPTION_DETAIL | 107 | 	>>> validate_zonename('foo.zone')  # doctest: +ELLIPSIS | 
        
          | 108 | 	Traceback (most recent call last): | 108 | 	Traceback (most recent call last): | 
        
          | 109 | 	... | 109 | 	... | 
          
            
              | 110 | 	InvalidZone: | 110 | 	InvalidZone: ... | 
            
              | 111 | 	>>> validate_zonename('foo.proxy')  # doctest: +IGNORE_EXCEPTION_DETAIL | 111 | 	>>> validate_zonename('foo.proxy')  # doctest: +ELLIPSIS | 
        
          | 112 | 	Traceback (most recent call last): | 112 | 	Traceback (most recent call last): | 
        
          | 113 | 	... | 113 | 	... | 
          
            
              | 114 | 	InvalidZone: | 114 | 	InvalidZone: ... | 
            
              | 115 | 	>>> validate_zonename('.')  # doctest: +IGNORE_EXCEPTION_DETAIL | 115 | 	>>> validate_zonename('.')  # doctest: +ELLIPSIS | 
        
          | 116 | 	Traceback (most recent call last): | 116 | 	Traceback (most recent call last): | 
        
          | 117 | 	... | 117 | 	... | 
          
            
              | 118 | 	InvalidZone: | 118 | 	InvalidZone: ... | 
            
              | 119 | 	>>> validate_zonename('..')  # doctest: +IGNORE_EXCEPTION_DETAIL | 119 | 	>>> validate_zonename('..')  # doctest: +ELLIPSIS | 
        
          | 120 | 	Traceback (most recent call last): | 120 | 	Traceback (most recent call last): | 
        
          | 121 | 	... | 121 | 	... | 
          
            
              | 122 | 	InvalidZone: | 122 | 	InvalidZone: ... | 
            
              | 123 | 	>>> validate_zonename('fo..o')  # doctest: +IGNORE_EXCEPTION_DETAIL | 123 | 	>>> validate_zonename('fo..o')  # doctest: +ELLIPSIS | 
        
          | 124 | 	Traceback (most recent call last): | 124 | 	Traceback (most recent call last): | 
        
          | 125 | 	... | 125 | 	... | 
          
            
              | 126 | 	InvalidZone: | 126 | 	InvalidZone: ... | 
            
              | 127 | 	>>> validate_zonename('fo"bar"o')  # doctest: +IGNORE_EXCEPTION_DETAIL | 127 | 	>>> validate_zonename('fo"bar"o')  # doctest: +ELLIPSIS | 
        
          | 128 | 	Traceback (most recent call last): | 128 | 	Traceback (most recent call last): | 
        
          | 129 | 	... | 129 | 	... | 
          
            
              | 130 | 	InvalidZone: | 130 | 	InvalidZone: ... | 
        
          | 131 | 	""" | 131 | 	""" | 
        
          | 132 | 	if not zonename: | 132 | 	if not zonename: | 
        
          | 133 | 		raise InvalidZone('empty zonename not allowed') | 133 | 		raise InvalidZone('empty zonename not allowed') | 
  
    | Lines 135-141
          def validate_zonename(zonename):
      
      
        Link Here | 
        
          | 135 | 		raise InvalidZone('zone name %r contains invalid characters' % (zonename,)) | 135 | 		raise InvalidZone('zone name %r contains invalid characters' % (zonename,)) | 
        
          | 136 | 	if zonename.endswith('.zone') or zonename.endswith('.proxy'): | 136 | 	if zonename.endswith('.zone') or zonename.endswith('.proxy'): | 
        
          | 137 | 		raise InvalidZone('.zone or .proxy TLD are not supported.') | 137 | 		raise InvalidZone('.zone or .proxy TLD are not supported.') | 
          
            
              | 138 | 	if '..' in zonename or zonename in ('.', '..'): | 138 | 	if '..' in zonename or zonename == '.': | 
        
          | 139 | 		raise InvalidZone('zone name must not be ".", ".." or contain "..".') | 139 | 		raise InvalidZone('zone name must not be ".", ".." or contain "..".') | 
        
          | 140 | 	if zonename in ('0.in-addr.arpa', '127.in-addr.arpa', '255.in-addr.arpa'): | 140 | 	if zonename in ('0.in-addr.arpa', '127.in-addr.arpa', '255.in-addr.arpa'): | 
        
          | 141 | 		raise InvalidZone('zone must not be 0, 127, 255.') | 141 | 		raise InvalidZone('zone must not be 0, 127, 255.') |