fix some small things. Thanks, pyflakes. Fix #2684
This commit is contained in:
parent
fc7bd37634
commit
720b190db8
5 changed files with 7 additions and 225 deletions
|
@ -250,7 +250,6 @@ class P2PClient(IdleObject):
|
|||
common.xmpp.NS_BYTESTREAM)
|
||||
|
||||
class P2PConnection(IdleObject, PlugIn):
|
||||
''' class for sending file to socket over socks5 '''
|
||||
def __init__(self, sock_hash, _sock, host = None, port = None, caller = None, on_connect = None, client = None):
|
||||
IdleObject.__init__(self)
|
||||
self._owner = client
|
||||
|
|
|
@ -18,16 +18,12 @@
|
|||
## GNU General Public License for more details.
|
||||
##
|
||||
|
||||
import os
|
||||
import time
|
||||
import base64
|
||||
import sha
|
||||
import socket
|
||||
import sys
|
||||
|
||||
from calendar import timegm
|
||||
|
||||
#import socks5
|
||||
from common import socks5
|
||||
import common.xmpp
|
||||
|
||||
from common import GnuPG
|
||||
|
@ -518,173 +514,8 @@ class ConnectionBytestream:
|
|||
self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, ''))
|
||||
raise common.xmpp.NodeProcessed
|
||||
|
||||
|
||||
|
||||
class ConnectionVcard:
|
||||
class ConnectionHandlersZeroconf(ConnectionBytestream):
|
||||
def __init__(self):
|
||||
self.vcard_sha = None
|
||||
self.vcard_shas = {} # sha of contacts
|
||||
self.room_jids = [] # list of gc jids so that vcard are saved in a folder
|
||||
|
||||
def add_sha(self, p, send_caps = True):
|
||||
'''
|
||||
c = p.setTag('x', namespace = common.xmpp.NS_VCARD_UPDATE)
|
||||
if self.vcard_sha is not None:
|
||||
c.setTagData('photo', self.vcard_sha)
|
||||
if send_caps:
|
||||
return self.add_caps(p)
|
||||
return p
|
||||
'''
|
||||
pass
|
||||
|
||||
def add_caps(self, p):
|
||||
'''
|
||||
# advertise our capabilities in presence stanza (jep-0115)
|
||||
c = p.setTag('c', namespace = common.xmpp.NS_CAPS)
|
||||
c.setAttr('node', 'http://gajim.org/caps')
|
||||
c.setAttr('ext', 'ftrans')
|
||||
c.setAttr('ver', gajim.version)
|
||||
return p
|
||||
'''
|
||||
pass
|
||||
|
||||
def node_to_dict(self, node):
|
||||
dict = {}
|
||||
|
||||
for info in node.getChildren():
|
||||
name = info.getName()
|
||||
if name in ('ADR', 'TEL', 'EMAIL'): # we can have several
|
||||
if not dict.has_key(name):
|
||||
dict[name] = []
|
||||
entry = {}
|
||||
for c in info.getChildren():
|
||||
entry[c.getName()] = c.getData()
|
||||
dict[name].append(entry)
|
||||
elif info.getChildren() == []:
|
||||
dict[name] = info.getData()
|
||||
else:
|
||||
dict[name] = {}
|
||||
for c in info.getChildren():
|
||||
dict[name][c.getName()] = c.getData()
|
||||
|
||||
return dict
|
||||
|
||||
def save_vcard_to_hd(self, full_jid, card):
|
||||
jid, nick = gajim.get_room_and_nick_from_fjid(full_jid)
|
||||
puny_jid = helpers.sanitize_filename(jid)
|
||||
path = os.path.join(gajim.VCARD_PATH, puny_jid)
|
||||
if jid in self.room_jids or os.path.isdir(path):
|
||||
# remove room_jid file if needed
|
||||
if os.path.isfile(path):
|
||||
os.remove(path)
|
||||
# create folder if needed
|
||||
if not os.path.isdir(path):
|
||||
os.mkdir(path, 0700)
|
||||
puny_nick = helpers.sanitize_filename(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')
|
||||
fil.write(str(card))
|
||||
fil.close()
|
||||
|
||||
def get_cached_vcard(self, fjid, is_fake_jid = False):
|
||||
'''return the vcard as a dict
|
||||
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 = helpers.sanitize_filename(jid)
|
||||
if is_fake_jid:
|
||||
puny_nick = helpers.sanitize_filename(nick)
|
||||
path_to_file = os.path.join(gajim.VCARD_PATH, puny_jid, puny_nick)
|
||||
else:
|
||||
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
|
||||
f = open(path_to_file)
|
||||
c = f.read()
|
||||
f.close()
|
||||
card = common.xmpp.Node(node = c)
|
||||
vcard = self.node_to_dict(card)
|
||||
if vcard.has_key('PHOTO'):
|
||||
if not isinstance(vcard['PHOTO'], dict):
|
||||
del vcard['PHOTO']
|
||||
elif vcard['PHOTO'].has_key('SHA'):
|
||||
cached_sha = vcard['PHOTO']['SHA']
|
||||
if self.vcard_shas.has_key(jid) and self.vcard_shas[jid] != \
|
||||
cached_sha:
|
||||
# user change his vcard so don't use the cached one
|
||||
return {}
|
||||
vcard['jid'] = jid
|
||||
vcard['resource'] = gajim.get_resource_from_jid(fjid)
|
||||
return vcard
|
||||
|
||||
def request_vcard(self, jid = None, is_fake_jid = False):
|
||||
'''request the VCARD. If is_fake_jid is True, it means we request a vcard
|
||||
to a fake jid, like in private messages in groupchat'''
|
||||
if not self.connection:
|
||||
return
|
||||
'''
|
||||
iq = common.xmpp.Iq(typ = 'get')
|
||||
if jid:
|
||||
iq.setTo(jid)
|
||||
iq.setTag(common.xmpp.NS_VCARD + ' vCard')
|
||||
|
||||
id = self.connection.getAnID()
|
||||
iq.setID(id)
|
||||
self.awaiting_answers[id] = (VCARD_ARRIVED, jid)
|
||||
if is_fake_jid:
|
||||
room_jid, nick = gajim.get_room_and_nick_from_fjid(jid)
|
||||
if not room_jid in self.room_jids:
|
||||
self.room_jids.append(room_jid)
|
||||
self.connection.send(iq)
|
||||
#('VCARD', {entry1: data, entry2: {entry21: data, ...}, ...})
|
||||
'''
|
||||
pass
|
||||
|
||||
def send_vcard(self, vcard):
|
||||
if not self.connection:
|
||||
return
|
||||
'''
|
||||
iq = common.xmpp.Iq(typ = 'set')
|
||||
iq2 = iq.setTag(common.xmpp.NS_VCARD + ' vCard')
|
||||
for i in vcard:
|
||||
if i == 'jid':
|
||||
continue
|
||||
if isinstance(vcard[i], dict):
|
||||
iq3 = iq2.addChild(i)
|
||||
for j in vcard[i]:
|
||||
iq3.addChild(j).setData(vcard[i][j])
|
||||
elif type(vcard[i]) == type([]):
|
||||
for j in vcard[i]:
|
||||
iq3 = iq2.addChild(i)
|
||||
for k in j:
|
||||
iq3.addChild(k).setData(j[k])
|
||||
else:
|
||||
iq2.addChild(i).setData(vcard[i])
|
||||
|
||||
id = self.connection.getAnID()
|
||||
iq.setID(id)
|
||||
self.connection.send(iq)
|
||||
|
||||
# Add the sha of the avatar
|
||||
if vcard.has_key('PHOTO') and isinstance(vcard['PHOTO'], dict) and \
|
||||
vcard['PHOTO'].has_key('BINVAL'):
|
||||
photo = vcard['PHOTO']['BINVAL']
|
||||
photo_decoded = base64.decodestring(photo)
|
||||
our_jid = gajim.get_jid_from_account(self.name)
|
||||
gajim.interface.save_avatar_files(our_jid, photo_decoded)
|
||||
avatar_sha = sha.sha(photo_decoded).hexdigest()
|
||||
iq2.getTag('PHOTO').setTagData('SHA', avatar_sha)
|
||||
|
||||
self.awaiting_answers[id] = (VCARD_PUBLISHED, iq2)
|
||||
'''
|
||||
pass
|
||||
|
||||
class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream):
|
||||
def __init__(self):
|
||||
ConnectionVcard.__init__(self)
|
||||
ConnectionBytestream.__init__(self)
|
||||
# List of IDs we are waiting answers for {id: (type_of_request, data), }
|
||||
self.awaiting_answers = {}
|
||||
|
@ -790,15 +621,6 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream):
|
|||
self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal',
|
||||
subject, chatstate, msg_id, composing_jep, user_nick))
|
||||
# END messageCB
|
||||
'''
|
||||
def build_http_auth_answer(self, iq_obj, answer):
|
||||
if answer == 'yes':
|
||||
iq = iq_obj.buildReply('result')
|
||||
elif answer == 'no':
|
||||
iq = iq_obj.buildReply('error')
|
||||
iq.setError('not-authorized', 401)
|
||||
self.connection.send(iq)
|
||||
'''
|
||||
|
||||
def parse_data_form(self, node):
|
||||
dic = {}
|
||||
|
@ -863,44 +685,14 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream):
|
|||
# serverside metacontacts are not supported with zeroconf
|
||||
# (there is no server)
|
||||
pass
|
||||
|
||||
def remove_transfers_for_contact(self, contact):
|
||||
''' stop all active transfer for contact '''
|
||||
'''for file_props in self.files_props.values():
|
||||
if self.is_transfer_stoped(file_props):
|
||||
continue
|
||||
receiver_jid = unicode(file_props['receiver']).split('/')[0]
|
||||
if contact.jid == receiver_jid:
|
||||
file_props['error'] = -5
|
||||
self.remove_transfer(file_props)
|
||||
self.dispatch('FILE_REQUEST_ERROR', (contact.jid, file_props))
|
||||
sender_jid = unicode(file_props['sender']).split('/')[0]
|
||||
if contact.jid == sender_jid:
|
||||
file_props['error'] = -3
|
||||
self.remove_transfer(file_props)
|
||||
'''
|
||||
pass
|
||||
|
||||
|
||||
def remove_all_transfers(self):
|
||||
''' stops and removes all active connections from the socks5 pool '''
|
||||
'''
|
||||
for file_props in self.files_props.values():
|
||||
self.remove_transfer(file_props, remove_from_list = False)
|
||||
del(self.files_props)
|
||||
self.files_props = {}
|
||||
'''
|
||||
pass
|
||||
|
||||
def remove_transfer(self, file_props, remove_from_list = True):
|
||||
'''
|
||||
if file_props is None:
|
||||
return
|
||||
self.disconnect_transfer(file_props)
|
||||
sid = file_props['sid']
|
||||
gajim.socks5queue.remove_file_props(self.name, sid)
|
||||
|
||||
if remove_from_list:
|
||||
if self.files_props.has_key('sid'):
|
||||
del(self.files_props['sid'])
|
||||
'''
|
||||
def remove_transfer(self, file_props, remove_from_list = True):
|
||||
pass
|
||||
|
||||
|
|
|
@ -37,12 +37,9 @@ if os.name != 'nt':
|
|||
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
||||
import getpass
|
||||
import gobject
|
||||
import notify
|
||||
|
||||
from common import helpers
|
||||
from common import gajim
|
||||
from common import GnuPG
|
||||
from common.zeroconf import connection_handlers_zeroconf
|
||||
from common.zeroconf import client_zeroconf
|
||||
from connection_handlers_zeroconf import *
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ class Roster:
|
|||
|
||||
def getShow(self, jid):
|
||||
#print 'roster_zeroconf.py: getShow'
|
||||
return getStatus(jid)
|
||||
return self.getStatus(jid)
|
||||
|
||||
def getPriority(jid):
|
||||
return 5
|
||||
|
|
|
@ -12,11 +12,7 @@
|
|||
## GNU General Public License for more details.
|
||||
##
|
||||
|
||||
import os
|
||||
import sys
|
||||
import socket
|
||||
from common import gajim
|
||||
from common import xmpp
|
||||
|
||||
try:
|
||||
import dbus.glib
|
||||
|
@ -365,7 +361,7 @@ class Zeroconf:
|
|||
self.domain_browser.connect_to_signal('ItemNew', self.new_domain_callback)
|
||||
self.domain_browser.connect_to_signal('Failure', self.error_callback)
|
||||
else:
|
||||
self.browse_domain(self.avahi.IF_UNSPEC, self.avahi.PROTO_UNSPEC, domain)
|
||||
self.browse_domain(self.avahi.IF_UNSPEC, self.avahi.PROTO_UNSPEC, self.domain)
|
||||
|
||||
return True
|
||||
|
||||
|
@ -397,8 +393,6 @@ class Zeroconf:
|
|||
reply_handler=self.service_resolved_all_callback, error_handler=self.error_callback)
|
||||
|
||||
def get_contacts(self):
|
||||
if not jid in self.contacts:
|
||||
return None
|
||||
return self.contacts
|
||||
|
||||
def get_contact(self, jid):
|
||||
|
|
Loading…
Add table
Reference in a new issue