# -*-text-*-

Unified TODO
============

(lines are sorted by order of decreasing priority)


Generic stuff
-------------

To do:
- decide client/server roles.
- history support
- seconde date field in logevent. session type.
- have a look at all @@ and ## everywhere.
- design a better generic way of printing an event than printf macros.

To do, but not show stoppers:
- design a Pascal-like language for queries, used by interactive mode,
  or for client/server communications.
- build a *real* changelog from the CVS history (Gael).


Debian packaging
----------------
To do:
- strict mode set to 'on' via debconf seems to produce 'strict off' in ulogp
  section
- add debconf questions about ACLs

To do, but not show stoppers:
- add libulog and dev-ulog packages
- update ulog-server.init
- no need to ask for dynamic module path as there are no dynamic modules
  in the package. Wait... no need to ask, but yet it must be set
  automatically !

To check:
- check the @@ everywhere in debian/*
- no ulog-server.postrm ?

LIBULOG
-------

To do:
- build a shared libulog.so and link ulog with it.
- Bug : when a client in follow mode connects to localhost, ulogd replies
  with the adress 10.16.1.2 (for example), and not 127.0.0.1, so the client
  thinks the notification is spoofed
- define the entire API. Stick to it.

To do, but not show stoppers:
- entry filtering is left out ? Yes, for the moment...

To check:


ULOG
----

To do:
- switch to ulogp. Definitely get rid of compat.
- rename domain to domainname ?
- change public symbols to be ulog_ prefixed.
- sort out common/libulog redundancy.
- lib_logevent.h must be renamed
- history support: sort by several keys, login/logout order, display
  for specific time, from specific time, to specific time (for login and
  logout)
- date/time filters for login/logout: not already done ?

To do, but not show stoppers:
- add --numeric option (display IP addresses)
- desync on server restart for follow mode. 
- I cannot reproduce this, but I had the following problem :
  if ulog is started in interactive mode, when follow mode is activated
  (through the follow command), every login/logout that happened since
  during follow mode was off are displayed (bad behaviour), because
  the udp socket was listening all the time. How could we really ignore
  broadcasts we receive when follow mode if off ?
- follow authentification: can be prone to udp spoofing on Solaris
  for instance. (explain why)
- in interactive mode, implement the expression parsing for the list command
- code to handle options both in ulog.c AND parser.c. Why not handle
  all options in parser.c ? => nicer for te user, a little less
  for libulog, but.. is find supposed to be in libulog ?
- '-exec' and '-ok' predicate. => which format ? (Gael)
  What do you mean exactly ? (Herve)
- in find, check pred_group (username/detail valid?)
- in find, complete pred_assoc.
- add formats for logout time and offset to now ?
- translate all existing man pages in French (especially ulogd.conf.5)
- some options could accept multi arguments (parse_multi_args)

To check:
- in find, version ??
- in find, some predicates allocate memory... never freed.
- regex ?? where the hell is it used ?! (Gael)
- nickfile ? is that a supported feature ?
  if yes, why not building a hash table with its content ? that would
  allow one to say -nick "r*" ... G: I'm not sure it would be very
  useful though.
- readline 4.1 needs lib ncurses5.0 with mandrake 7.1 : why ?
- colors: utility, usage ? don't bother for the moment.


ULOGD
-----

To do:
- new ftp-oriented protocol, with error report. (started)
- mechanism to select used modules, based on a module list or similar.
- notification authentification (independant access list and/or user/passwd)
- history browsing support.
- ulogctl (unix socket à la ndc) : Improve client. Add a reload option
  (sighup equivalent)

To do, but not show stoppers:
- write ulogd.8 man page
- ssl support both for authentification and secure channel.
- classify modules in categories/services (maybe a specific
  namespace, eg "feed/pipe").
- limit max number of displays in memory ?
  disabled with 0, not enabled by default

To check:
- dump state on SIGHUP ? (Gael)
  No. Must be done through ulogdctl (Herve)
- how to handle a SIGINT in dump_state, for instance.
- use of multicast instead of broadcast: make it optionnal



rename lib/lib.h in lib/libsupport.h
in...
common/confutil.c:#include <lib.h>
find/find.h:#include "lib.h"
lib/snprintf.c:#include "lib.h"
libulog/conf.c:#include <lib.h>
libulog/domainname.c:#include <lib.h>
ulogd/access.c:#include <lib.h>
ulogd/conf.c:#include <lib.h>
ulogd/log.c:#include <lib.h>
ulogd/proctitle.c:#include <lib.h>
ulogd/ulogd.c:#include <lib.h>
ulog/ulog.c:#include <lib.h>
ulogd/compat/compat.c:#include <lib.h>
ulogd/compat/net.c:#include <lib.h>
ulogd/ulogp/ulogp.c:#include <lib.h>
ulogd/ulogp/ulogp_callbacks.c:#include <lib.h>
ulogd/ulogp/ulogp_server.c:#include <lib.h>
