correctly prep JID: "@server" is not a valid JID
This commit is contained in:
parent
0fcb1f7096
commit
effa7cedfb
|
@ -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):
|
||||||
"""
|
"""
|
||||||
# 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):
|
||||||
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))
|
||||||
|
|
Loading…
Reference in New Issue