Updated for latest set of changes.
[freeradius.git] / todo / TODO
1 URGENT:
2 o Add 'initialize' list in modules, so explicitely give initialization order.
3 o Add a 'listen' directive, ala Apache, so that we can listen
4   on multiple ports. Hmm... if we do that, we should allow multiple
5   virtual servers, too.
6 o Stop unloading modules on HUP so that we can have persistant
7   handles/socketc/etc from module_init().  Alan D. and Alan C. had a good
8   plan for when to load/reload modules on the list recently...I say
9   run with that.
10 o double-check Cistron 'compat' mode, so that all current users of
11   Cistron can upgrade "out of the box" to FreeRADIUS
12
13 MEDIUM PRIORITY
14 o fix radwho to read modules{radutmp{filename = }}
15 o go through all of the code and reformat it, for project standards
16 o go through all of the code, removing unnecessary #include's, and
17   generating a standard include file order which will work across all
18   platforms.
19 o rad_malloc() fixes:  child processes/threads ALWAYS kill themselves
20   if malloc() fails.  The main server process does a 'sleep' for N
21   seconds, and tries again.  After T tries, it gives up, and calls exit().
22
23 LOW PRIORITY:
24 o Write better documentation
25 o Manual pages for the daemon, utilities and conffiles (some done)
26 o Fix all FIXME's in the source.
27 o better SNMP statistics support, for the auth/acct servers, and for
28   each client.
29 o fix the proxy receive code, so that we don't have to look through ALL
30   of the requests to find the matching proxy.  This might be hard to do..
31   It would also involve thread locking issues.
32
33 WAIT UNTIL NEXT RELEASE:
34 o UPDATE accounting requests aren't handled as in 1.5.4.3 for wtmp
35   Is this a problem ? Need to fix in rlm_unix.c
36 o New module: rlm_fastradwtmp. with a radutmp-style active session
37   database to guarantee wtmp records are always written in matching
38   pairs. Because radlast is slow.
39 o New module: rlm_attrmap. assigns a single attribute based on a
40   username, with ed-friendly/awk-friendly config file. Because the
41   users file is too complicated.
42 o replace the module_t method table with a set of register_* functions
43   (so different instances of the same module can offer different
44   methods)
45 o enable server to run with child processes
46   (This is a little more difficult than the threading changes)
47 o switch all timers from time() to gettimeofday() so processing is
48   less bursty
49 o SNMP support for querying users who are on-line.
50 o New module: rlm_nsupdate (dyndns). Because dynamic addresses are
51   cruel.
52 o New module: rlm_perl.
53
54 WILL NOT DO:
55 o module initialization AFTER forking, not before.
56         --- The modules should NOT be setting up any process-dependent
57         --- information.
58
59 o there should be a way that radius itself could
60   rotate the wtmp file properly. It should write "logout" records for
61   all users, move the file to wtmp.0, and create a new wtmp file with
62   "login" records for all currently online users.
63         --- This work is for an external process to do ---
64
65 DONE:
66 o merge OSF/OSFIA patches from Cistron.
67 o Fix DBM support:
68   - Put DBM into its own module
69   - Multiple defaults (done)
70   - Fallthrough (hard for not DEFAULT entries)
71 o modular radutmp and radwtmp, as per Alan Curry's old patches.
72 o Fix multiple/conflicting VALUE names as pointed out on the list.
73    e.g. 'Rlogin' has different values when used with different ATTRIBUTEs,
74 o go through *.c and *.h, adding comments at the top with a copyright,
75   and a GPL license.
76 o Integrated Alan Curry's module failover patch.
77 o add more support for new configuration files
78 o Fixed potentially long locks on radutmp file by radcheck thread
79   This means unlocking the file, forking checkrad, and then locking
80   the file again.
81 o get rlm_unix to work with multiple instances
82 o partial split of rlm_files into rlm_fastusers and rlm_detail
83 o enable server to run in threaded mode
84 o rlm_realm module for COMPLETE control of proxying on any attribute
85 o re-transmits of proxied packets
86 o operator support in pairmove.
87 o stripping Prefix/Suffix in accounting
88 o new configuration file /etc/raddb/radius.conf
89 o Radius proxy support.
90 o Max-Simultaneous-Use parameter to avoid double logins.
91 o Specify a program to be run on succesful login
92 o Prefix/Suffix support
93 o Change radutmp format to v2 (see radutmp.h)
94 o move radutmp to /var/log ?
95 o Compatibility with radius-2.0
96 o Support for pidfile
97 o Configurable logging: both radutmp/radwtmp and details files
98 o session_id is not numeric but an 8-byte (?) string !
99 o Detect reboot packet sent by portmaster and clear radutmp / wtmp
100 o Seperate /etc/raddb/clients into public and private file (secret == secret!)
101   Add ts-type field to clients file for checklogin.pl
102   Better: return clients to old form (no shortname) and add a new file,
103   "nas" or so. Matching on this file is done based on Nas-Ip-Address
104   instead of the IP address of the sender. Better if there's a proxy
105   in between.
106 o Allow spaces in usernames (using " or \ to escape)
107 o Return Proxy-State A/V pairs, in the right order.
108 o retransmits from the terminal server get proxied with
109   a new ID and random_vector. We should check for this!
110 o Limit logins based on time/date 
111   (for example, Login-Hour = 8-18, Login-Day = 0-5 for business hours)
112 o take out host-order IP addresses
113 o Support Connect-Rate
114 o have a config file (or section in radiusd.conf) that tells rlm_sql
115   what the names of the tables and columns are instead of hardcoding
116   them
117 o split rlm_files into rlm_users, rlm_fastusers (in-memory hash),
118   rlm_detail, they all should share as much code as
119   possible though, not be big cut-and-paste jobs
120 o fix the request list walking code, to scan each element no more than
121   once per second.