Re-work of the web-interface to improve on design, CSS styling and inclusion of sidebar and footer code
2010-05-11 new version 1.2.2
New Features
Adding suport for MySQL DB in addition to Oracle. This turned out to be tricky. MySQL not only has slightly different data types, but vastly different functions for date/time handling and its trigger mechanism is still limited (no updates to the calling table). Therefore less reliance on SQL and more extra code especially in the loader was required. On the plus side, MySQL is a breeeze to set up.
Bugfixes
router-list.cgi and user-list.cgi failed if a new entry (router or user) was created but no stop record had been seen yet (session in progress). This was a rare case, because most often the first connection of a user or router is typically a test and therefore quite quite short.
2008-03-02 new version 1.2.1
adding charts generation for daily statistics, reachable by click of the monthly statistics chart
re-write of edacs-chartsgen to correctly handle new reporting routers.
Elimination of compiler warnings due to changing const ** variable, also eliminating "strcpy"
2007-09-18 new version 1.2
added user-info.cgi, showing the remote IP or phone numbers a user is coming from
added the cgi crosslinks for quicker access to session data
2007-04-10 new version 1.1
Complete re-work of EDAcS. Changing CGI from Perl to 'C' and Perl's DBD/DBI to Oracle Instantclient (OCI) and libsqlora.
2006-10-11 initial version 1.0
I renamed the tables with the "edacs" identifier prefix to avoid confusion. The old names with dialin do not reflect the extended use for VPN and other connections we track
Format change of the session ID from number to string. The number is not used in any calculations, so it doesn't make sense to convert the hex string we got. For simplicity and comparision with the original log file, it is kept as a hex string.
I changed the format of the action string to keep the first character upper caseof the "Status" words (Start/Stop/Update). In the old version, this had been transformed to lowercase without reason
I added a primary key to the edacs_templog table to avoid the loading of duplicate entries. Although the trigger for moving data to the edacs_mainlog table would catch duplicates there, it would fill up the templog table unnecessarily. Duplicate entries would come from loading the same raw data again, which would happen if there is a error in processing or if files have been copied into the RAW_DIR or GOOD_DIR directories by hand
The next changes clean out the edacs_templog table once the session records are transfered to the edacs_mainlog table. In the old version, they simply grew infinite. :-)
First, I changed the database trigger by adding a function to delete records from templog once the connection information is complete, meaning a 'Stop' record has been received. This cleans up the templog table. Zombie records might come into existence when 'Stop' records get lost (i.e. not received by Radius). It could also happen that a 'Stop' record is loaded for which no 'Start' or 'Update' record exists. This happens if we start processing new Radius files but do not have all the historic entries (i.e. after Radius outages).
'Stop' records itself become zombies because they do not delete themselfes in templog when the delete function above is effective. Since Stop records become useless after they have updated the mainlog table, they will be deleted with each subsequent 'Start' or 'Update' record through the trigger.