=== modified file 'DBUS-API' --- DBUS-API 2011-11-24 19:09:29 +0000 +++ DBUS-API 2011-11-26 23:08:17 +0000 @@ -112,7 +112,7 @@ Disable(). f) The date and time this client will be disabled, as an RFC 3339 - string, or an empty string if this has not happened. + string, or an empty string if this is not scheduled. g) The date and time of the last approval request, as an RFC 3339 string, or an empty string if this has not happened. === modified file 'clients.conf' --- clients.conf 2011-09-19 09:42:55 +0000 +++ clients.conf 2011-11-26 23:08:17 +0000 @@ -30,6 +30,9 @@ # How long one approval will last. ;approval_duration = 1s +# Whether this client is enabled by default +;enabled = True + ;#### ;# Example client === modified file 'mandos' --- mandos 2011-11-26 22:22:20 +0000 +++ mandos 2011-11-26 23:08:17 +0000 @@ -415,7 +415,7 @@ last_checker_status: integer between 0 and 255 reflecting exit status of last checker. -1 reflects crashed checker, or None. - last_enabled: datetime.datetime(); (UTC) + last_enabled: datetime.datetime(); (UTC) or None name: string; from the config file, used in log messages and D-Bus identifiers secret: bytestring; sent verbatim (over TLS) to client @@ -473,9 +473,12 @@ % self.name) self.host = config.get("host", "") self.created = datetime.datetime.utcnow() - self.enabled = True + self.enabled = config.get("enabled", True) self.last_approval_request = None - self.last_enabled = datetime.datetime.utcnow() + if self.enabled: + self.last_enabled = datetime.datetime.utcnow() + else: + self.last_enabled = None self.last_checked_ok = None self.last_checker_status = None self.timeout = string_to_delta(config["timeout"]) @@ -485,7 +488,10 @@ self.checker = None self.checker_initiator_tag = None self.disable_initiator_tag = None - self.expires = datetime.datetime.utcnow() + self.timeout + if self.enabled: + self.expires = datetime.datetime.utcnow() + self.timeout + else: + self.expires = None self.checker_callback_tag = None self.checker_command = config["checker"] self.current_checker_command = None @@ -1278,7 +1284,7 @@ # Created - property @dbus_service_property(_interface, signature="s", access="read") def Created_dbus_property(self): - return dbus.String(datetime_to_dbus(self.created)) + return datetime_to_dbus(self.created) # LastEnabled - property @dbus_service_property(_interface, signature="s", access="read") @@ -1360,11 +1366,12 @@ self.interval = datetime.timedelta(0, 0, 0, value) if getattr(self, "checker_initiator_tag", None) is None: return - # Reschedule checker run - gobject.source_remove(self.checker_initiator_tag) - self.checker_initiator_tag = (gobject.timeout_add - (value, self.start_checker)) - self.start_checker() # Start one now, too + if self.enabled: + # Reschedule checker run + gobject.source_remove(self.checker_initiator_tag) + self.checker_initiator_tag = (gobject.timeout_add + (value, self.start_checker)) + self.start_checker() # Start one now, too # Checker - property @dbus_service_property(_interface, signature="s", @@ -2177,6 +2184,9 @@ "approved_by_default": lambda section: client_config.getboolean(section, "approved_by_default"), + "enabled": + lambda section: + client_config.getboolean(section, "enabled"), } # Construct a new dict of client settings of this form: # { client_name: {setting_name: value, ...}, ...} === modified file 'mandos-clients.conf.xml' --- mandos-clients.conf.xml 2011-10-10 20:29:58 +0000 +++ mandos-clients.conf.xml 2011-11-26 23:08:17 +0000 @@ -3,7 +3,7 @@ "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ /etc/mandos/clients.conf"> - + %common; ]> @@ -344,6 +344,20 @@ + + + + + Whether this client should be enabled by default. The + default is true. + + + +