Table Of Contents

Previous topic

10.1.1.3. UserList data injection

Next topic

12. About us

11. Plugin base functions

11.3. lazy_property

plugin_base.lazy_property()

The @lazy_property decorator is used to mark attributes that should only be evaluated when accessed. This is useful when the calculation of the attribute is heavy, but not always necessary.

Usage

To use self.foobar as a lazy property, simply define it on the Plugin class, and decorate it with @lazy_property decorator:

from safeguard.sessions.plugin import AAPlugin
from safeguard.sessions.plugin.plugin_base import lazy_property

class MyPlugin(AAPlugin):
    @lazy_property
    def foobar(self):
        return calculate_answer()

    def do_authenticate(self):
        if need_foobar:
            print(self.foobar)

11.5. PluginBase

class safeguard.sessions.plugin.plugin_base.PluginBase(configuration, defaults=None, logger=None)

The PluginBase class is a common base class for every kind of plugins. This class is not meant to be used directly.

PLUGIN_NAME

The cls.PLUGIN_NAME class attribute will be used to prefix any logs that the plugin emits. It should be set by the plugin developer to identify the plugin in the system logs.

from safeguard.sessions.plugin.plugin_base import PluginBase

class SimplePlugin(PluginBase):
    PLUGIN_NAME="SimplePlugin"
cookie

The self.cookie attribute is a dict that retains its contents between invocations of plugin hooks of the same plugin instance. This is the way to pass data between these functions.

The self.session_cookie is similar to self.cookie, but it is also visible in other plugins in the same session.

plugin_configuration

The self.plugin_configuration attribute provides access to the plugin configuration via the PluginConfiguration class.

logger

The self.logger attribute should be used to access Python logging. Its log level is set up from the plugin configuration.

https_proxy_server

The self.https_proxy_server attribute contains the IP address or hostname of the HTTPS proxy which is set either system wide or in the plugin configuration via the https_proxy section.

https_proxy_port

The self.https_proxy_port attribute contains the port number of the HTTPS proxy which is set either system wide or in the plugin configuration via the https_proxy section.

https_proxy_username

The self.https_proxy_username attribute contains the basic authentication username of the HTTPS proxy which is set either system wide or in the plugin configuration via the https_proxy section.

https_proxy_password

The self.https_proxy_password attribute contains the basic authentication password of the HTTPS proxy which is set either system wide or in the plugin configuration via the https_proxy section.

proxy_settings

The self.proxy_settings attribute is a dictionary of the HTTPS settings.

box_configuration

The self.box_configuration attribute provides access to system settings.

The __init__() constructor method parses the configuration and sets up logging and http proxy environment variables.