Python idna.alabel() Examples
The following are 5
code examples of idna.alabel().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
idna
, or try the search function
.
Example #1
Source File: name.py From script.elementum.burst with Do What The F*ck You Want To Public License | 5 votes |
def encode(self, label): if label == '': return b'' if self.allow_pure_ascii and self.is_all_ascii(label): return label.encode('ascii') if not have_idna_2008: raise NoIDNA2008 try: if self.uts_46: label = idna.uts46_remap(label, False, self.transitional) return idna.alabel(label) except idna.IDNAError as e: raise IDNAException(idna_exception=e)
Example #2
Source File: name.py From elasticintel with GNU General Public License v3.0 | 5 votes |
def encode(self, label): if label == '': return b'' if self.allow_pure_ascii and self.is_all_ascii(label): return label.encode('ascii') if not have_idna_2008: raise NoIDNA2008 try: if self.uts_46: label = idna.uts46_remap(label, False, self.transitional) return idna.alabel(label) except idna.IDNAError as e: raise IDNAException(idna_exception=e)
Example #3
Source File: name.py From bazarr with GNU General Public License v3.0 | 5 votes |
def encode(self, label): if label == '': return b'' if self.allow_pure_ascii and self.is_all_ascii(label): return label.encode('ascii') if not have_idna_2008: raise NoIDNA2008 try: if self.uts_46: label = idna.uts46_remap(label, False, self.transitional) return idna.alabel(label) except idna.IDNAError as e: raise IDNAException(idna_exception=e)
Example #4
Source File: serializers.py From controller with MIT License | 4 votes |
def validate_domain(self, value): """ Check that the hostname is valid """ if value[-1:] == ".": value = value[:-1] # strip exactly one dot from the right, if present if value == "*": raise serializers.ValidationError("Hostname can't only be a wildcard") labels = value.split('.') # Let wildcards through by not trying to validate it wildcard = True if labels[0] == '*' else False if wildcard: labels.pop(0) try: # IDN domain labels to ACE (IDNA2008) def ToACE(x): return idna.alabel(x).decode("utf-8", "strict") labels = list(map(ToACE, labels)) except idna.IDNAError as e: raise serializers.ValidationError( "Hostname does not look valid, could not convert to ACE {}: {}" .format(value, e)) # TLD must not only contain digits according to RFC 3696 if labels[-1].isdigit(): raise serializers.ValidationError('Hostname does not look valid.') # prepend wildcard 'label' again if removed before if wildcard: labels.insert(0, '*') # recreate value using ACE'd labels aceValue = '.'.join(labels) if len(aceValue) > 253: raise serializers.ValidationError('Hostname must be 253 characters or less.') if models.Domain.objects.filter(domain=aceValue).exists(): raise serializers.ValidationError( "The domain {} is already in use by another app".format(value)) return aceValue
Example #5
Source File: serializers.py From controller with MIT License | 4 votes |
def validate_domain(self, value): """ Check that the hostname is valid """ if value[-1:] == ".": value = value[:-1] # strip exactly one dot from the right, if present if value == "*": raise serializers.ValidationError("Hostname can't only be a wildcard") labels = value.split('.') # Let wildcards through by not trying to validate it wildcard = True if labels[0] == '*' else False if wildcard: labels.pop(0) try: # IDN domain labels to ACE (IDNA2008) def ToACE(x): return idna.alabel(x).decode("utf-8", "strict") labels = list(map(ToACE, labels)) except idna.IDNAError as e: raise serializers.ValidationError( "Hostname does not look valid, could not convert to ACE {}: {}" .format(value, e)) # TLD must not only contain digits according to RFC 3696 if labels[-1].isdigit(): raise serializers.ValidationError('Hostname does not look valid.') # prepend wildcard 'label' again if removed before if wildcard: labels.insert(0, '*') # recreate value using ACE'd labels aceValue = '.'.join(labels) if len(aceValue) > 253: raise serializers.ValidationError('Hostname must be 253 characters or less.') if models.Domain.objects.filter(domain=aceValue).exists(): raise serializers.ValidationError( "The domain {} is already in use by another app".format(value)) return aceValue