]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Merge - fixed conflicts in chanserv/authcmds/authhistory.c.
authorsplidge <redacted>
Sat, 20 Feb 2010 21:04:36 +0000 (21:04 +0000)
committersplidge <redacted>
Sat, 20 Feb 2010 21:04:36 +0000 (21:04 +0000)
1  2 
chanserv/authcmds/authhistory.c

index ac3f8fd9b459b81392ae99331f932c978e8d1458,1816a0376acbf455cea15c987a21dfdd08821a39..44f32a278a105cfb68edd88462ba789744828697
@@@ -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;
  }