Skip to content
Snippets Groups Projects
Commit effa7ced authored by Yann Leboulanger's avatar Yann Leboulanger
Browse files

correctly prep JID: "@server" is not a valid JID

parent 0fcb1f70
No related branches found
No related tags found
No related merge requests found
...@@ -75,22 +75,22 @@ def decompose_jid(jidstring): ...@@ -75,22 +75,22 @@ def decompose_jid(jidstring):
else: else:
# host/resource # host/resource
server = jidstring[0:res_sep] server = jidstring[0:res_sep]
resource = jidstring[res_sep + 1:] or None resource = jidstring[res_sep + 1:]
else: else:
if res_sep == -1: if res_sep == -1:
# user@host # user@host
user = jidstring[0:user_sep] or None user = jidstring[0:user_sep]
server = jidstring[user_sep + 1:] server = jidstring[user_sep + 1:]
else: else:
if user_sep < res_sep: if user_sep < res_sep:
# user@host/resource # user@host/resource
user = jidstring[0:user_sep] or None user = jidstring[0:user_sep]
server = jidstring[user_sep + 1:user_sep + (res_sep - user_sep)] server = jidstring[user_sep + 1:user_sep + (res_sep - user_sep)]
resource = jidstring[res_sep + 1:] or None resource = jidstring[res_sep + 1:]
else: else:
# server/resource (with an @ in resource) # server/resource (with an @ in resource)
server = jidstring[0:res_sep] server = jidstring[0:res_sep]
resource = jidstring[res_sep + 1:] or None resource = jidstring[res_sep + 1:]
return user, server, resource return user, server, resource
def parse_jid(jidstring): def parse_jid(jidstring):
...@@ -143,7 +143,9 @@ def prep(user, server, resource): ...@@ -143,7 +143,9 @@ def prep(user, server, resource):
""" """
# This function comes from # This function comes from
#http://svn.twistedmatrix.com/cvs/trunk/twisted/words/protocols/jabber/jid.py #http://svn.twistedmatrix.com/cvs/trunk/twisted/words/protocols/jabber/jid.py
if user: if user is not None:
if len(user) < 1 or len(user) > 1023:
raise InvalidFormat, _('Username must be between 1 and 1023 chars')
try: try:
from xmpp.stringprepare import nodeprep from xmpp.stringprepare import nodeprep
user = nodeprep.prepare(unicode(user)) user = nodeprep.prepare(unicode(user))
...@@ -152,16 +154,20 @@ def prep(user, server, resource): ...@@ -152,16 +154,20 @@ def prep(user, server, resource):
else: else:
user = None user = None
if not server: if server is not None:
raise InvalidFormat, _('Server address required.') if len(server) < 1 or len(server) > 1023:
else: raise InvalidFormat, _('Server must be between 1 and 1023 chars')
try: try:
from xmpp.stringprepare import nameprep from xmpp.stringprepare import nameprep
server = nameprep.prepare(unicode(server)) server = nameprep.prepare(unicode(server))
except UnicodeError: except UnicodeError:
raise InvalidFormat, _('Invalid character in hostname.') raise InvalidFormat, _('Invalid character in hostname.')
else:
raise InvalidFormat, _('Server address required.')
if resource: if resource is not None:
if len(resource) < 1 or len(resource) > 1023:
raise InvalidFormat, _('Resource must be between 1 and 1023 chars')
try: try:
from xmpp.stringprepare import resourceprep from xmpp.stringprepare import resourceprep
resource = resourceprep.prepare(unicode(resource)) resource = resourceprep.prepare(unicode(resource))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment