/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 Hogeborn
  • Date: 2019-09-03 18:43:11 UTC
  • mto: This revision was merged to the branch mainline in revision 392.
  • Revision ID: teddy@recompile.se-20190903184311-zr795sh32mmq2drk
mandos: Only join() still running checker processes

* mandos (Client.checker_callback): Only do .join() on checker if it
                                    is not None.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/python
 
1
#!/usr/bin/python3 -bb
2
2
# -*- mode: python; coding: utf-8 -*-
3
3
#
4
4
# Mandos Monitor - Control and monitor the Mandos server
5
5
#
6
 
# Copyright © 2009-2016 Teddy Hogeborn
7
 
# Copyright © 2009-2016 Björn Påhlsson
8
 
#
9
 
# This program is free software: you can redistribute it and/or modify
10
 
# it under the terms of the GNU General Public License as published by
 
6
# Copyright © 2009-2019 Teddy Hogeborn
 
7
# Copyright © 2009-2019 Björn Påhlsson
 
8
#
 
9
# This file is part of Mandos.
 
10
#
 
11
# Mandos is free software: you can redistribute it and/or modify it
 
12
# under the terms of the GNU General Public License as published by
11
13
# the Free Software Foundation, either version 3 of the License, or
12
14
# (at your option) any later version.
13
15
#
14
 
#     This program is distributed in the hope that it will be useful,
15
 
#     but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
#     Mandos is distributed in the hope that it will be useful, but
 
17
#     WITHOUT ANY WARRANTY; without even the implied warranty of
16
18
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
19
#     GNU General Public License for more details.
18
20
#
19
21
# You should have received a copy of the GNU General Public License
20
 
# along with this program.  If not, see
21
 
# <http://www.gnu.org/licenses/>.
 
22
# along with Mandos.  If not, see <http://www.gnu.org/licenses/>.
22
23
#
23
24
# Contact the authors at <mandos@recompile.se>.
24
25
#
32
33
 
33
34
import sys
34
35
import os
35
 
 
 
36
import warnings
36
37
import datetime
37
38
 
38
39
import urwid.curses_display
58
59
domain = 'se.recompile'
59
60
server_interface = domain + '.Mandos'
60
61
client_interface = domain + '.Mandos.Client'
61
 
version = "1.7.13"
 
62
version = "1.8.8"
62
63
 
63
64
try:
64
65
    dbus.OBJECT_MANAGER_IFACE
443
444
        self.clients_dict = {}
444
445
 
445
446
        # We will add Text widgets to this list
446
 
        self.log = []
 
447
        self.log = urwid.SimpleListWalker([])
447
448
        self.max_log_length = max_log_length
448
449
 
449
450
        self.log_level = log_level
466
467
        self.busname = domain + '.Mandos'
467
468
        self.main_loop = GLib.MainLoop()
468
469
 
469
 
    def client_not_found(self, fingerprint, address):
470
 
        self.log_message("Client with address {} and fingerprint {}"
471
 
                         " could not be found"
472
 
                         .format(address, fingerprint))
 
470
    def client_not_found(self, key_id, address):
 
471
        self.log_message("Client with address {} and key ID {} could"
 
472
                         " not be found".format(address, key_id))
473
473
 
474
474
    def rebuild(self):
475
475
        """This rebuilds the User Interface.
502
502
        if self.max_log_length:
503
503
            if len(self.log) > self.max_log_length:
504
504
                del self.log[0:len(self.log)-self.max_log_length-1]
505
 
        self.logbox.set_focus(len(self.logbox.body.contents),
 
505
        self.logbox.set_focus(len(self.logbox.body.contents)-1,
506
506
                              coming_from="above")
507
507
        self.refresh()
508
508
 
627
627
                            path=path)
628
628
 
629
629
        self.refresh()
630
 
        self._input_callback_tag = (GLib.io_add_watch
631
 
                                    (sys.stdin.fileno(),
632
 
                                     GLib.IO_IN,
633
 
                                     self.process_input))
 
630
        self._input_callback_tag = (
 
631
            GLib.io_add_watch(
 
632
                GLib.IOChannel.unix_new(sys.stdin.fileno()),
 
633
                GLib.PRIORITY_DEFAULT, GLib.IO_IN,
 
634
                self.process_input))
634
635
        self.main_loop.run()
635
636
        # Main loop has finished, we should close everything now
636
637
        GLib.source_remove(self._input_callback_tag)
637
 
        self.screen.stop()
 
638
        with warnings.catch_warnings():
 
639
            warnings.simplefilter("ignore", BytesWarning)
 
640
            self.screen.stop()
638
641
 
639
642
    def stop(self):
640
643
        self.main_loop.quit()
733
736
                self.refresh()
734
737
        return True
735
738
 
 
739
 
736
740
ui = UserInterface()
737
741
try:
738
742
    ui.run()