Source code for slixmpp.plugins.xep_0257.stanza


# Slixmpp: The Slick XMPP Library
# Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
# This file is part of Slixmpp.
# See the file LICENSE for copying permission.
from slixmpp.xmlstream import ElementBase, ET, register_stanza_plugin


[docs] class Certs(ElementBase): name = 'items' namespace = 'urn:xmpp:saslcert:1' plugin_attrib = 'sasl_certs' interfaces = set()
[docs] class CertItem(ElementBase): name = 'item' namespace = 'urn:xmpp:saslcert:1' plugin_attrib = 'item' plugin_multi_attrib = 'items' interfaces = {'name', 'x509cert', 'users'} sub_interfaces = {'name', 'x509cert'}
[docs] def get_users(self): resources = self.xml.findall('{%s}users/{%s}resource' % ( self.namespace, self.namespace)) return {res.text for res in resources}
[docs] def set_users(self, values): users = self.xml.find('{%s}users' % self.namespace) if users is None: users = ET.Element('{%s}users' % self.namespace) self.xml.append(users) for resource in values: res = ET.Element('{%s}resource' % self.namespace) res.text = resource users.append(res)
[docs] def del_users(self): users = self.xml.find('{%s}users' % self.namespace) if users is not None: self.xml.remove(users)
[docs] class AppendCert(ElementBase): name = 'append' namespace = 'urn:xmpp:saslcert:1' plugin_attrib = 'sasl_cert_append' interfaces = {'name', 'x509cert', 'cert_management'} sub_interfaces = {'name', 'x509cert'}
[docs] def get_cert_management(self): manage = self.xml.find('{%s}no-cert-management' % self.namespace) return manage is None
[docs] def set_cert_management(self, value): self.del_cert_management() if not value: manage = ET.Element('{%s}no-cert-management' % self.namespace) self.xml.append(manage)
[docs] def del_cert_management(self): manage = self.xml.find('{%s}no-cert-management' % self.namespace) if manage is not None: self.xml.remove(manage)
[docs] class DisableCert(ElementBase): name = 'disable' namespace = 'urn:xmpp:saslcert:1' plugin_attrib = 'sasl_cert_disable' interfaces = {'name'} sub_interfaces = interfaces
[docs] class RevokeCert(ElementBase): name = 'revoke' namespace = 'urn:xmpp:saslcert:1' plugin_attrib = 'sasl_cert_revoke' interfaces = {'name'} sub_interfaces = interfaces
register_stanza_plugin(Certs, CertItem, iterable=True)