How to create a list of users that have ever authenticated

Wildfire was very easy to setup and get running with our LDAP server. I’'ve had the server running for a could of months now and I want to determine how many people are actually using it.

I’'ve a seen the list of active sessions, but, what I want to know is how many users have ever used the server. Even once.

I thought that I could use “Users/Groups” tab in the web interface, but, that seems to show all users in the LDAP data base rather than the ones that have used the wildfire server. (I expected users only to be imported when they authenticated)

Can someone tell me how to determine who of the 6,916 potential users I have have actually logged into the server?

I thought that searching for, “lastActivity” in the wildfire.script file would tell me, but, there are users that I know are active that are missing from that list.

Thanks,

Eric

Hi Eric,

I think creating a plugin that is registered as PacketInterceptor could be a way to meet your request. By intercepting and manipulating , your plugin code could mark a flag in your database or even increment a login counter that refers to the number of times users login to Wildfire.

Hi Eric,

Another approach would be query your database for all users who have one or more contacts in their roster list. This approach won’‘t necessrily tell you everyone who has ever logged in, rather it will tell you who logged in and used the system to message someone (assuming you’‘re not using the shared group feature). Since you’‘re using Wildfire’‘s embedded database you can follow my suggestion in this thread or feflov’'s suggestion in this thread on how to query the data.

If you do decide to go the plugin route that aznidin suggested, you would probably be better off using a Session Event Listener rather than a packet intereceptor.

Hope that helps,

Ryan

Thank you Ryan and aznidin for your replies. I was really hoping that I didn’‘t understand the data base scheme or the log file format and I could simply grep for something. I’'m going to start off by trying Ryan suggestion of counting users that have at least one contact in their roster.

Eric

I have a suggestion for getting this data. For each user, Wildfire stores the last time they logged into the server. These get stored as “user properties” in the database table jiveUserProp. The following SQL query should work:

select username, propValue from jiveUserProp where name=’‘lastActivity’’ order by propValue DESC;

Note that the order by is in there so that the usernames are shown in the order that they last logged into the system. Let me know how that works!

Regards,

Matt

As always, great suggestion Matt.

Matt,

I had been browsing and grepping though the wildfire.script file before and thought that I had found my answer when I saw “lastActivity”. However, there were always users that I knew were active that were missing.

However, your post encouraged me to keep looking. I think what I discovered is that since I’‘m using the embedded database the data that was missing had not be written to the .script file because it was created after the last server restart. After stopping and restarting the server it appears I have all my data. I assume the restart wasn’'t needed.

I have two follow up questions.

  1. Is there a way to dump the embedded database to the .script file without stopping the server?

  2. Is there a way to run SQL commands on the embedded server?

Thanks again Matt.

Eric

Hi Eric,

it will happen as soon as the .log file reaches 200 MB - you can tune this value anyhow in wildfire.properties (Wildfire should be down while you edit the file):

hsqldb.log_size=200

You’'d need to execute a “CHECKPOINT” or “CHECKPOINT DEFRAG” sql command to do this manually.

There’'s no way to run SQL commands, one would need to include such a feature in Wildfire as the “embedded” mode allows only one process to use the database.

It would indeed be a good thing if one could run “CHECKPOINT DEFRAG” at 4 am or something like this at it may take some time and at 4 am there are usually not too much users online.

LG

Thanks for the info LG.

With users in India, USA, and China it is hard to find a good time for the server to be down. I try to limit down time to Saturday night in the USA (Sunday everywhere else)

Cheers,

Eric

Eric,

One thing you could do is create a plugin that executes the db query and then displays the info you want in a JSP page. Plugins can be dynamically added and removed from Wildfire, so it should work well in your production environment.

Regards,

Matt

Hi Matt,

I did already ask Gato - without creating an issue - about a thread which does a CHECKPOINT or DEFRAG every 24 hours so one can backup the database more easy as the file is much smaller.

Maybe one should also do this as a plugin as it is only useful for hsqldb users.

LG