Dateien nach „slixmpp/plugins/xep_0320“ hochladen

This commit is contained in:
apprenticius 2024-12-27 12:04:53 +00:00
parent 3e0890bdbf
commit 61d16b7585
3 changed files with 98 additions and 0 deletions

View 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)

View 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

View 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