jids and nicks are now punycoded before we store on HD. See #1030
This commit is contained in:
parent
b1ebd06fe9
commit
f9d0421d33
|
@ -45,6 +45,7 @@ if os.name != 'nt':
|
||||||
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
||||||
|
|
||||||
from calendar import timegm
|
from calendar import timegm
|
||||||
|
from encodings.punycode import punycode_encode
|
||||||
|
|
||||||
import common.xmpp
|
import common.xmpp
|
||||||
|
|
||||||
|
@ -272,7 +273,8 @@ class Connection:
|
||||||
|
|
||||||
def save_vcard_to_hd(self, full_jid, card):
|
def save_vcard_to_hd(self, full_jid, card):
|
||||||
jid, nick = gajim.get_room_and_nick_from_fjid(full_jid)
|
jid, nick = gajim.get_room_and_nick_from_fjid(full_jid)
|
||||||
path = os.path.join(gajim.VCARD_PATH, jid)
|
puny_jid = punycode_encode(jid)
|
||||||
|
path = os.path.join(gajim.VCARD_PATH, puny_jid)
|
||||||
if jid in self.room_jids:
|
if jid in self.room_jids:
|
||||||
# remove room_jid file if needed
|
# remove room_jid file if needed
|
||||||
if os.path.isfile(path):
|
if os.path.isfile(path):
|
||||||
|
@ -280,7 +282,8 @@ class Connection:
|
||||||
# create folder if needed
|
# create folder if needed
|
||||||
if not os.path.isdir(path):
|
if not os.path.isdir(path):
|
||||||
os.mkdir(path, 0700)
|
os.mkdir(path, 0700)
|
||||||
path_to_file = os.path.join(gajim.VCARD_PATH, jid, nick)
|
puny_nick = punycode_encode(nick)
|
||||||
|
path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick)
|
||||||
else:
|
else:
|
||||||
path_to_file = path
|
path_to_file = path
|
||||||
fil = open(path_to_file, 'w')
|
fil = open(path_to_file, 'w')
|
||||||
|
@ -2356,10 +2359,12 @@ class Connection:
|
||||||
return {} if vcard was too old
|
return {} if vcard was too old
|
||||||
return None if we don't have cached vcard'''
|
return None if we don't have cached vcard'''
|
||||||
jid, nick = gajim.get_room_and_nick_from_fjid(fjid)
|
jid, nick = gajim.get_room_and_nick_from_fjid(fjid)
|
||||||
|
puny_jid = punycode_encode(jid)
|
||||||
if is_fake_jid:
|
if is_fake_jid:
|
||||||
path_to_file = os.path.join(gajim.VCARD_PATH, jid, nick)
|
puny_nick = punycode_encode(nick)
|
||||||
|
path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick)
|
||||||
else:
|
else:
|
||||||
path_to_file = os.path.join(gajim.VCARD_PATH, jid)
|
path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid)
|
||||||
if not os.path.isfile(path_to_file):
|
if not os.path.isfile(path_to_file):
|
||||||
return None
|
return None
|
||||||
# We have the vcard cached
|
# We have the vcard cached
|
||||||
|
|
|
@ -23,6 +23,7 @@ import gobject
|
||||||
import pango
|
import pango
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
from encodings.punycode import punycode_encode
|
||||||
|
|
||||||
import vcard
|
import vcard
|
||||||
|
|
||||||
|
@ -443,10 +444,12 @@ def get_avatar_pixbuf_from_cache(fjid, is_fake_jid = False):
|
||||||
# don't show avatar for the transport itself
|
# don't show avatar for the transport itself
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
puny_jid = punycode_encode(jid)
|
||||||
if is_fake_jid:
|
if is_fake_jid:
|
||||||
path = os.path.join(gajim.VCARD_PATH, jid, nick)
|
puny_nick = punycode_encode(nick)
|
||||||
|
path = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick)
|
||||||
else:
|
else:
|
||||||
path = os.path.join(gajim.VCARD_PATH, jid)
|
path = os.path.join(gajim.VCARD_PATH, puny_jid)
|
||||||
if not os.path.isfile(path):
|
if not os.path.isfile(path):
|
||||||
return 'ask'
|
return 'ask'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue