Dateien nach „slixmpp/plugins/xep_0320“ hochladen
This commit is contained in:
parent
3e0890bdbf
commit
61d16b7585
11
slixmpp/plugins/xep_0320/__init__.py
Normal file
11
slixmpp/plugins/xep_0320/__init__.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# slixmpp: The Slick XMPP Library
|
||||||
|
# Copyright (C) 2020 Emmanuel Gil Peyrot
|
||||||
|
# This file is part of slixmpp.
|
||||||
|
# See the file LICENSE for copying permission.
|
||||||
|
|
||||||
|
from slixmpp.plugins.base import register_plugin
|
||||||
|
|
||||||
|
from slixmpp.plugins.xep_0320.stanza import Fingerprint
|
||||||
|
from slixmpp.plugins.xep_0320.fingerprint import XEP_0320
|
||||||
|
|
||||||
|
register_plugin(XEP_0320)
|
65
slixmpp/plugins/xep_0320/fingerprint.py
Normal file
65
slixmpp/plugins/xep_0320/fingerprint.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# slixmpp: The Slick XMPP Library
|
||||||
|
# Copyright (C) 2020 Emmanuel Gil Peyrot
|
||||||
|
# This file is part of slixmpp.
|
||||||
|
# See the file LICENSE for copying permission.
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from typing import Iterable, Tuple, Optional
|
||||||
|
|
||||||
|
from slixmpp import JID, Iq
|
||||||
|
from slixmpp.plugins import BasePlugin
|
||||||
|
from slixmpp.xmlstream import register_stanza_plugin
|
||||||
|
from slixmpp.xmlstream.handler import Callback
|
||||||
|
from slixmpp.xmlstream.matcher import StanzaPath
|
||||||
|
from slixmpp.plugins.xep_0166 import Jingle, Content
|
||||||
|
from slixmpp.plugins.xep_0176 import Transport
|
||||||
|
from slixmpp.plugins.xep_0320 import stanza, Fingerprint
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class XEP_0320(BasePlugin):
|
||||||
|
|
||||||
|
name = 'xep_0320'
|
||||||
|
description = 'XEP-0320: DTLS-SRTP fingerprint'
|
||||||
|
dependencies = set(['xep_0166','xep_0176'])
|
||||||
|
stanza = stanza
|
||||||
|
|
||||||
|
def plugin_init(self):
|
||||||
|
register_stanza_plugin(Iq,Jingle)
|
||||||
|
register_stanza_plugin(Jingle,Content)
|
||||||
|
register_stanza_plugin(Content,Transport)
|
||||||
|
register_stanza_plugin(Transport,Fingerprint)
|
||||||
|
|
||||||
|
self.xmpp.register_handler(
|
||||||
|
Callback('Jingle Content Transport Fingerprint',
|
||||||
|
StanzaPath('iq/jingle/content/transport/fingerprint'),
|
||||||
|
self._handle_jingle_content_transport_fingerprint))
|
||||||
|
|
||||||
|
# def session_bind(self, jid):
|
||||||
|
# pass
|
||||||
|
|
||||||
|
# def plugin_end(self):
|
||||||
|
# pass
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
def _handle_jingle_content_transport_fingerprint(self, message):
|
||||||
|
self.xmpp.event('jingle_content_transport_fingerprint', message['jingle']['content']['transport']['fingerprint'])
|
||||||
|
|
||||||
|
# a=fingerprint:hash-func fingerprint
|
||||||
|
# a=setup:role
|
||||||
|
def make_fingerprint(self,sdp):
|
||||||
|
m = re.search(r'^a=fingerprint:(\S+) +([^\r]+)\r$',sdp,re.M)
|
||||||
|
if m:
|
||||||
|
fingerprint = Fingerprint()
|
||||||
|
fingerprint['hash'] = m.group(1)
|
||||||
|
fingerprint.xml.text = m.group(2)
|
||||||
|
m = re.search(r'^a=setup:([^\r]+)\r$',sdp,re.M)
|
||||||
|
if m:
|
||||||
|
fingerprint['setup'] = m.group(1)
|
||||||
|
return fingerprint
|
||||||
|
return None
|
22
slixmpp/plugins/xep_0320/stanza.py
Normal file
22
slixmpp/plugins/xep_0320/stanza.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# slixmpp: The Slick XMPP Library
|
||||||
|
# Copyright (C) 2020 Emmanuel Gil Peyrot
|
||||||
|
# This file is part of slixmpp.
|
||||||
|
# See the file LICENSE for copying permission.
|
||||||
|
|
||||||
|
from typing import Iterable, List, Tuple, Optional
|
||||||
|
from slixmpp.xmlstream import ElementBase, ET
|
||||||
|
|
||||||
|
class Fingerprint(ElementBase):
|
||||||
|
name = 'fingerprint'
|
||||||
|
namespace = 'urn:xmpp:jingle:apps:dtls:0'
|
||||||
|
plugin_attrib = 'fingerprint'
|
||||||
|
interfaces = {'hash','setup'}
|
||||||
|
sub_interfaces = {}
|
||||||
|
|
||||||
|
def getFingerprint(self):
|
||||||
|
return self.xml.text
|
||||||
|
|
||||||
|
def getSDP(self):
|
||||||
|
ret = '\r\na=fingerprint:'+self['hash']+' '+ self.xml.text
|
||||||
|
ret += '\r\na=setup:'+self['setup']
|
||||||
|
return ret
|
Loading…
x
Reference in New Issue
Block a user