Philipp Hörist pushed to branch master at gajim / python-nbxmpp
Commits: 3d567111 by Philipp Hörist at 2019-08-28T20:33:18Z MUC: Improve voice request
- Validate JID on incoming voice requests - Add more data to VoiceRequest - Add approve_voice_request()
- - - - -
2 changed files:
- nbxmpp/modules/muc.py - nbxmpp/structs.py
Changes:
===================================== nbxmpp/modules/muc.py ===================================== @@ -33,6 +33,7 @@ from nbxmpp.protocol import Message from nbxmpp.protocol import DataForm from nbxmpp.protocol import DataField from nbxmpp.protocol import isResultNode +from nbxmpp.protocol import NodeProcessed from nbxmpp.simplexml import Node from nbxmpp.structs import StanzaHandler from nbxmpp.const import InviteType @@ -301,11 +302,28 @@ class MUC: except KeyError: return
- properties.voice_request = VoiceRequest(form=data_form) + nick = data_form['muc#roomnick'].value + + try: + jid = JID(data_form['muc#jid'].value) + except Exception: + log.warning('Invalid JID on voice request') + log.warning(stanza) + raise NodeProcessed + + properties.voice_request = VoiceRequest(jid=jid, + nick=nick, + form=data_form) properties.from_muc = True properties.muc_jid = properties.jid.copy() properties.muc_jid.setBare()
+ def approve_voice_request(self, muc_jid, voice_request): + form = voice_request.form + form.type_ = 'submit' + form['muc#request_allow'].value = True + self._client.send(Message(to=muc_jid, payload=form)) + @call_on_response('_affiliation_received') def get_affiliation(self, jid, affiliation): iq = Iq(typ='get', to=jid, queryNS=NS_MUC_ADMIN)
===================================== nbxmpp/structs.py ===================================== @@ -48,7 +48,7 @@ CaptchaData = namedtuple('CaptchaData', 'form bob_data')
BobData = namedtuple('BobData', 'algo hash_ max_age data cid type')
-VoiceRequest = namedtuple('VoiceRequest', 'form') +VoiceRequest = namedtuple('VoiceRequest', 'form jid nick')
MucUserData = namedtuple('MucUserData', 'affiliation jid nick role actor reason') MucUserData.__new__.__defaults__ = (None, None, None, None, None)
View it on GitLab: https://dev.gajim.org/gajim/python-nbxmpp/commit/3d567111ee1d27b01096fbf4723...