if the peer supports jingle XTLS, send session-initiate with security element
This commit is contained in:
parent
4583482246
commit
30cbdce234
|
@ -36,6 +36,7 @@ import helpers
|
||||||
from jingle_session import JingleSession, JingleStates
|
from jingle_session import JingleSession, JingleStates
|
||||||
from jingle_rtp import JingleAudio, JingleVideo
|
from jingle_rtp import JingleAudio, JingleVideo
|
||||||
from jingle_ft import JingleFileTransfer
|
from jingle_ft import JingleFileTransfer
|
||||||
|
import gajim
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger('gajim.c.jingle')
|
logger = logging.getLogger('gajim.c.jingle')
|
||||||
|
@ -140,14 +141,26 @@ class ConnectionJingle(object):
|
||||||
def start_file_transfer(self, jid, file_props):
|
def start_file_transfer(self, jid, file_props):
|
||||||
logger.info("start file transfer with file: %s" % file_props)
|
logger.info("start file transfer with file: %s" % file_props)
|
||||||
jingle = self.get_jingle_session(jid, media='file')
|
jingle = self.get_jingle_session(jid, media='file')
|
||||||
|
contact = gajim.contacts.get_contact_with_highest_priority(self.name,
|
||||||
|
gajim.get_jid_without_resource(jid))
|
||||||
|
if contact is None:
|
||||||
|
return
|
||||||
|
if contact.supports(xmpp.NS_JINGLE_XTLS):
|
||||||
|
use_security = True
|
||||||
|
else:
|
||||||
|
use_security = False
|
||||||
if jingle:
|
if jingle:
|
||||||
file_props['sid'] = jingle.sid
|
file_props['sid'] = jingle.sid
|
||||||
jingle.add_content('file', JingleFileTransfer(jingle, file_props))
|
jingle.add_content('file',
|
||||||
|
JingleFileTransfer(jingle, file_props = file_props, use_security=use_security)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
jingle = JingleSession(self, weinitiate=True, jid=jid)
|
jingle = JingleSession(self, weinitiate=True, jid=jid)
|
||||||
self.__sessions[jingle.sid] = jingle
|
self.__sessions[jingle.sid] = jingle
|
||||||
file_props['sid'] = jingle.sid
|
file_props['sid'] = jingle.sid
|
||||||
jingle.add_content('file', JingleFileTransfer(jingle, file_props=file_props))
|
jingle.add_content('file',
|
||||||
|
JingleFileTransfer(jingle, file_props=file_props, use_security=use_security)
|
||||||
|
)
|
||||||
jingle.start_session()
|
jingle.start_session()
|
||||||
return jingle.sid
|
return jingle.sid
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ STATE_TRANSPORT_INFO = 3
|
||||||
STATE_PROXY_ACTIVATED = 4
|
STATE_PROXY_ACTIVATED = 4
|
||||||
|
|
||||||
class JingleFileTransfer(JingleContent):
|
class JingleFileTransfer(JingleContent):
|
||||||
def __init__(self, session, transport=None, file_props=None):
|
def __init__(self, session, transport=None, file_props=None, use_security=False):
|
||||||
JingleContent.__init__(self, session, transport)
|
JingleContent.__init__(self, session, transport)
|
||||||
|
|
||||||
log.info("transport value: %s" % transport)
|
log.info("transport value: %s" % transport)
|
||||||
|
@ -54,6 +54,8 @@ class JingleFileTransfer(JingleContent):
|
||||||
|
|
||||||
self.state = STATE_NOT_STARTED
|
self.state = STATE_NOT_STARTED
|
||||||
|
|
||||||
|
self.use_security = use_security
|
||||||
|
|
||||||
self.file_props = file_props
|
self.file_props = file_props
|
||||||
if file_props is None:
|
if file_props is None:
|
||||||
self.weinitiate = False
|
self.weinitiate = False
|
||||||
|
@ -246,6 +248,15 @@ class JingleFileTransfer(JingleContent):
|
||||||
desc.setData(self.file_props['desc'])
|
desc.setData(self.file_props['desc'])
|
||||||
|
|
||||||
description_node.addChild(node=sioffer)
|
description_node.addChild(node=sioffer)
|
||||||
|
|
||||||
|
if self.use_security:
|
||||||
|
security = xmpp.simplexml.Node(tag=xmpp.NS_JINGLE_XTLS + ' security')
|
||||||
|
# TODO: add fingerprint element
|
||||||
|
for m in ('x509', ): # supported authentication methods
|
||||||
|
method = xmpp.simplexml.Node(tag='method')
|
||||||
|
method.setAttr('name', m)
|
||||||
|
security.addChild(node=method)
|
||||||
|
content.addChild(node=security)
|
||||||
|
|
||||||
content.addChild(node=description_node)
|
content.addChild(node=description_node)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue