/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to mandos-monitor

  • Committer: teddy at recompile
  • Date: 2020-01-12 01:42:09 UTC
  • mto: This revision was merged to the branch mainline in revision 396.
  • Revision ID: teddy@recompile.se-20200112014209-ktr3acloxzbmhbnt
mandos-ctl: Add DBussy support

Add support in mandos-ctl for the "DBussy" Python D-Bus module.  Use
it by default, if it is available.

* mandos-ctl: Try to import the "dbussy" and its high-level module
  "ravel".
  (main): Use DBussy if import succeeded.
  (dbussy_adapter): New.
  (Test_dbussy_adapter_SystemBus): New test class.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
#
24
24
# Contact the authors at <mandos@recompile.se>.
25
25
#
 
26
 
26
27
from __future__ import (division, absolute_import, print_function,
27
28
                        unicode_literals)
28
 
 
29
29
try:
30
30
    from future_builtins import *
31
31
except ImportError:
32
32
    pass
33
33
 
34
34
import sys
35
 
import logging
36
35
import os
37
36
import warnings
38
37
import datetime
39
38
import locale
 
39
import logging
40
40
 
41
41
import urwid.curses_display
42
42
import urwid
49
49
if sys.version_info.major == 2:
50
50
    __metaclass__ = type
51
51
    str = unicode
52
 
    input = raw_input
53
 
 
54
 
# Show warnings by default
55
 
if not sys.warnoptions:
56
 
    warnings.simplefilter("default")
57
52
 
58
53
log = logging.getLogger(os.path.basename(sys.argv[0]))
59
54
logging.basicConfig(level="NOTSET", # Show all messages
64
59
locale.setlocale(locale.LC_ALL, "")
65
60
 
66
61
logging.getLogger("dbus.proxies").setLevel(logging.CRITICAL)
67
 
logging.getLogger("urwid").setLevel(logging.INFO)
68
62
 
69
63
# Some useful constants
70
64
domain = "se.recompile"
71
65
server_interface = domain + ".Mandos"
72
66
client_interface = domain + ".Mandos.Client"
73
 
version = "1.8.18"
 
67
version = "1.8.9"
74
68
 
75
69
try:
76
70
    dbus.OBJECT_MANAGER_IFACE
128
122
        self.property_changed_match.remove()
129
123
 
130
124
 
131
 
class MandosClientWidget(MandosClientPropertyCache, urwid.Widget):
 
125
class MandosClientWidget(urwid.FlowWidget, MandosClientPropertyCache):
132
126
    """A Mandos Client which is visible on the screen.
133
127
    """
134
128
 
135
 
    _sizing = frozenset(["flow"])
136
 
 
137
129
    def __init__(self, server_proxy_object=None, update_hook=None,
138
130
                 delete_hook=None, **kwargs):
139
131
        # Called on update
228
220
 
229
221
    def selectable(self):
230
222
        """Make this a "selectable" widget.
231
 
        This overrides the method from urwid.Widget."""
 
223
        This overrides the method from urwid.FlowWidget."""
232
224
        return True
233
225
 
234
226
    def rows(self, maxcolrow, focus=False):
235
227
        """How many rows this widget will occupy might depend on
236
228
        whether we have focus or not.
237
 
        This overrides the method from urwid.Widget"""
 
229
        This overrides the method from urwid.FlowWidget"""
238
230
        return self.current_widget(focus).rows(maxcolrow, focus=focus)
239
231
 
240
232
    def current_widget(self, focus=False):
332
324
 
333
325
    def render(self, maxcolrow, focus=False):
334
326
        """Render differently if we have focus.
335
 
        This overrides the method from urwid.Widget"""
 
327
        This overrides the method from urwid.FlowWidget"""
336
328
        return self.current_widget(focus).render(maxcolrow,
337
329
                                                 focus=focus)
338
330
 
339
331
    def keypress(self, maxcolrow, key):
340
332
        """Handle keys.
341
 
        This overrides the method from urwid.Widget"""
 
333
        This overrides the method from urwid.FlowWidget"""
342
334
        if key == "+":
343
335
            self.proxy.Set(client_interface, "Enabled",
344
336
                           dbus.Boolean(True), ignore_reply=True,