summaryrefslogtreecommitdiff
path: root/slixmpp/stringprep.py
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2015-08-23 17:14:53 +0200
committermathieui <mathieui@mathieui.net>2015-08-23 17:14:53 +0200
commit804b23d390fe5733f4f2cbd1b588fbc9b7c42e21 (patch)
treede208053ef66ad1650f650e888b836d49915603e /slixmpp/stringprep.py
parent6e61adf3dba6945423bb4b8812c8ed0107274f50 (diff)
parent04eaf52b1d919e06f2a3c60ab63d625bc5d0797f (diff)
downloadslixmpp-804b23d390fe5733f4f2cbd1b588fbc9b7c42e21.tar.gz
slixmpp-804b23d390fe5733f4f2cbd1b588fbc9b7c42e21.tar.bz2
slixmpp-804b23d390fe5733f4f2cbd1b588fbc9b7c42e21.tar.xz
slixmpp-804b23d390fe5733f4f2cbd1b588fbc9b7c42e21.zip
Merge branch 'socks5' of http://git.linkmauve.fr/slixmpp
Diffstat (limited to 'slixmpp/stringprep.py')
-rw-r--r--slixmpp/stringprep.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/slixmpp/stringprep.py b/slixmpp/stringprep.py
index e0757ef2..99506d78 100644
--- a/slixmpp/stringprep.py
+++ b/slixmpp/stringprep.py
@@ -101,5 +101,21 @@ def idna(domain):
domain_parts.append(label)
return '.'.join(domain_parts)
+def punycode(domain):
+ domain_parts = []
+ for label in domain.split('.'):
+ try:
+ label = encodings.idna.nameprep(label)
+ encodings.idna.ToASCII(label)
+ except UnicodeError:
+ raise StringprepError
+
+ for char in label:
+ if char in ILLEGAL_CHARS:
+ raise StringprepError
+
+ domain_parts.append(label)
+ return b'.'.join(domain_parts)
+
logging.getLogger(__name__).warning('Using slower stringprep, consider '
'compiling the faster cython/libidn one.')