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