/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to TODO

  • Committer: Teddy Hogeborn
  • Date: 2019-08-05 21:14:05 UTC
  • Revision ID: teddy@recompile.se-20190805211405-9m6hecekaihpttz9
Override lintian warnings about upgrading from old versions

There are some really things which are imperative that we fix in case
someone were to upgrade from a really old version.  We want to keep
these fixes in the postinst maintainer scripts, even though lintian
complains about such old upgrades not being supported by Debian in
general.  We prefer the code being there, for the sake of the users.

* debian/mandos-client.lintian-overrides
  (maintainer-script-supports-ancient-package-version): New.
  debian/mandos.lintian-overrides
  (maintainer-script-supports-ancient-package-version): - '' -

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
-*- org -*-
2
2
 
3
 
* Use _attribute_((nonnull)) wherever possible.
 
3
* Testing
 
4
** python-nemu
4
5
 
5
 
* Release critical
6
 
** mandos-ctl.xml
7
 
*** More examples
 
6
* mandos-applet
8
7
 
9
8
* mandos-client
10
 
** TODO [#B] use scandir(3) instead of readdir(3)
11
 
** TODO [#B] Prefix all debug output with "Mandos plugin " + program_invocation_short_name
12
 
** TODO [#B] Retry a server which has a non-definite reply:
13
 
*** A closed connection during the TLS handshake
14
 
*** A TCP timeout
 
9
** TODO A --server option which only adds to the server list.
 
10
   (Unlike --connect, which implicitly disables zeroconf.)
15
11
** TODO [#B] Use capabilities instead of seteuid().
16
 
** TODO [#A] Retry --connect forever
 
12
   https://forums.grsecurity.net/viewtopic.php?f=7&t=2522
 
13
** TODO [#B] Use getaddrinfo(hints=AI_NUMERICHOST) instead of inet_pton()
 
14
** TODO [#C] Make start_mandos_communication() take "struct server".
 
15
** TODO [#C] --interfaces=regex,eth*,noregex (bridge-utils-interfaces(5))
 
16
** TODO [#A] Detect partial writes to stdout and exit with EX_TEMPFAIL
 
17
** TODO [#B] Use reallocarray() with GNU LibC 2.29 or later.
17
18
 
18
19
* splashy
19
20
** TODO [#B] use scandir(3) instead of readdir(3)
20
 
** TODO [#B] Prefix all debug output with "Mandos plugin " + program_invocation_short_name
 
21
** TODO [#A] Detect partial writes to stdout and exit with EX_TEMPFAIL
21
22
 
22
 
* usplash
23
 
** TODO [#A] Make it work again
 
23
* usplash (Deprecated)
 
24
** TODO [#B] Make it work again
24
25
** TODO [#B] use scandir(3) instead of readdir(3)
25
 
** TODO [#B] Prefix all debug output with "Mandos plugin " + program_invocation_short_name
26
 
** TODO Use [[info:libc:Argz%20Functions][argz_extract]]
 
26
** TODO [#A] Detect partial writes to stdout and exit with EX_TEMPFAIL
27
27
 
28
28
* askpass-fifo
29
 
** TODO [#B] Prefix all debug output with "Mandos plugin " + program_invocation_short_name
30
 
** TODO [#B] Drop privileges after opening FIFO.
 
29
** TODO [#A] Detect partial writes to stdout and exit with EX_TEMPFAIL
31
30
 
32
31
* password-prompt
33
 
** TODO [#B] Prefix all debug output with "Mandos plugin " + program_invocation_short_name
34
32
** TODO [#B] lock stdin (with flock()?)
 
33
** TODO [#A] Detect partial writes to stdout and exit with EX_TEMPFAIL
 
34
 
 
35
* plymouth
 
36
** TODO [#A] Detect partial writes to stdout and exit with EX_TEMPFAIL
 
37
** TODO [#B] Use reallocarray() with GNU LibC 2.29 or later.
35
38
 
36
39
* TODO [#B] passdev
37
40
 
38
41
* plugin-runner
39
 
** TODO [#B] use scandir(3) instead of readdir(3)
 
42
** TODO handle printing for errors for plugins
 
43
*** Hook up stderr of plugins, buffer them, and prepend "Mandos Plugin [plugin name]"
40
44
** TODO [#C] use same file name rules as run-parts(8)
41
45
** kernel command line option for debug info
42
 
** TODO [#B] Use openat()
 
46
** TODO [#A] Restart plugins which exit with EX_TEMPFAIL
43
47
 
44
48
* mandos (server)
 
49
** TODO [#B] --notify-command
 
50
   This would allow the mandos.service to use
 
51
   --notify-command="systemd-notify --pid --ready"
 
52
** TODO [#B] python-systemd
 
53
*** import systemd.daemon; systemd.daemon.notify()
45
54
** TODO [#B] Log level                                                    :BUGS:
46
 
** TODO Persistent state                                                  :BUGS:
47
 
   /var/lib/mandos/*
48
55
*** TODO /etc/mandos/clients.d/*.conf
49
56
    Watch this directory and add/remove/update clients?
50
57
** TODO [#C] config for TXT record
51
 
** TODO Log level option
52
 
   syslogger.setLevel(logging.WARNING)
53
 
   + SetLogLevel D-Bus call
54
 
** TODO Implement --foreground                                            :BUGS:
55
 
   [[info:standards:Option%20Table][Table of Long Options]]
56
 
** TODO Implement --socket
57
 
   [[info:standards:Option%20Table][Table of Long Options]]
58
 
** TODO Date+time on console log messages                                 :BUGS:
59
 
   Is this the default?
 
58
** TODO Log level dbus option
 
59
   SetLogLevel D-Bus call
60
60
** TODO [#C] DBusServiceObjectUsingSuper
61
61
** TODO [#B] Global enable/disable flag
62
 
** TODO [#B] By-client countdown on secrets given
63
 
** TODO [#B] Fix problem with fsck taking a really long time
64
 
   Whenever a client successfully gets a secret it could get a
65
 
   one-time timeout boost to allow for an fsck-incurred delay
66
 
** TODO [#A] Delay before client receives key
67
 
   This would give an operator opportunity to cancel the request if
68
 
   desired.
69
 
** TODO [#A] Client manual approval mode
70
 
   A client needs manual approval on the server before it gets the
71
 
   secret
72
 
** TODO [#B] Support RFC 3339 time duration syntax
73
 
** More D-Bus methods
74
 
*** NeedsApproval(50, True) -> timeout, default approve
75
 
    Default approval is configurable, but True by default
76
 
    + Approve(True) -> approve sending saved
77
 
    + Approve(False) -> Close client connection immediately
78
 
*** NeedsPassword(50) - Timeout, default disapprove
 
62
** TODO [#B] By-client countdown on number of secrets given
 
63
** D-Bus Client method NeedsPassword(50) - Timeout, default disapprove
79
64
    + SetPass(u"gazonk", True) -> Approval, persistent
80
65
    + Approve(False) -> Close client connection immediately
81
66
** TODO [#C] python-parsedatetime
82
 
** TODO [#C] systemd/launchd
83
 
   http://0pointer.de/blog/projects/systemd.html
84
67
** TODO Separate logging logic to own object
85
 
** TODO make clients to a dict!
86
 
** TODO [#A] Limit approval_delay to max gnutls/tls timeout value
 
68
** TODO [#B] Limit approval_delay to max gnutls/tls timeout value
87
69
** TODO [#B] break the wait on approval_delay if connection dies
88
 
 
89
 
* mandos.xml
90
 
** Add mandos contact info in manual pages
 
70
** TODO Generate Client.runtime_expansions from client options + extra
 
71
** TODO Allow %%(checker)s as a runtime expansion
 
72
** TODO D-Bus AddClient() method on server object
 
73
** TODO Use org.freedesktop.DBus.Method.NoReply annotation on async methods. :2:
 
74
** TODO Save state periodically to recover better from hard shutdowns
 
75
** TODO CheckerCompleted method, deprecate CheckedOK
 
76
** TODO Secret Service API?
 
77
   https://standards.freedesktop.org/secret-service/
 
78
** TODO Remove D-Bus interfaces with old domain name                      :2:
 
79
** TODO Remove old string_to_delta format                                 :2:
 
80
** TODO http://0pointer.de/blog/projects/stateless.html
 
81
*** File in /usr/lib/sysusers.d to create user+group "_mandos"
 
82
** TODO Error handling on error parsing config files
 
83
** TODO init.d script error handling
 
84
** TODO D-Bus server properties; address, port, interface, etc.           :2:
 
85
** Python 3                                                               :2:
 
86
*** TODO [#C] In Python 3.3, use shlex.quote() instead of re.escape()
91
87
 
92
88
* mandos-ctl
93
 
*** Handle "no D-Bus server" and/or "no Mandos server found" better
94
 
*** [#B] --dump option
95
 
** TODO Support RFC 3339 time duration syntax
 
89
** TODO Remove old string_to_delta format                                 :2:
96
90
 
97
91
* TODO mandos-dispatch
98
92
  Listens for specified D-Bus signals and spawns shell commands with
99
93
  arguments.
100
94
 
101
95
* mandos-monitor
102
 
** TODO help should be toggable
 
96
** TODO --servicename                                                  :BUGS:
 
97
** TODO help should be toggleable
103
98
** Urwid client data displayer
104
99
   Better view of client data in the listing
105
100
*** Properties popup
106
 
** Nicer crashes. Stack traces Messes up shell.
107
 
*** Print a nice "We are sorry" message, save stack trace to log.
 
101
** Print a nice "We are sorry" message, save stack trace to log.
108
102
 
109
103
* mandos-keygen
110
 
** TODO Loop until passwords match when run interactively
111
104
** TODO "--secfile" option
112
105
   Using the "secfile" option instead of "secret"
113
106
** TODO [#B] "--test" option
114
107
   For testing decryption before rebooting.
115
108
 
116
 
* Makefile
117
 
** TODO Add "--Xlinker --as-needed"
118
 
   http://udrepper.livejournal.com/19395.html
119
 
** TODO [#C] Implement DEB_BUILD_OPTIONS
120
 
   http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
121
 
 
122
109
* Package
123
110
** /usr/share/initramfs-tools/hooks/mandos
124
111
*** TODO [#C] use same file name rules as run-parts(8)
125
112
*** TODO [#C] Do not install in initrd.img if configured not to.
126
113
    Use "/etc/initramfs-tools/hooksconf.d/mandos"?
127
 
** TODO [#C] /etc/bash_completion.d/mandos
 
114
** TODO [#C] $(pkg-config --variable=completionsdir bash-completion)
128
115
   From XML sources directly?
129
116
 
130
117
* Side Stuff
131
 
** TODO Locate which packet move the other bin/sh when busy box is deactivated
132
 
** TODO contact owner of packet, and ask them to have that shell static in position regardless of busybox
 
118
** TODO Locate which package moves the other bin/sh when busybox is deactivated
 
119
** TODO contact owner of package, and ask them to have that shell static in position regardless of busybox
 
120
 
 
121
* [[http://www.undeadly.org/cgi?action=article&sid=20110530221728][OpenBSD]]
133
122
 
134
123
 
135
124
#+STARTUP: showall