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.
9 from slixmpp
.xmlstream
import ElementBase
, ET
, register_stanza_plugin
12 class Certs(ElementBase
):
14 namespace
= 'urn:xmpp:saslcert:1'
15 plugin_attrib
= 'sasl_certs'
19 class CertItem(ElementBase
):
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'])
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
)
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
)
43 users
= self
.xml
.find('{%s}users' % self
.namespace
)
45 self
.xml
.remove(users
)
48 class AppendCert(ElementBase
):
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
)
59 def set_cert_management(self
, value
):
60 self
.del_cert_management()
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
):
73 namespace
= 'urn:xmpp:saslcert:1'
74 plugin_attrib
= 'sasl_cert_disable'
75 interfaces
= set(['name'])
76 sub_interfaces
= interfaces
79 class RevokeCert(ElementBase
):
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)