2
# -*- mode: python; coding: utf-8 -*-
2
# -*- mode: python; coding: utf-8; after-save-hook: (lambda () (let ((command (if (and (boundp 'tramp-file-name-structure) (string-match (car tramp-file-name-structure) (buffer-file-name))) (tramp-file-name-localname (tramp-dissect-file-name (buffer-file-name))) (buffer-file-name)))) (if (= (shell-command (format "%s --check" (shell-quote-argument command)) "*Test*") 0) (let ((w (get-buffer-window "*Test*"))) (if w (delete-window w)) (kill-buffer "*Test*")) (display-buffer "*Test*")))); -*-
4
4
# Mandos Monitor - Control and monitor the Mandos server
6
# Copyright © 2008-2018 Teddy Hogeborn
7
# Copyright © 2008-2018 Björn Påhlsson
6
# Copyright © 2008-2019 Teddy Hogeborn
7
# Copyright © 2008-2019 Björn Påhlsson
9
9
# This file is part of Mandos.
48
log = logging.getLogger(sys.argv[0])
49
logging.basicConfig(level="INFO", # Show info level messages
50
format="%(message)s") # Show basic log messages
46
52
if sys.version_info.major == 2:
58
64
"Interval": "Interval",
60
66
"Fingerprint": "Fingerprint",
61
68
"CheckerRunning": "Check Is Running",
62
69
"LastEnabled": "Last Enabled",
63
70
"ApprovalPending": "Approval Is Pending",
344
351
if options.all and not has_actions(options):
345
352
parser.error("--all requires an action.")
349
fail_count, test_count = doctest.testmod()
350
sys.exit(os.EX_OK if fail_count == 0 else 1)
353
355
bus = dbus.SystemBus()
354
356
mandos_dbus_objc = bus.get_object(busname, server_path)
355
357
except dbus.exceptions.DBusException:
356
print("Could not connect to Mandos server", file=sys.stderr)
358
log.critical("Could not connect to Mandos server")
359
361
mandos_serv = dbus.Interface(mandos_dbus_objc,
378
380
os.dup2(stderrcopy, sys.stderr.fileno())
379
381
os.close(stderrcopy)
380
382
except dbus.exceptions.DBusException as e:
381
print("Access denied: "
382
"Accessing mandos server through D-Bus: {}".format(e),
383
log.critical("Failed to access Mandos server through D-Bus:"
386
387
# Compile dict of (clients: properties) to process
397
398
clients[client_objc] = client
400
print("Client not found on server: {!r}"
401
.format(name), file=sys.stderr)
401
log.critical("Client not found on server: %r", name)
404
404
if not has_actions(options) and clients:
405
405
if options.verbose or options.dump_json:
406
406
keywords = ("Name", "Enabled", "Timeout", "LastCheckedOK",
407
"Created", "Interval", "Host", "Fingerprint",
408
"CheckerRunning", "LastEnabled",
409
"ApprovalPending", "ApprovedByDefault",
410
"LastApprovalRequest", "ApprovalDelay",
411
"ApprovalDuration", "Checker",
412
"ExtendedTimeout", "Expires",
407
"Created", "Interval", "Host", "KeyID",
408
"Fingerprint", "CheckerRunning",
409
"LastEnabled", "ApprovalPending",
410
"ApprovedByDefault", "LastApprovalRequest",
411
"ApprovalDelay", "ApprovalDuration",
412
"Checker", "ExtendedTimeout", "Expires",
413
413
"LastCheckerStatus")
415
415
keywords = defaultkeywords
492
492
client.Approve(dbus.Boolean(False),
493
493
dbus_interface=client_interface)
496
class Test_milliseconds_to_string(unittest.TestCase):
498
self.assertEqual(milliseconds_to_string(93785000),
500
def test_no_days(self):
501
self.assertEqual(milliseconds_to_string(7385000), "02:03:05")
502
def test_all_zero(self):
503
self.assertEqual(milliseconds_to_string(0), "00:00:00")
504
def test_no_fractional_seconds(self):
505
self.assertEqual(milliseconds_to_string(400), "00:00:00")
506
self.assertEqual(milliseconds_to_string(900), "00:00:00")
507
self.assertEqual(milliseconds_to_string(1900), "00:00:01")
510
def should_only_run_tests():
511
parser = argparse.ArgumentParser(add_help=False)
512
parser.add_argument("--check", action='store_true')
513
args, unknown_args = parser.parse_known_args()
514
run_tests = args.check
516
# Remove --check argument from sys.argv
517
sys.argv[1:] = unknown_args
520
# Add all tests from doctest strings
521
def load_tests(loader, tests, none):
523
tests.addTests(doctest.DocTestSuite())
496
526
if __name__ == "__main__":
527
if should_only_run_tests():
528
# Call using ./tdd-python-script --check [--verbose]