stanza: add a Handshake class and use it in componentxmpp
This commit is contained in:
parent
7057773d18
commit
3bb01de120
3 changed files with 36 additions and 4 deletions
|
@ -10,6 +10,7 @@ import logging
|
|||
import hashlib
|
||||
|
||||
from slixmpp.basexmpp import BaseXMPP
|
||||
from slixmpp.stanza import Handshake
|
||||
from slixmpp.xmlstream import XMLStream
|
||||
from slixmpp.xmlstream import ET
|
||||
from slixmpp.xmlstream.matcher import MatchXPath
|
||||
|
@ -123,9 +124,10 @@ class ComponentXMPP(BaseXMPP):
|
|||
sid = xml.get('id', '')
|
||||
pre_hash = bytes('%s%s' % (sid, self.secret), 'utf-8')
|
||||
|
||||
handshake = ET.Element('{jabber:component:accept}handshake')
|
||||
handshake.text = hashlib.sha1(pre_hash).hexdigest().lower()
|
||||
self.send_xml(handshake)
|
||||
handshake = Handshake()
|
||||
handshake['value'] = hashlib.sha1(pre_hash).hexdigest().lower()
|
||||
|
||||
self.send(handshake)
|
||||
|
||||
def _handle_handshake(self, xml):
|
||||
"""The handshake has been accepted.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
# Slixmpp: The Slick XMPP Library
|
||||
# Copyright (C) 2010 Nathanael C. Fritz
|
||||
# This file is part of Slixmpp.
|
||||
|
@ -10,3 +9,9 @@ from slixmpp.stanza.message import Message
|
|||
from slixmpp.stanza.presence import Presence
|
||||
from slixmpp.stanza.stream_features import StreamFeatures
|
||||
from slixmpp.stanza.stream_error import StreamError
|
||||
from slixmpp.stanza.handshake import Handshake
|
||||
|
||||
__all__ = [
|
||||
'Error', 'Iq', 'Message', 'Presence', 'StreamFeatures', 'StreamError',
|
||||
'Handshake'
|
||||
]
|
||||
|
|
25
slixmpp/stanza/handshake.py
Normal file
25
slixmpp/stanza/handshake.py
Normal file
|
@ -0,0 +1,25 @@
|
|||
# Slixmpp: The Slick XMPP Library
|
||||
# Copyright (C) 2021 Mathieu Pasquet
|
||||
# This file is part of Slixmpp.
|
||||
# See the file LICENSE for copying permission.
|
||||
|
||||
from slixmpp.xmlstream import StanzaBase
|
||||
|
||||
|
||||
class Handshake(StanzaBase):
|
||||
|
||||
"""
|
||||
Jabber Component protocol handshake
|
||||
"""
|
||||
namespace = 'jabber:component:accept'
|
||||
name = 'handshake'
|
||||
interfaces = {'value'}
|
||||
|
||||
def set_value(self, value: str):
|
||||
self.xml.text = value
|
||||
|
||||
def get_value(self) -> str:
|
||||
return self.xml.text
|
||||
|
||||
def del_value(self):
|
||||
self.xml.text = ''
|
Loading…
Reference in a new issue