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

jids and nicks are now punycoded before we store on HD. See #1030

parent b1ebd06f
No related branches found
No related tags found
No related merge requests found
......@@ -45,6 +45,7 @@
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
from calendar import timegm
from encodings.punycode import punycode_encode
import common.xmpp
......@@ -272,7 +273,8 @@ def node_to_dict(self, node):
def save_vcard_to_hd(self, full_jid, card):
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:
# remove room_jid file if needed
if os.path.isfile(path):
......@@ -280,7 +282,8 @@ def save_vcard_to_hd(self, full_jid, card):
# create folder if needed
if not os.path.isdir(path):
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:
path_to_file = path
fil = open(path_to_file, 'w')
......@@ -2356,10 +2359,12 @@ def get_cached_vcard(self, fjid, is_fake_jid = False):
return {} if vcard was too old
return None if we don't have cached vcard'''
jid, nick = gajim.get_room_and_nick_from_fjid(fjid)
puny_jid = punycode_encode(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:
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):
return None
# We have the vcard cached
......
......@@ -23,6 +23,7 @@
import pango
import os
import sys
from encodings.punycode import punycode_encode
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
return None
puny_jid = punycode_encode(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:
path = os.path.join(gajim.VCARD_PATH, jid)
path = os.path.join(gajim.VCARD_PATH, puny_jid)
if not os.path.isfile(path):
return 'ask'
......
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