Rename to slixmpp
[slixmpp.git] / slixmpp / plugins / xep_0257 / stanza.py
blob7c2da74393238d38d7db3a5dd53939ea5b115352
1 """
2 Slixmpp: The Slick XMPP Library
3 Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
4 This file is part of Slixmpp.
6 See the file LICENSE for copying permission.
7 """
9 from slixmpp.xmlstream import ElementBase, ET, register_stanza_plugin
12 class Certs(ElementBase):
13 name = 'query'
14 namespace = 'urn:xmpp:saslcert:1'
15 plugin_attrib = 'sasl_certs'
16 interfaces = set()
19 class CertItem(ElementBase):
20 name = 'item'
21 namespace = 'urn:xmpp:saslcert:1'
22 plugin_attrib = 'item'
23 plugin_multi_attrib = 'items'
24 interfaces = set(['name', 'x509cert', 'users'])
25 sub_interfaces = set(['name', 'x509cert'])
27 def get_users(self):
28 resources = self.xml.findall('{%s}users/{%s}resource' % (
29 self.namespace, self.namespace))
30 return set([res.text for res in resources])
32 def set_users(self, values):
33 users = self.xml.find('{%s}users' % self.namespace)
34 if users is None:
35 users = ET.Element('{%s}users' % self.namespace)
36 self.xml.append(users)
37 for resource in values:
38 res = ET.Element('{%s}resource' % self.namespace)
39 res.text = resource
40 users.append(res)
42 def del_users(self):
43 users = self.xml.find('{%s}users' % self.namespace)
44 if users is not None:
45 self.xml.remove(users)
48 class AppendCert(ElementBase):
49 name = 'append'
50 namespace = 'urn:xmpp:saslcert:1'
51 plugin_attrib = 'sasl_cert_append'
52 interfaces = set(['name', 'x509cert', 'cert_management'])
53 sub_interfaces = set(['name', 'x509cert'])
55 def get_cert_management(self):
56 manage = self.xml.find('{%s}no-cert-management' % self.namespace)
57 return manage is None
59 def set_cert_management(self, value):
60 self.del_cert_management()
61 if not value:
62 manage = ET.Element('{%s}no-cert-management' % self.namespace)
63 self.xml.append(manage)
65 def del_cert_management(self):
66 manage = self.xml.find('{%s}no-cert-management' % self.namespace)
67 if manage is not None:
68 self.xml.remove(manage)
71 class DisableCert(ElementBase):
72 name = 'disable'
73 namespace = 'urn:xmpp:saslcert:1'
74 plugin_attrib = 'sasl_cert_disable'
75 interfaces = set(['name'])
76 sub_interfaces = interfaces
79 class RevokeCert(ElementBase):
80 name = 'revoke'
81 namespace = 'urn:xmpp:saslcert:1'
82 plugin_attrib = 'sasl_cert_revoke'
83 interfaces = set(['name'])
84 sub_interfaces = interfaces
87 register_stanza_plugin(Certs, CertItem, iterable=True)