=== modified file 'mandos-ctl' --- mandos-ctl 2009-12-26 01:19:47 +0000 +++ mandos-ctl 2010-09-08 19:12:04 +0000 @@ -31,8 +31,12 @@ server_interface = domain + '.Mandos' client_interface = domain + '.Mandos.Client' version = "1.0.14" -bus = dbus.SystemBus() -mandos_dbus_objc = bus.get_object(busname, server_path) +try: + bus = dbus.SystemBus() + mandos_dbus_objc = bus.get_object(busname, server_path) +except dbus.exceptions.DBusException: + sys.exit(1) + mandos_serv = dbus.Interface(mandos_dbus_objc, dbus_interface = server_interface) mandos_clients = mandos_serv.GetAllClientsWithProperties() @@ -141,6 +145,10 @@ help="Set host for client") parser.add_option("-s", "--secret", type="string", help="Set password blob (file) for client") +parser.add_option("-A", "--approve", action="store_true", + help="Approve any current client request") +parser.add_option("-D", "--deny", action="store_true", + help="Deny any current client request") options, client_names = parser.parse_args() # Compile list of clients to process @@ -202,3 +210,7 @@ client.Set(client_interface, u"secret", dbus.ByteArray(open(options.secret, u'rb').read()), dbus_interface=dbus.PROPERTIES_IFACE) + if options.approve: + client.Approve(dbus.Boolean(True), dbus_interface=client_interface) + if options.deny: + client.Approve(dbus.Boolean(False), dbus_interface=client_interface) === modified file 'mandos-monitor' --- mandos-monitor 2010-09-07 20:22:16 +0000 +++ mandos-monitor 2010-09-08 19:12:04 +0000 @@ -189,6 +189,7 @@ pass def got_secret(self): + self.last_checker_failed = False self.logger(u'Client %s received its secret' % self.properties[u"name"]) @@ -238,6 +239,11 @@ % {u"name": self.properties[u"name"]}) if not self.properties[u"enabled"]: message = u"DISABLED" + elif self.properties[u"approved_pending"]: + if self.properties[u"approved_by_default"]: + message = u"Connection established to client. (d)eny?" + else: + message = u"Seeks approval to send secret. (a)pprove?" elif self.last_checker_failed: timeout = datetime.timedelta(milliseconds = self.properties[u"timeout"]) @@ -248,11 +254,6 @@ timer = timeout - (datetime.datetime.utcnow() - last_ok) message = (u'A checker has failed! Time until client gets diabled: %s' % unicode(timer).rsplit(".", 1)[0]) - elif self.properties[u"approved_pending"]: - if self.properties[u"approved_by_default"]: - message = u"Connection established to client. (d)eny?" - else: - message = u"Seeks approval to send secret. (a)pprove?" else: message = u"enabled" self._text = "%s%s" % (base, message) @@ -662,6 +663,8 @@ ui = UserInterface() try: ui.run() +except KeyboardInterrupt: + ui.screen.stop() except Exception, e: ui.log_message(unicode(e)) ui.screen.stop()