Hi, I like to have a "there are x users on our IRC server" message on our website. Maybe there are others out there who might want to do the same, that's why I'm writing this mail. Till now I used php: $sock = fsockopen("localhost", 6667); fputs($sock, "nick IdleTest\r"); fputs($sock, "user idle . . :Idle-Test\r"); $result = fgets($sock, 4096); $result = fgets($sock, 4096); $result = fgets($sock, 4096); $result = fgets($sock, 4096); $result = fgets($sock, 4096); $result = fgets($sock, 4096); $n = sscanf($result, ":irc.server.url %d IdleTest :There are %d users %s", &$comid, &$users, &$rest); fputs($sock, "quit\r"); fclose($sock); $users--; //subtract the telnet connection echo "There are $users users on our IRC server";
It works but I found this solution unsatisfying so I changed the ngircd code and recompiled. I added/changed after line 365 BOOLEAN timeout; int alte_anz = -1; int anz_user = 0; FILE * fp_users;
start = time( NULL ); while(( ! NGIRCd_SignalQuit ) && ( ! NGIRCd_SignalRestart )) { anz_user = Client_UserCount(); if(anz_user != alte_anz) { fp_users = fopen("/srv/www/htdocs/chat/chat.users", "w"); if(fp_users != NULL) { fprintf(fp_users, "%i\n", anz_user); fclose(fp_users); } alte_anz = anz_user; }
timeout = TRUE; ... in conn.c after Check_Connections( ); so it will constantly write the number of users on the server to a file (in this case a file in the web directory) when the number changes. All the changes are between the timeout variable so you can easily find them. If you need more flexibility you could make the filename (and the whole piece of code) an additional option (I found no fitting free character for it (maybe -u filename?) and don't need the flexibility). BTW: Why is there --version and --help but not -v and -h? Hope you like it/can need it too.
Yours, Jens
Am 11. Okt 2004 um 8:05 Uhr schrieb Jens Kleine:
Hope you like it/can need it too.
Thanks for posting this!
Probably ngircd will get a "status/statistics interface" sometime, but actually I'm suffering on lack of time :-/
Regards Alex
Since some days I have a ghost user connected to my server. The list users command always returns one user more than I can count on the channels. Is there any way (including code changing and recompiling) to find out where that connection comes from?
Yours Jens