coding standards

This commit is contained in:
Yann Leboulanger 2012-01-08 20:44:15 +01:00
parent 61a039d894
commit 69544d5f5c

View file

@ -22,7 +22,8 @@ Handles Jingle File Transfer (XEP 0234)
import gajim import gajim
import xmpp import xmpp
from jingle_content import contents, JingleContent from jingle_content import contents, JingleContent
from jingle_transport import JingleTransportICEUDP, JingleTransportSocks5, JingleTransportIBB, TransportType from jingle_transport import JingleTransportICEUDP, JingleTransportSocks5
from jingle_transport import JingleTransportIBB, TransportType
from common import helpers from common import helpers
from common.socks5 import Socks5ReceiverClient, Socks5SenderClient from common.socks5 import Socks5ReceiverClient, Socks5SenderClient
from common.connection_handlers_events import FileRequestReceivedEvent from common.connection_handlers_events import FileRequestReceivedEvent
@ -124,9 +125,9 @@ class JingleFileTransfer(JingleContent):
self.file_props['streamhosts'] = self.transport.remote_candidates self.file_props['streamhosts'] = self.transport.remote_candidates
for host in self.file_props['streamhosts']: for host in self.file_props['streamhosts']:
host['initiator'] = self.session.initiator host['initiator'] = self.session.initiator
host['target'] = self.session.responder host['target'] = self.session.responder
host['sid'] = self.file_props['sid'] host['sid'] = self.file_props['sid']
response = stanza.buildReply('result') response = stanza.buildReply('result')
response.delChild(response.getQuery()) response.delChild(response.getQuery())
@ -135,15 +136,15 @@ class JingleFileTransfer(JingleContent):
if not gajim.socks5queue.get_file_props( if not gajim.socks5queue.get_file_props(
self.session.connection.name, self.file_props['sid']): self.session.connection.name, self.file_props['sid']):
gajim.socks5queue.add_file_props(self.session.connection.name, gajim.socks5queue.add_file_props(self.session.connection.name,
self.file_props) self.file_props)
fingerprint = None fingerprint = None
if self.use_security: if self.use_security:
fingerprint = 'client' fingerprint = 'client'
if self.transport.type == TransportType.SOCKS5: if self.transport.type == TransportType.SOCKS5:
gajim.socks5queue.connect_to_hosts(self.session.connection.name, gajim.socks5queue.connect_to_hosts(self.session.connection.name,
self.file_props['sid'], self.send_candidate_used, self.file_props['sid'], self.send_candidate_used,
self._on_connect_error, fingerprint=fingerprint, self._on_connect_error, fingerprint=fingerprint,
receiving=False) receiving=False)
elif self.transport.type == TransportType.IBB: elif self.transport.type == TransportType.IBB:
self.state = STATE_TRANSFERING self.state = STATE_TRANSFERING
self.__start_IBB_transfer(self.session.connection) self.__start_IBB_transfer(self.session.connection)
@ -213,8 +214,6 @@ class JingleFileTransfer(JingleContent):
else: else:
self.state = STATE_CAND_RECEIVED_PENDING_REPLY self.state = STATE_CAND_RECEIVED_PENDING_REPLY
def __on_iq_result(self, stanza, content, error, action): def __on_iq_result(self, stanza, content, error, action):
log.info("__on_iq_result") log.info("__on_iq_result")
@ -224,7 +223,7 @@ class JingleFileTransfer(JingleContent):
self.file_props self.file_props
# Listen on configured port for file transfer # Listen on configured port for file transfer
self._listen_host() self._listen_host()
elif not self.weinitiate and self.state == STATE_NOT_STARTED: elif not self.weinitiate and self.state == STATE_NOT_STARTED:
# session-accept iq-result # session-accept iq-result
if not self.negotiated: if not self.negotiated:
@ -255,22 +254,21 @@ class JingleFileTransfer(JingleContent):
return return
# initiate transfer # initiate transfer
self.start_transfer() self.start_transfer()
def __start_IBB_transfer(self, con): def __start_IBB_transfer(self, con):
con.files_props[self.file_props['sid']] = self.file_props con.files_props[self.file_props['sid']] = self.file_props
fp = open(self.file_props['file-name'], 'r') fp = open(self.file_props['file-name'], 'r')
con.OpenStream( self.transport.sid, self.session.peerjid, con.OpenStream( self.transport.sid, self.session.peerjid, fp,
fp, blocksize=4096) blocksize=4096)
def __transport_setup(self, stanza=None, content=None, error=None def __transport_setup(self, stanza=None, content=None, error=None,
, action=None): action=None):
# Sets up a few transport specific things for the file transfer # Sets up a few transport specific things for the file transfer
if self.transport.type == TransportType.SOCKS5: if self.transport.type == TransportType.SOCKS5:
self._listen_host() self._listen_host()
if self.transport.type == TransportType.IBB: if self.transport.type == TransportType.IBB:
self.state = STATE_TRANSFERING self.state = STATE_TRANSFERING
def send_candidate_used(self, streamhost): def send_candidate_used(self, streamhost):
""" """
@ -302,7 +300,6 @@ class JingleFileTransfer(JingleContent):
self.session.send_transport_info(content) self.session.send_transport_info(content)
def _on_connect_error(self, sid): def _on_connect_error(self, sid):
self.nominated_cand['our-cand'] = False self.nominated_cand['our-cand'] = False
self.send_error_candidate() self.send_error_candidate()
@ -312,7 +309,6 @@ class JingleFileTransfer(JingleContent):
else: else:
self.state = STATE_CAND_SENT_PENDING_REPLY self.state = STATE_CAND_SENT_PENDING_REPLY
log.info('connect error, sid=' + sid) log.info('connect error, sid=' + sid)
def _fill_content(self, content): def _fill_content(self, content):
@ -346,11 +342,10 @@ class JingleFileTransfer(JingleContent):
self.file_props['hash'] = hash_id self.file_props['hash'] = hash_id
def _listen_host(self): def _listen_host(self):
receiver = self.file_props['receiver'] receiver = self.file_props['receiver']
sender = self.file_props['sender'] sender = self.file_props['sender']
sha_str = helpers.get_auth_sha(self.file_props['sid'], sender, sha_str = helpers.get_auth_sha(self.file_props['sid'], sender,
receiver) receiver)
self.file_props['sha_str'] = sha_str self.file_props['sha_str'] = sha_str
port = gajim.config.get('file_transfers_port') port = gajim.config.get('file_transfers_port')
@ -361,22 +356,22 @@ class JingleFileTransfer(JingleContent):
if self.weinitiate: if self.weinitiate:
listener = gajim.socks5queue.start_listener(port, sha_str, listener = gajim.socks5queue.start_listener(port, sha_str,
self._store_socks5_sid, self.file_props, self._store_socks5_sid, self.file_props,
fingerprint=fingerprint, type='sender') fingerprint=fingerprint, type='sender')
else: else:
listener = gajim.socks5queue.start_listener(port, sha_str, listener = gajim.socks5queue.start_listener(port, sha_str,
self._store_socks5_sid, self.file_props, self._store_socks5_sid, self.file_props,
fingerprint=fingerprint, type='receiver') fingerprint=fingerprint, type='receiver')
if not listener: if not listener:
# send error message, notify the user # send error message, notify the user
return return
def isOurCandUsed(self): def isOurCandUsed(self):
''' '''
If this method returns true then the candidate we nominated will be If this method returns true then the candidate we nominated will be
used, if false, the candidate nominated by peer will be used used, if false, the candidate nominated by peer will be used
''' '''
if self.nominated_cand['peer-cand'] == False: if self.nominated_cand['peer-cand'] == False:
return True return True
if self.nominated_cand['our-cand'] == False: if self.nominated_cand['our-cand'] == False:
@ -390,11 +385,9 @@ class JingleFileTransfer(JingleContent):
else: else:
return self.weinitiate return self.weinitiate
def start_transfer(self): def start_transfer(self):
self.state = STATE_TRANSFERING self.state = STATE_TRANSFERING
# It tells wether we start the transfer as client or server # It tells wether we start the transfer as client or server
mode = None mode = None
@ -404,7 +397,7 @@ class JingleFileTransfer(JingleContent):
else: else:
mode = 'server' mode = 'server'
streamhost_used = self.nominated_cand['peer-cand'] streamhost_used = self.nominated_cand['peer-cand']
if streamhost_used['type'] == 'proxy': if streamhost_used['type'] == 'proxy':
self.file_props['is_a_proxy'] = True self.file_props['is_a_proxy'] = True
if self.weinitiate: if self.weinitiate:
@ -428,7 +421,7 @@ class JingleFileTransfer(JingleContent):
s[sender].connected: s[sender].connected:
return return
if streamhost_used['type'] == 'proxy': if streamhost_used['type'] == 'proxy':
self.file_props['streamhost-used'] = True self.file_props['streamhost-used'] = True
streamhost_used['sid'] = self.file_props['sid'] streamhost_used['sid'] = self.file_props['sid']
self.file_props['streamhosts'] = [] self.file_props['streamhosts'] = []
@ -440,21 +433,18 @@ class JingleFileTransfer(JingleContent):
gajim.socks5queue.idx += 1 gajim.socks5queue.idx += 1
idx = gajim.socks5queue.idx idx = gajim.socks5queue.idx
sockobj = Socks5SenderClient(gajim.idlequeue, idx, sockobj = Socks5SenderClient(gajim.idlequeue, idx,
gajim.socks5queue, gajim.socks5queue, _sock=None,
_sock=None, host=str(streamhost_used['host']),
host=str(streamhost_used['host']), port=int(streamhost_used['port']), fingerprint=None,
port=int(streamhost_used['port']), connected=False, file_props=self.file_props)
fingerprint=None,
connected=False,
file_props=self.file_props)
else: else:
sockobj = Socks5ReceiverClient(gajim.idlequeue, streamhost_used, sockobj = Socks5ReceiverClient(gajim.idlequeue, streamhost_used,
sid=self.file_props['sid'], sid=self.file_props['sid'],
file_props=self.file_props, fingerprint=None) file_props=self.file_props, fingerprint=None)
sockobj.proxy = True sockobj.proxy = True
sockobj.streamhost = streamhost_used sockobj.streamhost = streamhost_used
gajim.socks5queue.add_sockobj(self.session.connection.name, gajim.socks5queue.add_sockobj(self.session.connection.name,
sockobj, 'sender') sockobj, 'sender')
streamhost_used['idx'] = sockobj.queue_idx streamhost_used['idx'] = sockobj.queue_idx
# If we offered the nominated candidate used, we activate # If we offered the nominated candidate used, we activate
# the proxy # the proxy