X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fmrtg%2Fserv_mrtg.c;h=2a7d2408447c960eadaa617c2bcf1ce900334754;hb=6106c1da54f0923550c7bdceb45246fb88e9ea19;hp=666e04a413561f976ea2468c53ddcc2fa0c211e2;hpb=9efa4f1ce48d5022eb427773faa3284712205fc3;p=citadel.git diff --git a/citadel/modules/mrtg/serv_mrtg.c b/citadel/modules/mrtg/serv_mrtg.c index 666e04a41..2a7d24084 100644 --- a/citadel/modules/mrtg/serv_mrtg.c +++ b/citadel/modules/mrtg/serv_mrtg.c @@ -1,12 +1,25 @@ /* - * $Id$ - * * This module supplies statistics about the activity levels of your Citadel * system. We didn't bother writing a reporting module, because there is * already an excellent tool called MRTG (Multi Router Traffic Grapher) which * is available at http://www.mrtg.org that can fetch data using external * scripts. This module supplies data in the format expected by MRTG. * + * Copyright (c) 1987-2009 by the citadel.org team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "sysdep.h" @@ -40,9 +53,7 @@ #include "support.h" #include "config.h" #include "control.h" -#include "room_ops.h" #include "user_ops.h" -#include "policy.h" #include "database.h" #include "msgbase.h" @@ -109,6 +120,37 @@ void mrtg_messages(void) { } +struct num_accounts { + long total; + long active; +}; + +/* + * Helper function for mrtg_accounts() + */ +void tally_account(struct ctdluser *EachUser, void *userdata) +{ + struct num_accounts *n = (struct num_accounts *) userdata; + + ++n->total; + if ( (time(NULL) - EachUser->lastcall) <= 2592000 ) ++n->active; +} + + +/* + * Number of accounts and active accounts + */ +void mrtg_accounts(void) { + struct num_accounts n = { + 0, + 0 + }; + + ForEachUser(tally_account, (void *)&n ); + mrtg_output(n.total, n.active); +} + + /* * Fetch data for MRTG */ @@ -123,9 +165,11 @@ void cmd_mrtg(char *argbuf) { else if (!strcasecmp(which, "messages")) { mrtg_messages(); } + else if (!strcasecmp(which, "accounts")) { + mrtg_accounts(); + } else { - cprintf("%d Unrecognized keyword '%s'\n", - ERROR + ILLEGAL_VALUE, which); + cprintf("%d Unrecognized keyword '%s'\n", ERROR + ILLEGAL_VALUE, which); } } @@ -138,5 +182,5 @@ CTDL_MODULE_INIT(mrtg) } /* return our Subversion id for the Log */ - return "$Id$"; + return "mrtg"; }