687b72372575a2a5597301f0ce02493d04afe6d0
[freeradius.git] / todo / TODO
1 URGENT:
2 o Stop unloading modules on HUP so that we can have persistant
3   handles/socketc/etc from module_init().  Alan D. and Alan C. had a good
4   plan for when to load/reload modules on the list recently...I say
5   run with that.
6 o merge OSF/OSFIA patches from Cistron.
7 o double-check Cistron 'compat' mode, so that all current users of
8   Cistron can upgrade "out of the box" to FreeRADIUS
9
10 MEDIUM PRIORITY
11 o go through all of the code and reformat it, for project standards
12 o go through all of the code, removing unnecessary #include's, and
13   generating a standard include file order which will work across all
14   platforms.
15 o fix the proxy receive code, so that we don't have to look through ALL
16   of the requests to find the matching proxy.  This might be hard to do..
17   It would also involve thread locking issues.
18 o rad_malloc() fixes:  child processes/threads ALWAYS kill themselves
19   if malloc() fails.  The main server process does a 'sleep' for N
20   seconds, and tries again.  After T tries, it gives up, and calls exit().
21
22 LOW PRIORITY:
23 o Write better documentation
24 o Manual pages for the daemon, utilities and conffiles (some done)
25 o Fix all FIXME's in the source.
26 o Fix DBM support:
27   - Put DBM into its own module
28   - Multiple defaults (done)
29   - Fallthrough (hard for not DEFAULT entries)
30 o better SNMP statistics support, for the auth/acct servers, and for
31   each client.
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 modular radutmp and radwtmp, as per Alan Curry's old patches.
67 o Fix multiple/conflicting VALUE names as pointed out on the list.
68    e.g. 'Rlogin' has different values when used with different ATTRIBUTEs,
69 o go through *.c and *.h, adding comments at the top with a copyright,
70   and a GPL license.
71 o Integrated Alan Curry's module failover patch.
72 o add more support for new configuration files
73 o Fixed potentially long locks on radutmp file by radcheck thread
74   This means unlocking the file, forking checkrad, and then locking
75   the file again.
76 o get rlm_unix to work with multiple instances
77 o partial split of rlm_files into rlm_fastusers and rlm_detail
78 o enable server to run in threaded mode
79 o rlm_realm module for COMPLETE control of proxying on any attribute
80 o re-transmits of proxied packets
81 o operator support in pairmove.
82 o stripping Prefix/Suffix in accounting
83 o new configuration file /etc/raddb/radius.conf
84 o Radius proxy support.
85 o Max-Simultaneous-Use parameter to avoid double logins.
86 o Specify a program to be run on succesful login
87 o Prefix/Suffix support
88 o Change radutmp format to v2 (see radutmp.h)
89 o move radutmp to /var/log ?
90 o Compatibility with radius-2.0
91 o Support for pidfile
92 o Configurable logging: both radutmp/radwtmp and details files
93 o session_id is not numeric but an 8-byte (?) string !
94 o Detect reboot packet sent by portmaster and clear radutmp / wtmp
95 o Seperate /etc/raddb/clients into public and private file (secret == secret!)
96   Add ts-type field to clients file for checklogin.pl
97   Better: return clients to old form (no shortname) and add a new file,
98   "nas" or so. Matching on this file is done based on Nas-Ip-Address
99   instead of the IP address of the sender. Better if there's a proxy
100   in between.
101 o Allow spaces in usernames (using " or \ to escape)
102 o Return Proxy-State A/V pairs, in the right order.
103 o retransmits from the terminal server get proxied with
104   a new ID and random_vector. We should check for this!
105 o Limit logins based on time/date 
106   (for example, Login-Hour = 8-18, Login-Day = 0-5 for business hours)
107 o take out host-order IP addresses
108 o Support Connect-Rate
109 o have a config file (or section in radiusd.conf) that tells rlm_sql
110   what the names of the tables and columns are instead of hardcoding
111   them
112 o split rlm_files into rlm_users, rlm_fastusers (in-memory hash),
113   rlm_detail, they all should share as much code as
114   possible though, not be big cut-and-paste jobs
115 o fix the request list walking code, to scan each element no more than
116   once per second.