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