From: splidge Date: Sat, 20 Feb 2010 21:04:36 +0000 (+0000) Subject: Merge - fixed conflicts in chanserv/authcmds/authhistory.c. X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/063c7d263a4e744b801148a0e7fd425782713d11?hp=-c Merge - fixed conflicts in chanserv/authcmds/authhistory.c. --- 063c7d263a4e744b801148a0e7fd425782713d11 diff --combined chanserv/authcmds/authhistory.c index ac3f8fd9,1816a037..44f32a27 --- a/chanserv/authcmds/authhistory.c +++ b/chanserv/authcmds/authhistory.c @@@ -3,7 -3,7 +3,7 @@@ * * CMDNAME: authhistory * CMDLEVEL: QCMD_AUTHED - * CMDARGS: 1 + * CMDARGS: 2 * CMDDESC: View auth history for an account. * CMDFUNC: csa_doauthhistory * CMDPROTO: int csa_doauthhistory(void *source, int cargc, char **cargv); @@@ -94,49 -94,54 +94,67 @@@ void csdb_doauthhistory_real(DBConn *db void csdb_retreiveauthhistory(nick *np, reguser *rup, int limit) { struct authhistoryinfo *ahi; + char limitstr[30]; + + if (limit) { + sprintf(limitstr, " limit %d",limit); + } else { + limitstr[0]='\0'; + } ahi=(struct authhistoryinfo *)malloc(sizeof(struct authhistoryinfo)); ahi->numeric=np->numeric; ahi->userID=rup->ID; q9a_asyncquery(csdb_doauthhistory_real, (void *)ahi, "SELECT userID, nick, username, host, authtime, disconnecttime, quitreason from chanserv.authhistory where " - "userID=%u order by authtime desc limit %d", rup->ID, limit); + "userID=%u order by authtime desc%s", rup->ID, limitstr); } int csa_doauthhistory(void *source, int cargc, char **cargv) { reguser *rup, *trup; nick *sender=source; - + unsigned int arg=0; + unsigned int limit=10; + if (!(rup=getreguserfromnick(sender))) return CMD_ERROR; - if (cargc >= 1) { - if (!(trup=findreguser(sender, cargv[0]))) + if (cargc) { + if (!ircd_strcmp(cargv[0], "-a")) { + if (UHasOperPriv(rup)) + limit=0; + + arg++; + } + } + + if (cargc > arg) { + if (!(trup=findreguser(sender, cargv[arg]))) return CMD_ERROR; - /* don't allow non-opers to view oper auth history, but allow helpers to view non-oper history */ - if ((trup != rup) && ((UHasOperPriv(trup) && !UHasOperPriv(rup)) || !UHasHelperPriv(rup))) { - chanservstdmessage(sender, QM_NOACCESSONUSER, "authhistory", cargv[arg]); - return CMD_ERROR; + /* if target != command issuer */ + if (trup != rup) { + /* only opers and helpers can view authhistory of other users */ + if (!UHasHelperPriv(rup)) { - chanservstdmessage(sender, QM_NOACCESSONUSER, "authhistory", cargv[0]); ++ chanservstdmessage(sender, QM_NOACCESSONUSER, "authhistory", cargv[arg]); + return CMD_ERROR; + } + + /* and only opers can view opers history */ + if (UHasOperPriv(trup) && !UHasOperPriv(rup)) { + chanservwallmessage("%s (%s) just FAILED using AUTHHISTORY on %s", sender->nick, rup->username, trup->username); - chanservstdmessage(sender, QM_NOACCESSONUSER, "authhistory", cargv[0]); ++ chanservstdmessage(sender, QM_NOACCESSONUSER, "authhistory", cargv[arg]); + return CMD_ERROR; + } + + /* checks passed */ - + chanservwallmessage("%s (%s) used AUTHHISTORY on %s", sender->nick, rup->username, trup->username); } } else { trup=rup; } - csdb_retreiveauthhistory(sender, trup, 10); - ++ + csdb_retreiveauthhistory(sender, trup, limit); return CMD_OK; }