]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/usercmds/unsuspenduser.c
1 /* Automatically generated by refactor.pl.
4 * CMDNAME: unsuspenduser
7 * CMDDESC: Unsuspend a user.
8 * CMDFUNC: csu_dounsuspenduser
9 * CMDPROTO: int csu_dounsuspenduser(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: unsuspenduser <username> <reason>
11 * CMDHELP: Unsuspends the specified user.
14 #include "../chanserv.h"
15 #include "../../lib/irc_string.h"
19 int csu_dounsuspenduser(void *source
, int cargc
, char **cargv
) {
21 reguser
*rup
=getreguserfromnick(sender
);
22 reguser
*vrup
, *suspendedby
;
24 char *csuspendedby
, *csuspendreason
;
25 char *unsuspendreason
;
31 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "unsuspenduser");
35 unsuspendreason
= cargv
[1];
36 if(!checkreason(sender
, unsuspendreason
))
39 if (cargv
[0][0] == '#') {
40 if (!(vrup
=findreguserbynick(&cargv
[0][1]))) {
41 chanservstdmessage(sender
, QM_UNKNOWNUSER
, &cargv
[0][1]);
48 if (!(np
=getnickbynick(cargv
[0]))) {
49 chanservstdmessage(sender
, QM_UNKNOWNUSER
, cargv
[0]);
53 if (!(vrup
=getreguserfromnick(np
)) && sender
) {
54 chanservstdmessage(sender
, QM_USERNOTAUTHED
, cargv
[0]);
59 if (!UHasSuspension(vrup
)) {
60 chanservstdmessage(sender
, QM_USERNOTSUSPENDED
, cargv
[0]);
64 if (UHasOperPriv(vrup
) && !UHasAdminPriv(rup
)) {
65 snprintf(action
, 99, "unsuspenduser on %s", vrup
->username
);
66 chanservstdmessage(sender
, QM_NOACCESS
, action
);
67 chanservwallmessage("%s (%s) FAILED to UNSUSPENDUSER %s", sender
->nick
, rup
->username
, vrup
->username
);
68 cs_log(sender
, "UNSUSPENDUSER FAILED (not admin) %s", vrup
->username
);
72 if (UIsDelayedGline(vrup
)) {
73 strcpy(action
, "delayed gline");
75 else if (UIsGline(vrup
)) {
76 strcpy(action
, "instant gline");
78 else if (UIsSuspended(vrup
)) {
79 strcpy(action
, "normal");
82 chanservsendmessage(sender
, "Unknown suspension type encountered.");
86 suspendedby
= findreguserbyID(vrup
->suspendby
);
87 csuspendedby
= suspendedby
?suspendedby
->username
:"(unknown)";
88 csuspendreason
= vrup
->suspendreason
?vrup
->suspendreason
->content
:"(no reason)";
90 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
);
91 cs_log(sender
,"UNSUSPENDUSER %s (%s, by: %s reason: %s), reason: %s", vrup
->username
, action
, csuspendedby
, csuspendreason
, unsuspendreason
);
93 vrup
->flags
&=(~(QUFLAG_GLINE
|QUFLAG_DELAYEDGLINE
|QUFLAG_SUSPENDED
));
96 freesstring(vrup
->suspendreason
);
97 vrup
->suspendreason
=0;
98 csdb_updateuser(vrup
);
100 chanservstdmessage(sender
, QM_DONE
);