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
# Show warnings by default
49
if not sys.warnoptions:
51
warnings.simplefilter("default")
53
log = logging.getLogger(sys.argv[0])
54
logging.basicConfig(level="INFO", # Show info level messages
55
format="%(message)s") # Show basic log messages
57
logging.captureWarnings(True) # Show warnings via the logging system
46
59
if sys.version_info.major == 2:
58
71
"Interval": "Interval",
60
73
"Fingerprint": "Fingerprint",
61
75
"CheckerRunning": "Check Is Running",
62
76
"LastEnabled": "Last Enabled",
63
77
"ApprovalPending": "Approval Is Pending",
344
358
if options.all and not has_actions(options):
345
359
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
362
bus = dbus.SystemBus()
354
363
mandos_dbus_objc = bus.get_object(busname, server_path)
355
364
except dbus.exceptions.DBusException:
356
print("Could not connect to Mandos server", file=sys.stderr)
365
log.critical("Could not connect to Mandos server")
359
368
mandos_serv = dbus.Interface(mandos_dbus_objc,
378
387
os.dup2(stderrcopy, sys.stderr.fileno())
379
388
os.close(stderrcopy)
380
389
except dbus.exceptions.DBusException as e:
381
print("Access denied: "
382
"Accessing mandos server through D-Bus: {}".format(e),
390
log.critical("Failed to access Mandos server through D-Bus:"
386
394
# Compile dict of (clients: properties) to process
397
405
clients[client_objc] = client
400
print("Client not found on server: {!r}"
401
.format(name), file=sys.stderr)
408
log.critical("Client not found on server: %r", name)
404
411
if not has_actions(options) and clients:
405
412
if options.verbose or options.dump_json:
406
413
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",
414
"Created", "Interval", "Host", "KeyID",
415
"Fingerprint", "CheckerRunning",
416
"LastEnabled", "ApprovalPending",
417
"ApprovedByDefault", "LastApprovalRequest",
418
"ApprovalDelay", "ApprovalDuration",
419
"Checker", "ExtendedTimeout", "Expires",
413
420
"LastCheckerStatus")
415
422
keywords = defaultkeywords
492
499
client.Approve(dbus.Boolean(False),
493
500
dbus_interface=client_interface)
503
class Test_milliseconds_to_string(unittest.TestCase):
505
self.assertEqual(milliseconds_to_string(93785000),
507
def test_no_days(self):
508
self.assertEqual(milliseconds_to_string(7385000), "02:03:05")
509
def test_all_zero(self):
510
self.assertEqual(milliseconds_to_string(0), "00:00:00")
511
def test_no_fractional_seconds(self):
512
self.assertEqual(milliseconds_to_string(400), "00:00:00")
513
self.assertEqual(milliseconds_to_string(900), "00:00:00")
514
self.assertEqual(milliseconds_to_string(1900), "00:00:01")
517
def should_only_run_tests():
518
parser = argparse.ArgumentParser(add_help=False)
519
parser.add_argument("--check", action='store_true')
520
args, unknown_args = parser.parse_known_args()
521
run_tests = args.check
523
# Remove --check argument from sys.argv
524
sys.argv[1:] = unknown_args
527
# Add all tests from doctest strings
528
def load_tests(loader, tests, none):
530
tests.addTests(doctest.DocTestSuite())
496
533
if __name__ == "__main__":
534
if should_only_run_tests():
535
# Call using ./tdd-python-script --check [--verbose]