@@ -7,6 +7,7 @@
|
||||
"""
|
||||
|
||||
from sleekxmpp.xmlstream.matcher.id import MatcherId
|
||||
from sleekxmpp.xmlstream.matcher.idsender import MatchIDSender
|
||||
from sleekxmpp.xmlstream.matcher.many import MatchMany
|
||||
from sleekxmpp.xmlstream.matcher.stanzapath import StanzaPath
|
||||
from sleekxmpp.xmlstream.matcher.xmlmask import MatchXMLMask
|
||||
|
||||
47
sleekxmpp/xmlstream/matcher/idsender.py
Normal file
47
sleekxmpp/xmlstream/matcher/idsender.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
sleekxmpp.xmlstream.matcher.id
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Part of SleekXMPP: The Sleek XMPP Library
|
||||
|
||||
:copyright: (c) 2011 Nathanael C. Fritz
|
||||
:license: MIT, see LICENSE for more details
|
||||
"""
|
||||
|
||||
from sleekxmpp.xmlstream.matcher.base import MatcherBase
|
||||
|
||||
|
||||
class MatchIDSender(MatcherBase):
|
||||
|
||||
"""
|
||||
The IDSender matcher selects stanzas that have the same stanza 'id'
|
||||
interface value as the desired ID, and that the 'from' value is one
|
||||
of a set of approved entities that can respond to a request.
|
||||
"""
|
||||
|
||||
def match(self, xml):
|
||||
"""Compare the given stanza's ``'id'`` attribute to the stored
|
||||
``id`` value, and verify the sender's JID.
|
||||
|
||||
:param xml: The :class:`~sleekxmpp.xmlstream.stanzabase.ElementBase`
|
||||
stanza to compare against.
|
||||
"""
|
||||
|
||||
selfjid = self._criteria['self']
|
||||
peerjid = self._criteria['peer']
|
||||
|
||||
allowed = {}
|
||||
allowed[''] = True
|
||||
allowed[selfjid.bare] = True
|
||||
allowed[selfjid.host] = True
|
||||
allowed[peerjid.full] = True
|
||||
allowed[peerjid.bare] = True
|
||||
allowed[peerjid.host] = True
|
||||
|
||||
_from = xml['from']
|
||||
|
||||
try:
|
||||
return xml['id'] == self._criteria['id'] and allowed[_from]
|
||||
except KeyError:
|
||||
return False
|
||||
Reference in New Issue
Block a user