Support the standard org.freedesktop.DBus.ObjectManager interface.
Now that the D-Bus standard has an interface to keep track of new and removed objects, use that instead of our own methods. This deprecates our D-Bus methods "GetAllClients" and "GetAllClientsWithProperties" and the signals "ClientAdded" and "ClientRemoved", all on the server interface "se.recompile.Mandos".
* DBUS-API: Removed references to deprecated methods and signals; insert reference to the org.freedesktop.DBus.ObjectManager interface. * mandos (DBusObjectWithProperties._get_all_interface_names): New. (dbus.OBJECT_MANAGER_IFACE): If not present, monkey patch. (DBusObjectWithObjectManager): New. (main/MandosDBusService): Inherit from DBusObjectWithObjectManager. (main/MandosDBusService.ClientRemoved): Annotate as deprecated. (main/MandosDBusService.GetAllClients): - '' - (main/MandosDBusService.GetAllClientsWithProperties): Annotate as deprecated. Also only return properties on client interface. (main/MandosDBusService.RemoveClient): Call client_removed_signal instead of ClientRemoved. (main/MandosDBusService.GetManagedObjects): New. (main/MandosDBusService.client_added_signal): New. (main/MandosDBusService.client_removed_signal): - '' - (main/cleanup): Call "client_removed_signal" instead of sending "ClientRemoved" signal directly. (main): Call "client_added_signal" instead of sending "ClientAdded" signal directly. * mandos-ctl: Use GetManagedObjects instead of GetAllClientsWithProperties. Also, show better error message in case of failure to connect to the D-Bus
* mandos-monitor (MandosClientPropertyCache.properties_changed): Bug fix; only update properties on client interface. (UserInterface.find_and_remove_client): Change to accept arguments from InterfacesRemoved signal. Also, bug fix: working error message when removing unknown client. (UserInterface.add_new_client): Change to accept arguments from InterfacesRemoved signal. Pass properties to MandosClientWidget constructor. (UserInterface.run): Connect find_and_remove_client method to InterfacesRemoved signal and the add_new_client method to the InterfacesAdded signal.
** TODO [#B] Use getaddrinfo(hints=AI_NUMERICHOST) instead of inet_pton()
25
26
** TODO [#C] Make start_mandos_communication() take "struct server".
27
** TODO [#C] --interfaces=regex,eth*,noregex (bridge-utils-interfaces(5))
28
** TODO [#C] Remove code for GNU libc < 2.15
26
29
27
30
* splashy
28
31
** TODO [#B] use scandir(3) instead of readdir(3)
29
32
30
33
* usplash (Deprecated)
31
** TODO [#A] Make it work again
34
** TODO [#B] Make it work again
32
35
** TODO [#B] use scandir(3) instead of readdir(3)
33
36
34
37
* askpass-fifo
45
48
*** Hook up stderr of plugins, buffer them, and prepend "Mandos Plugin [plugin name]"
46
49
** TODO [#C] use same file name rules as run-parts(8)
47
50
** kernel command line option for debug info
51
** TODO [#C] Remove code for GNU libc < 2.15
48
52
49
53
* mandos (server)
54
** TODO [#B] --notify-command
55
This would allow the mandos.service to use
56
--notify-command="systemd-notify --pid READY=1"
50
57
** TODO [#B] Log level :BUGS:
51
58
*** TODO /etc/mandos/clients.d/*.conf
52
59
Watch this directory and add/remove/update clients?
61
68
+ Approve(False) -> Close client connection immediately
62
69
** TODO [#C] python-parsedatetime
63
70
** TODO Separate logging logic to own object
64
** TODO [#A] Limit approval_delay to max gnutls/tls timeout value
71
** TODO [#B] Limit approval_delay to max gnutls/tls timeout value
65
72
** TODO [#B] break the wait on approval_delay if connection dies
66
73
** TODO Generate Client.runtime_expansions from client options + extra
67
74
** TODO Allow %%(checker)s as a runtime expansion
68
75
** TODO Use python-tlslite?
69
76
** TODO D-Bus AddClient() method on server object
70
77
** TODO Use org.freedesktop.DBus.Method.NoReply annotation on async methods. :2:
71
** TODO Support [[http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager][org.freedesktop.DBus.ObjectManager]] interface on server object :2: