Philipp Hörist pushed to branch master at gajim / gajim

Commits:
49a78ae8 by Philipp Hörist at 2017-06-16T23:40:42+02:00
Support IPV6 and IPV4 domainparts

https://tools.ietf.org/html/rfc7622#section-3.2

- - - - -


1 changed file:

- src/common/helpers.py


Changes:

=====================================
src/common/helpers.py
=====================================
--- a/src/common/helpers.py
+++ b/src/common/helpers.py
@@ -173,6 +173,35 @@ def prep(user, server, resource):
     """
     # This function comes from
     
#http://svn.twistedmatrix.com/cvs/trunk/twisted/words/protocols/jabber/jid.py
+
+    ip_address = False
+
+    try:
+        socket.inet_aton(server)
+        ip_address = True
+    except socket.error:
+        pass
+
+    if not ip_address and hasattr(socket, 'inet_pton'):
+        try:
+            socket.inet_pton(socket.AF_INET6, server.strip('[]'))
+            server = '[%s]' % server.strip('[]')
+            ip_address = True
+        except (socket.error, ValueError):
+            pass
+
+    if not ip_address:
+        if server is not None:
+            if len(server) < 1 or len(server) > 1023:
+                raise InvalidFormat(_('Server must be between 1 and 1023 
chars'))
+            try:
+                from nbxmpp.stringprepare import nameprep
+                server = nameprep.prepare(server)
+            except UnicodeError:
+                raise InvalidFormat(_('Invalid character in hostname.'))
+        else:
+            raise InvalidFormat(_('Server address required.'))
+
     if user is not None:
         if len(user) < 1 or len(user) > 1023:
             raise InvalidFormat(_('Username must be between 1 and 1023 chars'))
@@ -184,17 +213,6 @@ def prep(user, server, resource):
     else:
         user = None
 
-    if server is not None:
-        if len(server) < 1 or len(server) > 1023:
-            raise InvalidFormat(_('Server must be between 1 and 1023 chars'))
-        try:
-            from nbxmpp.stringprepare import nameprep
-            server = nameprep.prepare(server)
-        except UnicodeError:
-            raise InvalidFormat(_('Invalid character in hostname.'))
-    else:
-        raise InvalidFormat(_('Server address required.'))
-
     if resource is not None:
         if len(resource) < 1 or len(resource) > 1023:
             raise InvalidFormat(_('Resource must be between 1 and 1023 chars'))



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/49a78ae8ed999ee8866ea570746b9c1b61dd0984
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to