X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/blobdiff_plain/b729f732b5a089cf9073ecfadc49c967ded846af..8c684fca9c7dbb4a2601628c744be9236ee68641:/chanserv/usercmds/unsuspenduser.c diff --git a/chanserv/usercmds/unsuspenduser.c b/chanserv/usercmds/unsuspenduser.c index 846fc346..0b308916 100644 --- a/chanserv/usercmds/unsuspenduser.c +++ b/chanserv/usercmds/unsuspenduser.c @@ -3,11 +3,11 @@ * * CMDNAME: unsuspenduser * CMDLEVEL: QCMD_OPER - * CMDARGS: 1 + * CMDARGS: 2 * CMDDESC: Unsuspend a user. * CMDFUNC: csu_dounsuspenduser * CMDPROTO: int csu_dounsuspenduser(void *source, int cargc, char **cargv); - * CMDHELP: Usage: unsuspenduser + * CMDHELP: Usage: unsuspenduser * CMDHELP: Unsuspends the specified user. */ @@ -19,17 +19,23 @@ int csu_dounsuspenduser(void *source, int cargc, char **cargv) { nick *sender=source; reguser *rup=getreguserfromnick(sender); - reguser *vrup; + reguser *vrup, *suspendedby; char action[100]; + char *csuspendedby, *csuspendreason; + char *unsuspendreason; if (!rup) return CMD_ERROR; - if (cargc < 1) { + if (cargc < 2) { chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "unsuspenduser"); return CMD_ERROR; } - + + unsuspendreason = cargv[1]; + if(!checkreason(sender, unsuspendreason)) + return CMD_ERROR; + if (cargv[0][0] == '#') { if (!(vrup=findreguserbynick(&cargv[0][1]))) { chanservstdmessage(sender, QM_UNKNOWNUSER, &cargv[0][1]); @@ -58,24 +64,32 @@ int csu_dounsuspenduser(void *source, int cargc, char **cargv) { if (UHasOperPriv(vrup) && !UHasAdminPriv(rup)) { snprintf(action, 99, "unsuspenduser on %s", vrup->username); chanservstdmessage(sender, QM_NOACCESS, action); - chanservwallmessage("%s (%s) FAILED to unsuspend %s", sender->nick, rup->username, vrup->username); + chanservwallmessage("%s (%s) FAILED to UNSUSPENDUSER %s", sender->nick, rup->username, vrup->username); + cs_log(sender, "UNSUSPENDUSER FAILED (not admin) %s", vrup->username); return CMD_ERROR; } if (UIsDelayedGline(vrup)) { - strcpy(action, "removed delayed gline on"); + strcpy(action, "delayed gline"); } else if (UIsGline(vrup)) { - strcpy(action, "removed instant gline on"); + strcpy(action, "instant gline"); } else if (UIsSuspended(vrup)) { - strcpy(action, "unsuspended"); + strcpy(action, "normal"); } else { - chanservsendmessage(sender, "Unknown suspend type encountered."); + chanservsendmessage(sender, "Unknown suspension type encountered."); return CMD_ERROR; } - + + suspendedby = findreguserbyID(vrup->suspendby); + csuspendedby = suspendedby?suspendedby->username:"(unknown)"; + csuspendreason = vrup->suspendreason?vrup->suspendreason->content:"(no reason)"; + + chanservwallmessage("%s (%s) used UNSUSPENDUSER on %s, type: %s, suspended by: %s, suspension reason: %s, unsuspend reason: %s", sender->nick, rup->username, vrup->username, action, csuspendedby, csuspendreason, unsuspendreason); + cs_log(sender,"UNSUSPENDUSER %s (%s, by: %s reason: %s), reason: %s", vrup->username, action, csuspendedby, csuspendreason, unsuspendreason); + vrup->flags&=(~(QUFLAG_GLINE|QUFLAG_DELAYEDGLINE|QUFLAG_SUSPENDED)); vrup->suspendby=0; vrup->suspendexp=0; @@ -83,7 +97,6 @@ int csu_dounsuspenduser(void *source, int cargc, char **cargv) { vrup->suspendreason=0; csdb_updateuser(vrup); - chanservwallmessage("%s (%s) %s %s", sender->nick, rup->username, action, vrup->username); chanservstdmessage(sender, QM_DONE); return CMD_OK; }