/mandos/trunk

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

« back to all changes in this revision

Viewing changes to mandos-ctl

  • Committer: Teddy Hogeborn
  • Date: 2019-03-03 12:54:35 UTC
  • Revision ID: teddy@recompile.se-20190303125435-33pvzrb511cu78j3
mandos-ctl: Filter logging instead of messing with stderr

* mandos-ctl (main): Eliminate logs from dbus module by altering its
                     logger, not by redirecting stderr.

Show diffs side-by-side

added added

removed removed

Lines of Context:
675
675
    if not commands:
676
676
        commands.append(PrintTableCmd(verbose=options.verbose))
677
677
 
678
 
    # block stderr since dbus library prints to stderr
679
 
    null = os.open(os.path.devnull, os.O_RDWR)
680
 
    stderrcopy = os.dup(sys.stderr.fileno())
681
 
    os.dup2(null, sys.stderr.fileno())
682
 
    os.close(null)
 
678
    # Filter out log message from dbus module
 
679
    dbus_logger = logging.getLogger("dbus.proxies")
 
680
    class NullFilter(logging.Filter):
 
681
        def filter(self, record):
 
682
            return False
 
683
    dbus_filter = NullFilter()
 
684
    dbus_logger.addFilter(dbus_filter)
683
685
    try:
684
686
        try:
685
687
            mandos_clients = {path: ifs_and_props[client_interface]
688
690
                              .GetManagedObjects().items()
689
691
                              if client_interface in ifs_and_props}
690
692
        finally:
691
 
            # restore stderr
692
 
            os.dup2(stderrcopy, sys.stderr.fileno())
693
 
            os.close(stderrcopy)
 
693
            # restore dbus logger
 
694
            dbus_logger.removeFilter(dbus_filter)
694
695
    except dbus.exceptions.DBusException as e:
695
696
        log.critical("Failed to access Mandos server through D-Bus:"
696
697
                     "\n%s", e)