handle correltly SRV and registration on IDN servers. fixes #2898
This commit is contained in:
parent
37bd1142f9
commit
abcb9a35f1
|
@ -350,7 +350,7 @@ class Connection(ConnectionHandlers):
|
||||||
self._hostname = hostname
|
self._hostname = hostname
|
||||||
if use_srv:
|
if use_srv:
|
||||||
# add request for srv query to the resolve, on result '_on_resolve' will be called
|
# add request for srv query to the resolve, on result '_on_resolve' will be called
|
||||||
gajim.resolver.resolve('_xmpp-client._tcp.' + h.encode('utf-8'), self._on_resolve)
|
gajim.resolver.resolve('_xmpp-client._tcp.' + helpers.unicode_to_ACE(h), self._on_resolve)
|
||||||
else:
|
else:
|
||||||
self._on_resolve('', [])
|
self._on_resolve('', [])
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import errno
|
||||||
import select
|
import select
|
||||||
import sha
|
import sha
|
||||||
from encodings.punycode import punycode_encode
|
from encodings.punycode import punycode_encode
|
||||||
|
from encodings import idna
|
||||||
|
|
||||||
import gajim
|
import gajim
|
||||||
from i18n import Q_
|
from i18n import Q_
|
||||||
|
@ -85,6 +86,14 @@ def parse_jid(jidstring):
|
||||||
|
|
||||||
return prep(*decompose_jid(jidstring))
|
return prep(*decompose_jid(jidstring))
|
||||||
|
|
||||||
|
def unicode_to_ACE(host):
|
||||||
|
'''convert IDN (Internationalized Domain Names) to ACE (ASCII-compatible encoding)'''
|
||||||
|
labels = idna.dots.split(host)
|
||||||
|
converted_labels = []
|
||||||
|
for label in labels:
|
||||||
|
converted_labels.append(idna.ToASCII(label))
|
||||||
|
return ".".join(converted_labels)
|
||||||
|
|
||||||
def parse_resource(resource):
|
def parse_resource(resource):
|
||||||
'''Perform stringprep on resource and return it'''
|
'''Perform stringprep on resource and return it'''
|
||||||
if resource:
|
if resource:
|
||||||
|
|
|
@ -2991,9 +2991,9 @@ class AccountCreationWizardWindow:
|
||||||
'.')
|
'.')
|
||||||
dialogs.ErrorDialog(pritext, sectext)
|
dialogs.ErrorDialog(pritext, sectext)
|
||||||
return
|
return
|
||||||
server = widgets['server_comboboxentry'].child.get_text()
|
server = widgets['server_comboboxentry'].child.get_text().decode('utf-8')
|
||||||
savepass = widgets['save_password_checkbutton'].get_active()
|
savepass = widgets['save_password_checkbutton'].get_active()
|
||||||
password = widgets['pass1_entry'].get_text()
|
password = widgets['pass1_entry'].get_text().decode('utf-8')
|
||||||
|
|
||||||
if not self.modify:
|
if not self.modify:
|
||||||
if password == '':
|
if password == '':
|
||||||
|
|
Loading…
Reference in New Issue