Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
Source code for slixmpp.plugins.xep_0258.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 base64 import b64encode , b64decode
from slixmpp import JID
from slixmpp.util import bytes
from slixmpp.xmlstream import ElementBase , ET , register_stanza_plugin
[docs]
class SecurityLabel ( ElementBase ):
name = 'securitylabel'
namespace = 'urn:xmpp:sec-label:0'
plugin_attrib = 'security_label'
[docs]
def add_equivalent ( self , label ):
equiv = EquivalentLabel ( parent = self )
equiv . append ( label )
return equiv
[docs]
class Label ( ElementBase ):
name = 'label'
namespace = 'urn:xmpp:sec-label:0'
plugin_attrib = 'label'
[docs]
class DisplayMarking ( ElementBase ):
name = 'displaymarking'
namespace = 'urn:xmpp:sec-label:0'
plugin_attrib = 'display_marking'
interfaces = { 'fgcolor' , 'bgcolor' , 'value' }
[docs]
def get_fgcolor ( self ):
return self . _get_attr ( 'fgcolor' , 'black' )
[docs]
def get_bgcolor ( self ):
return self . _get_attr ( 'fgcolor' , 'white' )
[docs]
def get_value ( self ):
return self . xml . text
[docs]
def set_value ( self , value ):
self . xml . text = value
[docs]
def del_value ( self ):
self . xml . text = ''
[docs]
class EquivalentLabel ( ElementBase ):
name = 'equivalentlabel'
namespace = 'urn:xmpp:sec-label:0'
plugin_attrib = 'equivalent_label'
plugin_multi_attrib = 'equivalent_labels'
[docs]
class Catalog ( ElementBase ):
name = 'catalog'
namespace = 'urn:xmpp:sec-label:catalog:2'
plugin_attrib = 'security_label_catalog'
interfaces = { 'to' , 'from' , 'name' , 'desc' , 'id' , 'size' , 'restrict' }
[docs]
def get_to ( self ):
return JID ( self . _get_attr ( 'to' ))
pass
[docs]
def set_to ( self , value ):
return self . _set_attr ( 'to' , str ( value ))
[docs]
def get_from ( self ):
return JID ( self . _get_attr ( 'from' ))
[docs]
def set_from ( self , value ):
return self . _set_attr ( 'from' , str ( value ))
[docs]
def get_restrict ( self ):
value = self . _get_attr ( 'restrict' , '' )
if value and value . lower () in ( 'true' , '1' ):
return True
return False
[docs]
def set_restrict ( self , value ):
self . _del_attr ( 'restrict' )
if value :
self . _set_attr ( 'restrict' , 'true' )
elif value is False :
self . _set_attr ( 'restrict' , 'false' )
[docs]
class CatalogItem ( ElementBase ):
name = 'catalog'
namespace = 'urn:xmpp:sec-label:catalog:2'
plugin_attrib = 'item'
plugin_multi_attrib = 'items'
interfaces = { 'selector' , 'default' }
[docs]
def get_default ( self ):
value = self . _get_attr ( 'default' , '' )
if value . lower () in ( 'true' , '1' ):
return True
return False
[docs]
def set_default ( self , value ):
self . _del_attr ( 'default' )
if value :
self . _set_attr ( 'default' , 'true' )
elif value is False :
self . _set_attr ( 'default' , 'false' )
[docs]
class ESSLabel ( ElementBase ):
name = 'esssecuritylabel'
namespace = 'urn:xmpp:sec-label:ess:0'
plugin_attrib = 'ess'
interfaces = { 'value' }
[docs]
def get_value ( self ):
if self . xml . text :
return b64decode ( bytes ( self . xml . text ))
return ''
[docs]
def set_value ( self , value ):
self . xml . text = ''
if value :
self . xml . text = b64encode ( bytes ( value ))
[docs]
def del_value ( self ):
self . xml . text = ''
register_stanza_plugin ( Catalog , CatalogItem , iterable = True )
register_stanza_plugin ( CatalogItem , SecurityLabel )
register_stanza_plugin ( EquivalentLabel , ESSLabel )
register_stanza_plugin ( Label , ESSLabel )
register_stanza_plugin ( SecurityLabel , DisplayMarking )
register_stanza_plugin ( SecurityLabel , EquivalentLabel , iterable = True )
register_stanza_plugin ( SecurityLabel , Label )