fix some small things. Thanks, pyflakes. Fix #2684

This commit is contained in:
Stefan Bethge 2006-11-20 21:02:15 +00:00
parent fc7bd37634
commit 720b190db8
5 changed files with 7 additions and 225 deletions

View file

@ -250,7 +250,6 @@ class P2PClient(IdleObject):
common.xmpp.NS_BYTESTREAM) common.xmpp.NS_BYTESTREAM)
class P2PConnection(IdleObject, PlugIn): 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): def __init__(self, sock_hash, _sock, host = None, port = None, caller = None, on_connect = None, client = None):
IdleObject.__init__(self) IdleObject.__init__(self)
self._owner = client self._owner = client

View file

@ -18,16 +18,12 @@
## GNU General Public License for more details. ## GNU General Public License for more details.
## ##
import os
import time import time
import base64
import sha
import socket import socket
import sys
from calendar import timegm from calendar import timegm
#import socks5 from common import socks5
import common.xmpp import common.xmpp
from common import GnuPG from common import GnuPG
@ -518,173 +514,8 @@ class ConnectionBytestream:
self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, '')) self.dispatch('FILE_REQUEST_ERROR', (jid, file_props, ''))
raise common.xmpp.NodeProcessed raise common.xmpp.NodeProcessed
class ConnectionHandlersZeroconf(ConnectionBytestream):
class ConnectionVcard:
def __init__(self): 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) ConnectionBytestream.__init__(self)
# List of IDs we are waiting answers for {id: (type_of_request, data), } # List of IDs we are waiting answers for {id: (type_of_request, data), }
self.awaiting_answers = {} self.awaiting_answers = {}
@ -790,15 +621,6 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream):
self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal', self.dispatch('MSG', (frm, msgtxt, tim, encrypted, 'normal',
subject, chatstate, msg_id, composing_jep, user_nick)) subject, chatstate, msg_id, composing_jep, user_nick))
# END messageCB # 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): def parse_data_form(self, node):
dic = {} dic = {}
@ -863,44 +685,14 @@ class ConnectionHandlersZeroconf(ConnectionVcard, ConnectionBytestream):
# serverside metacontacts are not supported with zeroconf # serverside metacontacts are not supported with zeroconf
# (there is no server) # (there is no server)
pass pass
def remove_transfers_for_contact(self, contact): def remove_transfers_for_contact(self, contact):
''' stop all active transfer for 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 pass
def remove_all_transfers(self): def remove_all_transfers(self):
''' stops and removes all active connections from the socks5 pool ''' ''' 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 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: def remove_transfer(self, file_props, remove_from_list = True):
if self.files_props.has_key('sid'):
del(self.files_props['sid'])
'''
pass pass

View file

@ -37,12 +37,9 @@ if os.name != 'nt':
signal.signal(signal.SIGPIPE, signal.SIG_DFL) signal.signal(signal.SIGPIPE, signal.SIG_DFL)
import getpass import getpass
import gobject import gobject
import notify
from common import helpers
from common import gajim from common import gajim
from common import GnuPG from common import GnuPG
from common.zeroconf import connection_handlers_zeroconf
from common.zeroconf import client_zeroconf from common.zeroconf import client_zeroconf
from connection_handlers_zeroconf import * from connection_handlers_zeroconf import *

View file

@ -134,7 +134,7 @@ class Roster:
def getShow(self, jid): def getShow(self, jid):
#print 'roster_zeroconf.py: getShow' #print 'roster_zeroconf.py: getShow'
return getStatus(jid) return self.getStatus(jid)
def getPriority(jid): def getPriority(jid):
return 5 return 5

View file

@ -12,11 +12,7 @@
## GNU General Public License for more details. ## GNU General Public License for more details.
## ##
import os
import sys
import socket
from common import gajim from common import gajim
from common import xmpp
try: try:
import dbus.glib 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('ItemNew', self.new_domain_callback)
self.domain_browser.connect_to_signal('Failure', self.error_callback) self.domain_browser.connect_to_signal('Failure', self.error_callback)
else: 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 return True
@ -397,8 +393,6 @@ class Zeroconf:
reply_handler=self.service_resolved_all_callback, error_handler=self.error_callback) reply_handler=self.service_resolved_all_callback, error_handler=self.error_callback)
def get_contacts(self): def get_contacts(self):
if not jid in self.contacts:
return None
return self.contacts return self.contacts
def get_contact(self, jid): def get_contact(self, jid):