Add OCSP timeout option
[freeradius.git] / dialup_admin / Changelog
1 Ver X.XX:
2 * add comparison operators "!=" and "not like" to Accounting
3 * replace ereg -> preg_match, ereg_replace -> preg_replace, split -> preg_split for PHP5.3 compatibility
4 * fix LIMIT not working when using MySQL
5 * add configuration item "timezone" to make PHP 5.1+ happy
6 Ver 1.80:
7 * Remove snmp_clearsession. It is replaced by clearsession which supports both snmp and telnet
8   methods of removing a user from an access server. Add corresponding configuration directives
9   general_sessionclear_method and nasXX_sessionclear_method
10 * Create a new function da_sql_limit() and use that to pass LIMIT arguments to the database layer
11   since the syntax is different between db vendors
12 * Rename the badusers date field to incidentdate to avoid reserved words in databases. Bug found by
13   Peter Nixon
14 * Count online users correctly (through a separate query) in user_finger.
15 * Use the correct max results variable in lib/*/find.php3
16 * In time2strclock also show days if applicable
17 * In lib/sql/attrmap.php3, only register variables once. Go through $show_attrs and set default attribute
18   mappings for any attribute that a mapping does not exist.
19 * Change the order of OID's used in snmpfinger for cisco NASes
20 Ver 1.78:
21 * Add a snmp_clearsession which can disconnect a user by using the Cisco AAA Session MIB
22 * Add a configuration directive general_sessionclear_bin
23 * Add a session disconnect button in the 'clear open sessions' page
24 * Also clear sessions from the sql extra servers in the 'clear open sessions' page
25 * In bin/snmpfinger also accept @,. in the username
26 * If we are stripping realms, then if needed strip them from the data returned by snmpfinger in
27   user_finger.php3
28 * Add a header with the page encoding before sending any page (header added in config.php3)
29   This closes Bug #153
30 * Fix a problem when reading username.mappings
31 * If date calculation fails, abort
32 * Add a backup_radacct script
33 * Add an sqlrelay functions file. The user_admin page does not currently work. Looking into it.
34 * Add sqlrelay support in the scripts. Add a sqlrelay_query script to run sqlrelay commands
35 * Update password_check to work with all password attributes and use the configuration directives
36 * Add more documentation for per user counter limit attributes (daily/weekly/monthly limits)
37 * Make all counter limits default to none so that people don't get confused
38 * In clear_opensessions depending on sql type use either IS NULL or = 0 in the DELETE statement.
39   We need to find a cleaner solution to this. This closes bug#175
40 * Log somewhat more verbose error messages when the sql_command binary is not found in the bin scripts
41 * Make nasXX_finger_type actually work since the place where nas information was stored was changed a
42   long time ago. Bug noted by Nick Bright
43 * In user_finger only set LD_LIBRARY_PATH once, not each time we call snmpfinger
44 * Add support for usrhiper in snmpfinger. Patch from Nick Bright
45 * urlencode() all occurrences of the $login variable when used in url's. Bug noted by Dag Landau
46 * Show the correct nas type in nas_admin. Bug noted by Nick Bright
47 * Correctly calculate the nas ip in lib/sql/nas_list.php3. Add a check_ip() function in lib/functions.php3
48   Bug noted by Nick Bright
49 * Correctly check nas validity in nas_admin.php3. Bug noted by Nick Bright
50 * Don't use $num in stats.php3, change it to $stats_num
51 Ver 1.75:
52 * A LOT of security related fixes. Now dialupadmin should hopefully be secure enough to
53   be accessed by normal users (not administrators).
54 * Move a few elements in the CSS file from the body tag. Suggestion by Gary McKinney
55 * Update FAQ about using php with no sql support.
56 * Allow the user to select between viewing FAQ,HOWTO or README in the help page.
57 * Use $_SERVER instead of $HTTP_SERVER_VARS
58 * Add a drop down menu with existing groups in group_new.php3
59 * Check for sql in show_groups.php3
60 * In lib/sql/group_info.php3 if $login is not set, find available groups and place them in
61   $existing_groups along with a count of users per group. Use the functionality in group_new.php3
62   and show_groups.php3
63 * Update TODO
64 * Add the style sheet in the content.html
65 * Enlarge the width for the left frame
66 * Make show_groups and the drop down menu in group_new work
67 * Use lower cased row names in badusers page
68 * Wrong foreach in show_groups and group_new.
69 * Fix operator escaping in lib/sql/change_attrs.php3
70 * In user_state also take into account any open sessions when calculating daily/weekly usage.
71   Add two more lines in the output stating the number of current open sessions and the time used.
72 * Move a few header() calls after including config.php3 so that we have access to the relevant
73   variables.
74 * Make pagesize 'all' work again. Bug found by apellido jr., wilfredo p.
75 * Make 'Add NAS' function in the nas admin page more easily accessible
76 * Fix a small bug in user_admin.php3 found by Joerg Staedele
77 * Fix a small typo in the userinfo mysql schema. Found by Evert Meulie
78 * Fix bug #136, bugs found by Pawel Foremski
79 * Small type in login_time_create, close bug #141
80 * In config.php3 remove whitespaces from $login. Don't remove '-'
81 * Add lib/sql/group_change.php3 to add and delete a user from groups
82 * Add a new directive sql_show_all_groups. If set to true then in user edit page we show all available
83   groups with the ones the user is a member of highlighted. The administrator can then directly
84   change user group membership by changing membership in this group list.
85 * On group creation, if member list is empty report that, not that the group was created.
86 * In the show groups page, note that we only show groups with members
87 * In lib/sql/group_info.php3 only unset variables if we need to. In lib/sql/defaults.php3 don't run for groups
88   only for users
89 * Fix Bug #167
90 Ver 1.72:
91 * Move the xlat function to a separate file in lib/xlat.php3
92 * Add a lib/sql/nas_list.php3 to also get the nas list from sql (naslist.conf still works)
93 * add realms nasdb and nasadmin in username.mappings. nasadmin is used to signify if the
94   user is allowed to use the nas_admin page. nasdb is used to shorten the nas list to only
95   a few specific entries. That way administrator responsible for a few access servers will
96   only be able to administer those access servers and not see the rest of the nas list.
97 * Add username searching in the find page as suggested by joram agten
98 * Don't use nas_list in nas_admin
99 * Add postgresql specific sql schema by apellido jr., wilfredo p. Move each sql schema to a
100   separate directory (mysql and postgresql)
101 * Change is_int to is_numeric. This closes Bug #90
102 * Escape special characters in the sql password. This closes bug #96
103 * Do an xlat for general_accounting_attrs_file and general_user_edit_attrs_file. That way we can
104   have different mappings for each administrator.
105 * Use require_once instead of require when including xlat.php3
106 * Add debug statements in sql connect functions
107 * Add a missing.php3 file with functions that may be missing from the PHP version used. Include it
108   if a function is missing. Currently only array_change_key_case() is included
109 * Set general_restrict_nasadmin_access to no by default. It causes confusion.
110 * Set the general_username_mappings_file variable
111 * Fix a small error in lib/sql/find.php3. This closes bug #103
112 * Add a small note in the FAQ about checking for sql/ldap driver availability in PHP if the user get's
113   a blank white page back.
114
115 Ver 1.70.3:
116 * Test for unset variable, rather than empty variable in clean_radacct,
117   monthly_tot_stats and truncate_radacct.
118
119 Ver 1.70.2:
120 * Fix redirects in dialup-admin pages on servers with register_globals
121   turned off.
122 * HTTP form fields will always fail is_int, use in_numeric instead.
123
124 Ver 1.70.1:
125 * Report correct data transfer statistics for users.
126 * Lower-case sql column names to match creation scripts.
127 * Fix creation of empty groups.
128 * Put quote around usernames in HTML output.
129 * Properly notice when we've got a blank password to SQL.
130
131 Ver 1.70:
132 * Add the /bin postgresql compatibility patch from Guy Fraser
133 * Add ldap_userdn as a configuration directive. If set we use that for
134   user DN's (variables supported) instead of performing and ldap search for
135   each user. That can be somewhat faster.
136 * Add a check_user_passwd() and a get_user_dn() functions in lib/ldap/functions.php3
137 * Add general_restrict_badusers_access directive. If set to yes we only allow each administrator
138   access to their own entries in the badusers table
139 * Add a username.mappings table. We are able to map each administrator username to additional queries
140   on the accounting and user settings tables.
141 * Add an sql_accounting_extra_query directive. If set this query is included in all
142   queries to the accounting tables.
143   Combined with admin username mappings we are able to easily restrict access on specific accounting data
144   to each administrator.
145 * Escape bad characters in the $login variable
146 * Add a da_sql_escape_string function. We use that for every element we pass to sql queries in order to
147   protect ourselves from sql injection.
148 * Use the ldap_userdn directive where applicable in the functions.php3 file
149 * Add an sql_xlat function
150 * Add a nas administration page for sql based clients
151 * Fix small bugs in accounting.php3 and user_stats.php3. Add nas_admin.php3 to the buttons page
152 * Add da_sql_escape_string for all relevant variables in lib/sql files
153 * Keep the nas list in a separate array $nas_list. Update various pages to use that one now.
154 * Make nas_list actually work
155 * Also allow for '-' to exist in a nas name in bin/log_badlogins
156
157 Ver 1.68:
158 * Huge PostgreSQL compatibility patch by Guy Fraser <guy@incentre.net>
159 * Also support the Crypt-Password attribute in lib/sql/password_check.php3. Patch by Guy Fraser <guy@incentre.net>
160 * Small fix in user_finger.php3
161 * Add the ability to erase rows from the badusers table
162 * In log_badlogins for multiple logins if it is a mppp attempt, log it
163 * Add a message when adding a user in the badusers table
164 * Close sql connections in add_badusers.php3
165 * Add a patch from Neil McCalden to not put spaces in the -p argument to the mysql binary.
166 * Fix a bug in conf/config.php3. Patch from Neil McCalden
167 * In log_badlogins add a newline after every sql query so that the resulting file can be editable
168 * Add a force directive in log_badlogins. If uncommented it will force inserts even if there are
169   sql errors. That can help in case there is one sql query which stops the whole failed logins
170   logging system from working
171 * Sort the servers list in failed_logins,user_stats,stats
172 Ver 1.65:
173 * Add a captions.conf file with a few configurable captions for now
174 * Move the nas list to a separate file called naslist.conf
175 * Add the ability to include configuration files in admin.conf
176 * Add a page for clearing open sessions from the database called clear_opensessions.php3. Add it in the
177   user toolbar
178 * Move the userinfo page of user_admin to a separate file so that it can be easily changed to
179   fit per installation needs
180 * Add a conf/accounting.attrs allowing the customization of the attributes in the user_accounting,
181   user_finger and failed_logins pages
182 * Add a directive to determine if the administrator will be able to change the user password from
183   the user edit page
184 * Call mysql_escape_string before running the sql query
185 * Use the sql_connect_timeout for the mysql driver
186 * Add a help page for the badusers table
187 * Also take the Session-Timeout in consideration when calcualting the remaining time in user_admin.php3
188 * Add regex matching in log_badlogins and don't expect the callerid to always be in numeric format
189 * Small html corrections in user_toolbar.html.php3
190 * Add a HOWTO from Paris Stamatopoulos
191 * create a doc directory and move the documentation files there
192 * Add a note about the HOWTO in the README file
193 * Add a few help pages for the nomadix radius attributes by Ulrich Walcher
194 * Update the HOWTO with instructions about the ldap configuration directives and the scripts in the bin folder
195 * Update the AUTHORS file
196 * Check for the binaries used (mysql/snmpwalk) in the scripts in the bin folder before using them
197 * Update the HOWTO file
198 * Use the general_domain variable from the admin.conf file in log_badlogins instead of a new one
199 * Add a sql_command directive in admin.conf containing the path to the mysql binary. That can be used by the
200   scripts in the bin folder instead of setting a variable in each script
201 * Add a general_nas_type and a per nas type directive and pass that to snmpfinger. Updated snmpfinger to also
202   support lucent equipment apart from cisco
203 * Update the HOWTO file with a few comments on the general_nas_type directive
204 * Use the User-Password attribute instead of Password in user_test.php3
205 Ver 1.63:
206 * Do an eval on the attribute description strings in the user_edit page. That will allow the login-time creation
207   page to work properly.
208 * Add a login-time creation page which will allow the administrator to create the login-time string through a gui
209   instead of writing it directly in UUCP format.
210 * Call lib/{ldap,sql}/user_info in user_info before displaying any information about the user
211 * Add a configuration directive general_charset. Add a language meta tag in all pages
212 * Use sql_extra_servers directive when adding users in the badusers table. Add a da_sql_host_connect() function
213   to connect to a specific sql host
214 * Fix a typo in lib/sql/attrmap.php3
215 * Add an entry in the FAQ about the Dialup-Access attribute
216 * Add an entry in the FAQ about duplicate personal attributes in the user_admin page
217 * Only show the personal attributes in the New User page if we have ldap or we are using the userinfo table in sql
218 * Add a per nas finger_type directive
219 * Update the TODO file
220 * Add an entry in the FAQ about adding .php3 handling
221 * Add a few installation notes
222 * Fix a problem with user_stats.php3
223 * Update the README file with notes about the scripts present in the bin folder
224 * Add a <?php tag instead of a <?. Bug noted by Isam Ishaq <isam@planet.edu>
225 * Add support for regexp and like operators in accounting report generator
226 * Limit the split() to 2 elements in lib/defaults.php3
227 * Create a AcctUniqueId before adding a row in radacct in log_badlogins.
228 * Use Max-Monthly-Session not Max-Weekly-Session for the monthly limit
229 * When checking the weekly limit check first that $remaining is numeric before doing any comparisons
230 * Add a usage_summary parameter in user_finger. If it is passed then we only output a text like:
231   "Online: <num> Free: <num>" which can be used in outside pages
232 * Use $config[sql_usergroup_table] in show_groups.php3
233 * Add a config directive general_stats_use_totacct. If set we use the totacct table in the stats page instead of
234   radacct
235 * Small change in user_accounting.php3
236 * Escape " in login_time create page before parsing the login-time string
237 * Add Service-Type in user_edit.attrs
238 * In user_finger page if $user is NULL then set it to &nbsp;
239 * Add 3 more help pages from Stadler Karel <Karel.Stadler@psi.ch> for Service-Type,Framed-Protocol and Filter-ID
240 * Make all scripts use the mysql binary instead of DBI  and make the sql password even if it is empty
241 * Make log_badlogins work with usernames containing spaces
242 * Only delete sessions which are not open in truncate_radacct. Bug noted by Evren Yurtesen <yurtesen@ispro.net.tr>
243 * Add a user input tag in user_stats.php3
244 * Change AcctStopTime = '0' with AcctStopTime IS NULL
245 * Add a few more attribute help pages from Ulrich Walcher <uwalcher@bcore.de>
246 * Also check for $server != '' in stats.php3. Bug noted by Ulrich Walcher <uwalcher@bcore.de>
247 * Consider the account locked either if Dialup-Access == FALSE or if it is not set at all
248 * Calculate weekly used time correctly (from Sunday 00:00:00)
249 * Allow for defining the ldap_filter used when searching for a user. The filter supports dynamic variables
250   like %u (username) and %U (username provided though http auth)
251 * Add a configuration directive counter_monthly_calculate_usage to calculate the monthly usage time. Calculate
252   it in user_admin if monthly_limit != 'none' or if this directive is set.
253   Based on a report by "apellido jr., wilfredo p"
254 * Add more comments in the admin.conf file
255 * Show correct calculation of the montlhy usage time.
256 * Don't show an account as locked if Dialup-Access does not exist and the mapping corresponds to 'none' attribute
257 * Make clean_radacct and truncate_radacct work correctly
258 * Fix a small bug in bytes2str. It will now also show GBs if appropriate
259 * Add an entry about the failed_logins page
260 * Update the help page for the lock message attribute
261 * Update the badusers page to also use the general_accounting_info_order directive
262 Ver 1.62:
263 * Remove one sql query from user_admin which was not needed.
264 * Instead of a query like "LIKE 'YYYY-MM-DD%'" use "AcctStopTime >= 'YYYY-MM-DD 00:00:00 AND AcctStopTime
265   <= 'YYYY-MM-DD 23:59:59'" which will allow us to use sql indexes better.
266 * Add a few comments in bin/clean_radacct
267 * Add a new script bin/truncate_radacct which will delete all sessions from the radacct table which
268   are older than a configurable number of days
269 * Fix a typo in sql.attrmap. Fix by Evren Yurtesen <eyurtese@turkuamk.fi>
270 * Work even when register_globals if off. Suggestion from Evren Yurtesen <eyurtese@turkuamk.fi>
271   Also add an entry in the FAQ about that.
272 * We don't need ORDER BY GroupName in show_groups.php3 since we have GROUP BY
273 * Use CISCO-POP-MGMT-MIB in snmpfinger instead of CISCO-CALL-HISTORY-MIB. Thanks to
274   Evren Yurtesen <eyurtese@turkuamk.fi> for the suggestion.
275 * Remember a few things in the user_test page. Also add another configuration file directive
276   general_radius_server_auth_proto specifying the default authentication protocol of the radius
277   server (pap or chap).
278 * Replace single quotes with double quotes in log_badlogins
279 * Add a missing <?php tag. Bug noted by Simon Burns <simon@ababa.org>
280 * Add sql_use_http_credentials configuration directive to connect to the sql database using the http user
281   credentials (that way there can be more than one administrator usernames, each with different privileges
282   on the sql database).
283 * Add more error messages when interacting with the SQL database
284 * Add sql_connect_timeout and sql_extra_servers configuration directives to be used by the log_badlogins script
285 * In log_badlogins create a separate sql input file for each sql server and append sql commands to it. If the
286   sql command succeeds we delete the corresponding input file. That way if an sql server is down we store the
287   accounting info in the input file and then send it all when it comes back up.
288 * Add a directive sql_debug. Add debugging statements in the sql library
289 * Add a directive ldap_debug. Add debugging statements in the ldap library
290 * Add debug statements in the pg driver
291 * In debug, output the sql queries in italic. Refer to enabling debugging in the FAQ
292 * Don't include user_info.php3 in the user_test page.
293 * Make things a little bit more simple in lib/ldap/change_attrs.php3
294 * Fix a small bug in lib/ldap/create_user.php3. Unset the mod array before adding any values to it.
295 * Fix a small problem with debugging
296 * Do a write lock in radacct before truncating it in truncate_radacct
297 * In user_new show a select box with all the available groups. Based on an idea by Karel Stadler (kstadler)
298 * Add a column Admin in the badusers table which will contain the administrator username if that is available
299 * Add two new tables totacct and mtotacct containing per user aggregated statistics for each day and month
300   respectively. Also add two corresponding scripts in the bin folder, tot_stats and monthly_tot_stats. Lastly,
301   create a new page, user_stats.php3 which will show the top users in connections or connections duration based
302   on the data in the totacct table.
303 * Add a few comments in the tot_stats and monthly_tot_stats scripts
304 * Add support for ! in usernames in log_badlogins
305 * Call gethostbyaddr with an @ in front to suppress error messages
306 * Also add support for @ in usernames in log_badlogins
307 Ver 1.61:
308 * Add a string encoder for greek
309 * If general_decode_normal_attributes is set then encode attributes in lib/ldap/change_info. In the near future
310   language specific user attributes will be added in the change info and new user pages. Remove comments from
311   admin.conf about the change info page not working if this directive is used.
312 * When spliting cn in lib/ldap/create_user.php3 limit the split to 2 new elements not 3.
313 * Fix a few bugs in log_badlogins
314 * Fix a parse error in failed_logins.php3
315 * Fix a bug in lib/defaults.php3 which did not allow the default.vals file to be used correctly
316 * Include password.php3 in lib/ldap/password_check.php3
317 * When searching a user in ldap through the find page only try to find the users which have a uid attribute (username)
318 * Allow selecting a specific access server in the failed logins page
319 * In the user admin page use AcctStartTime not AcctStopTime when calculating usage for the last 7 days
320 * Also show server:port in the user test page (so that it shows when used for server checks)
321 * Now the create user page should work with sql
322 * Make the default general_lib_type sql instead of ldap
323 Ver 1.60:
324 * Use require_once when including lib/functions.php3 in lib/sql
325 * In the buttons toolbar Edit User should not be clickable.
326 * Add an arrow gif in htdocs/images to be used in the buttons page when adding multiple finger pages
327 * In snmpfinger also consider '-' as a valid character for a username
328 * Add support for realm in username and allow for realm striping in the web pages and in log_badlogins
329 * Add a few more comments in the admin.conf
330 * Update the FAQ with an entry about the Online Users page not showing anything.
331 * Update the FAQ with an entry about sessions.
332 * Allow the user to add extra attributes in the test user page
333 * Add a few comments in log_badlogins, support auth logs containing the password, work nice when the client
334   is localhost, add an option to scan the whole radius.log and add failed logins in the sql database (can be
335   used for initialization).
336 * html fixes in accounting.php3
337 * Fix a problem in user_accounting when NASIPAddress is not set.
338 * Use CISCO-AAA-SESSION-MIB in snmpfinger
339 * In lib/ldap/functions.php3 only ask for the cn attribute in ldap_search not the whole entry. That should make
340   user_finger a lot faster when the user database is in ldap
341 * In lib/functions.php3 pass a second argument to date2timediv with the current time. user_finger calls that
342   function for each online user so we now don't need to do a lot of calls to time() but only one. That should make
343   user_finger somewhat faster.
344 * Fix a small issue with the general_accounting_info_order
345 * Fix a problem in failed_logins when NASIPAddress is not set.
346 * Allow for multiple regular profile attributes in a user entry.
347 * Allow for normal ldap user attributes to be utf8 encoded instead of ascii. Changing attribute values through
348   user_info will not work in that case.
349 * Fix a small bug in lib/ldap/defaults.php3. We should not be using $i in a for() loop but a new variable
350 * Add a comment in admin.conf about ldap server failover
351 * Map a specific username to the directory manager if we are using ldap and http authentication
352 Ver 1.59:
353 * Small html fixes in user_edit.php3 and password.php3
354 * Show number of failed logins in the last 7 days in the user admin page
355 * Show date in the user/server test page
356 * In config.php3 include a relative admin.conf file not an absolute
357 * Add an entry in the FAQ about php magic quotes
358 * Escape double quotes in attribute values in the user edit page
359 * Fix a bug in lib/sql/change_passwd.php3 when not using operators.
360   Bug report from Sheldon Fougere <sfougere@solutioninc.com>
361 * Add the caller id in the connection status attributes in the show user page
362 * Allow for multiple default values. Also add a generic flag in ldap attrmap. If it exists then the
363   attribute is generic and user values *do not* overwrite default values. The operators in the generic
364   attribute can be used for that. The same is very difficult to implement for sql, so for now user
365   values overwrite default values in sql (user edit page).
366   A lot of code and a lot of files where changed so there may be bugs somewhere.
367 * In the user edit page print a message under the User Password field about if it exists or not. Update
368   the user_info.php3 lib files to check for it.
369 * In lib/ldap/defaults.php3 Dialup-Access should not be added in the default_vals. It is not inherited.
370 * If we are editing a group show a comment that in the radiusd sql module the group tables are evaluated
371   after the user tables. As a result user values should in general overwrite default values.
372 * Add support for the default_user_profile of the sql module in lib/sql/defaults.php3
373 * In sql.attrmap User-Password should map to User-Password, not Password
374 * If an sql attribute is not contained in sql, assume that it has the same name as in dialup_admin and that
375   it is a reply item. Add a comment for that in conf/sql.attrmap.
376 * Change the way radius attributes are read from the sql database. The change should make things somewhat
377   faster. Create a reverse mapping from radius attributes to dialup_admin attributes.
378 * Add a configuration directive called ldap_use_http_credentials. If it is set to yes then we try to
379   connect to the ldap server with the username/password given in http authentication, not those contained
380   in admin.conf. That way multiple admins with different permissions on the ldap tree can work on a single
381   dialup_admin.
382 * With the same logic we allow for multiple buttons html pages. We now create a folder html/buttons which
383   by default contains a folder default. If the user logs in with http authentication then we try
384   to open the file html/buttons/<username>/buttons.html.php3. If we can't we open
385   html/buttons/default/buttons.html.php3. That way we can create muiltiple views of say the online users
386   page based on which admin requests the page.
387 * Call config.php3 before outputing any html.
388 * Add sessions in order to cache the various mappings. Add a corresponding configuration directive
389   general_use_session. Also add a session cache destroy page.
390 * Also cache the admin.conf if use_session is set to 1 in config.php3
391 * Fix a few bugs
392 * Remove the auto password generator from the user edit page. It has no meaning since the password is not
393   shown
394 * In lib/sql/defaults.php3 instead of doing a select for each group the user belongs to, do one select with
395   a where in () caluse.
396 * Also cache the default.vals file.
397 * Update documentation
398 * Only connect and bind to the ldap server if we haven't done that before.
399 * Remove previous change. It was causing problems
400 * In the user test page ignore comments from the auth.request file
401 * Add a new config directive, ldap_write_server. If it is set then when we update the directory we try to
402   connect to that one instead of the ldap_server. That way we can read from the fast read-only replicas and
403   write to a slower master.
404 * Fix a few more bugs
405 * Add a failed logins page, to show the most recent failed logins.
406 * Fix a bug in the failed logins page
407 * Change use of AcctStartTime with AcctStopTime in failed_logins.php3 to match that in user_admin
408 * Fix a bug with failed logins in user_admin.
409 * Add the failed logins page in the buttons page
410 * Add a missing WHERE UserName = '$login' in the UPDATE statement in lib/sql/change_info.php3. Patch by
411   Eddie Bindt <eddieb@users.sourceforge.net>
412 Ver 1.55:
413 * Update the FAQ about missing attributes from the user/group edit pages and add a few comments
414   in the configuration files
415 * Add support for the Expiration attribute. Add it in the sql attribute map, in user_edit.attrs and
416   check for it in user_admin
417 * Add a few more keys in the userinfo and badusers tables.
418 * Fix a problem with lib/sql/defaults.php3 where the first character in the default value when using
419   operators was set to the opeator
420 * Add a user find page. User can be searched based on the full name, department or RADIUS attribute.
421   The radius attribute should be included in the _user_ profile, not in a group/regular/default profile.
422 * Add support for the user ldap regular profile attribute in user_edit.attrs
423 * Fix a stupid bug in accounting.php3. We should not use the show_attrs array.
424 Ver 1.54:
425 * Add attributes for the sql group tables in admin.conf. Now SQL group support should really work!
426 Ver 1.53:
427 * html fixes in show_groups.php3
428 * When reporting sql errors also print the output of da_sql_error
429 * When updating ldap user information don't do an update if the new attribute value
430   is '-' (default value)
431 * Comment out Reply-Message in conf/user_edit.attrs since in sql it maps to the same attribute as
432   the lock message
433 Ver 1.52:
434 * Add Reply-Message in conf/user_edit.attrs so that it appears in the user/group edit pages
435 * Allow the administrator to specify a group in the New User page. Update lib/sql/create_user.php3 to add
436   the user to the specified group
437 * Call user_info.php3 and defaults.php3 in user_new.php3 after creating a user
438 * Only run if $login is not NULL in lib/sql/defaults.php3
439 * In group admin add a button to administer the selected user which will redirect the administrator to the
440   corresponding user_admin page
441 * Add a show_groups.php3 to show all active user groups
442 Ver 1.51:
443 * Only call user_info.php3 in user_new.php3 when we are creating a user
444 * Fix a bug with personal information attributes in user_new.php3
445 Ver 1.50:
446 * Add support for groups in SQL. Added several new files and modified a few more.
447 * Default values in SQL are now extracted from the group membership. Added a lib/sql/defaults.php3 file.
448   As a result the default operator is not '=' anymore but whatever we find in the group check and reply tables.
449 * In lib/sql/user_info.php3 set user_exists in more than one places.
450 * Add support for the '=*' and '!*' operators
451 * Added a HELP_WANTED file describing what are the major things missing which people could contribute.
452 * Updated TODO
453 * Added a help page for the Session Timeout and Idle Timeout attributes.
454 * The new group page should only be available if the general library type is sql.
455 * Fix a small bug in lib/sql/create_user.php3 where work and home phone were stored in the wrong fields.
456 * Set personal information attributes in lib/sql/user_info.php3 to default values.
457 * Add a page to change the user's personal information. Changed the user toolbar and added htdocs/user_info.php3
458   along with lib/{sql,ldap}/change_info.php3
459 * Print a message if we can't connect to the ldap server in lib/ldap/user_info.php3
460 * Use a textarea for new members in group_admin.php3 and group_new.php3. Update lib/sql/create_group.php3 and
461   lib/sql/group_admin.php3
462 * Set a few more personal information attributes to defaults in lib/sql/user_info.php3
463 * Fix a typo for department
464 * Set personal information attributes to defaults in lib/ldap/user_info.php3
465 * Have adddress and home address in user personal info
466 * Set $user_info in lib/{ldap,sql}/user_info.php3 and only if the user exists and has personal info
467 * Show language attributes only if general_prefered_lang is not 'en'
468 Ver 1.30:
469 * Add limit of results returned in accounting.php3
470 * Fix a bug in time2strclock() in lib/functions.php3. Seconds ammount more than 9 would not show.
471   Bug noted by Timophey <bcloud@mail.ru>
472 * Reaarange a few things in user_admin. Put Subscription Analysis first and 'Account Status' second. Make a
473   few things bold.
474 * Change log_badlogins to use the mysql binary instead of the DBI module. That way we don't have any
475   dependencies and we don't need to bother with connection maintainance (dead mysql connections etc).
476 * html fixes in user_finger.php3
477 * Fix a bug in lib/add_badusers.php3 which did not allow inserts in the badusers table.
478 * Make lib/ldap/password_check.php3 behave properly when it is passed a null password
479 * Allow for daily/weekly/monthly limits to be set to none and show correct results in the show user page
480 * Fix a small bug in user_admin.php3.
481 * Pass the whole password as salt in da_encrypt() in password_check.php3
482 * Refresh the online users page every 50 secs. Patch by Alexandre Strube <surak@barroco.com.br>
483 * Check if the last logged in server and client ip are valid before calling gethostbyaddr
484 * If the same attribute appears more than once in the user edit page then show a count of the number of
485   occurences next to the attribute name
486 * Add a server argument to user_finger.php3. If it is set then the page will only show the logged in users
487   in that access server instead of all of them. Update the README with documentation for that fact.
488 Ver 1.29:
489 * Add general_ld_library_path directive and set LD_LIBRARY_PATH accordingly (used in snmpfinger and
490   radaclient).
491 * Add general_finger_type directive to determine if we will use snmpfinger in user_finger.php3
492 * Fix a bug in config.php3 when we have a directive containing ':'
493 * Fix a bug in lib/ldap/change_attrs.php3 that did not allow changing more than one value of a 
494   multivalued attribute simultaneously.
495 * Added selection of ordering in user_accounting.php3. Now it can be either ascending (older records
496   first) or descending (most recent records first). Added a corresponding configuration directive.
497 * Added operator support in sql. The eq(=),set(:=) and add(+=) operators are supported. Added an
498   sql_use_operators configuration directive. Hope everything works.
499 * Fixed a bug in sql/change_attrs which did not allow multi valued attributes in sql.
500 * unset item_vals before adding info in ldap and sql user_info files.
501 * Add support for the rest of the operators. Created the lib/operators.php3 file containing helper functions
502 * Fix a small bug in log_badlogins. The nas domain should be a variable not hard coded.
503 * Fix a bug in lib/sql/delete_user.php3. Call da_sql_query with the correct arguments
504 Ver 1.28:
505 * Make user_delete.php3 print something when a user is deleted
506 * Cache nas hostname lookups in user_accounting
507 Ver 1.27:
508 * Allow for variable expansion in the configuration file. Something like:
509   general_base_dir: /usr/local/dialup_admin
510   general_default_file: %{general_base_dir}/conf/default.vals
511 * Small changes in the README file
512 * A few corrections in the sql drivers
513 * Enlarged the textboxes in the user_edit page
514 * Created a folder help
515 * Added a help page for:
516    o Login-Time
517    o Simultaneous-Use
518    o Dialup-Access
519    o Framed-Compression
520    o Port-Limit
521    o Lock Message
522    o Framed-IP-Address
523 Ver 1.26:
524 * A few bugfixes for the general sql code (typo mistakes mostly)
525 Ver 1.25:
526 * Deleted a mysql_close from lib/mysql/create_user since we now have persistent sql connections
527 * Removed the select_db() from accounting.php3 since it is not needed
528 * A lot of html changes in accounting.php3
529 * Changed the sql code to be modular. Now under lib we don't have a mysql directory but a sql directory
530   with a directory drivers which contains the database specific functions. As a result all calls to mysql*
531   functions where changed to call da_sql* functions. Right now mysql should work and postgresql *may* work
532   It is not tested though. Hopefully things will come back to being stable in a few days.
533 * Added sql_port and sql_type configuration file directives
534 Ver 1.20:
535 * Fixed a bug in lib/ldap/change_attrs. When we modify an attribute do an ldap_mod_del($mod) and then a
536   ldap_mod_add($add_r)
537 * In accounting.php3 show the attribute description instead of the attribute name.
538 Ver 1.19:
539 * In lib/ldap/check_password.php3 don't do a user search but use the already available user DN
540 * Remove the language support from the get_user_info() functions. They are only used in the user_finger page
541 * In user_state show weekly usage for the week starting from sunday 00:00, not for the last 7 days
542 * Show upload/download when connected or for the last time the user connected
543 * Fixed a few minor problems with the help and about pages
544 Ver 1.18:
545 * Fixed a small problem with total upload,download numbers in user_admin
546 * Fixed a major problem in the accounting report generator when adding an attribute check. Now it
547   should be all OK.
548 * Fixed a small bug in lib/mysql/functions.php3. Bug found be galileo@microsky.net
549 Ver 1.17:
550 * Fixed a few more problems in the mysql code
551 * Updated README
552 * the help page now prints the README file. It also has a common layout with the other pages
553 * Changed the about page to have a common look with the other pages.
554 Ver 1.16:
555 * Fixed a few typing mistakes in mysql.attrmap
556 * If the corresponding attribute name (in ldap or mysql) is 'none' then do not
557   edit/add it. Based on a bug report by galileo@microsky.net
558 * Fixed a few errors in lib/attrshow.php3
559 Ver 1.15:
560 * Added user test page. It will use radclient to send a radius access-request
561   to the radius server and check the response. This page is also used to check
562   that the radius server is working fine. Added user_test.php3 and a few config
563   file parameters.
564 * Support for multi valued attributes.
565 * Changed cleartext encryption name from none to clear
566 * Renamed the general_sql_row_limit configuration directive to sql_row_limit
567 Ver 1.12:
568 * Added an FAQ
569 * Small changes in html code
570 * Small changes in the README file
571 * Fixed a small problem in delete_user from ldap
572 * Removed the Base64 encode since it was causing problems
573 Ver 1.11:
574 * Changed all ldap_bind() to use the ldap bind DN and password. Should have been
575   the default behaviour
576 * Do a Base64 encode in ldap/change_password.php3 before sending the password to
577   the ldap server
578 * Added support for module messages in log_badlogins and user_accounting
579 * Updated documentation
580 Ver 1.10:
581 * Added support for users in mysql database. All bugs are welcome. To activate
582   just use mysql as library_type
583 * Added support for salt in crypt.php3
584 * Added userinfo table to keep information for users (Name,Phone etc). Added two
585   corresponding values in admin.conf
586 * Added mysql.attrmap for mysql support
587 * Added TODO
588 * Added persistent connections for mysql (mysql_pconnect())
589 Ver 1.00:
590 * Added password change facility in user_edit. Support for multiple
591   password encryption methods
592 * Added user deletion page user_delete.php3 with corresponding ldap lib code
593 * Moved the second user_info.php3 include in user_edit to the correct location. Also
594   used isset instead of == ''
595 * Moved the action toolbar (show,edit,accounting...) into a separate html file
596 * Added the nas model in user_finger.php3
597 Ver 0.99.8:
598 * Added the caller id in the finger facility
599 * Changed the start date in the badusers file to 0000
600 * Added the out of quota message in user_admin
601 * fixed a few problems with the html code in user_admin.php3
602 * calculate account status in user_admin for the last week only
603 * Change font color to red if used time > corresponding limit (weekly or daily)
604 * Added the user_stats.php3. It can be used by outside pages to get a quick
605   overview of the status of the user. It will return the following fields
606   separated by new lines:
607   account_status(active or inactive),lock message,weekly limit,daily limit,
608   weekly used,weekly connections,daily used,daily connections
609 * fixed a bug in the subscription analysis in user_admin.php3
610 * calculate weekly used from sunday 00:00:00 when the counters reset
611 * added clean_radacct which will clean radacct entries which have been open
612   for more than a day. It will not do any harm even if it is incorrect since
613   when rlm_sql runs if the update operation fails then it will fall back to
614   insert (see sql.conf)
615 * added log_badlogins. It will continuously read the radius.log file and log
616   to the radacct table all login incorrect and multiple logins with a
617   corresponding acctterminatecause. user_accounting.php3 is already prepared
618   for this (it will show those entries in red)
619 * fix a small bug with null values in change_vals.php3 of the ldap lib
620 Ver 0.99:
621 * Added the badusers table
622 * Added the default and regular profile from ldap for user_edit
623 * Added the snmpfinger in the finger facility so that it will not
624   relly on the sql database.
625 * Added the new user facility
626 * Added support for the Lock Message facility
627 * Various bug fixes and enhancements
628
629 Ver 0.31:
630 * Added the @ sign in the {mysql,ldap}_{open,close} functions so that
631   they don't show error messages
632 * Changed double quotes with single quotes where applicable for performance
633   reasons