]>
Commit | Line | Data |
---|---|---|
1dd6d55d | 1 | /* Automatically generated by refactor.pl. |
2 | * | |
3 | * | |
4 | * CMDNAME: unsuspenduser | |
5 | * CMDLEVEL: QCMD_OPER | |
6 | * CMDARGS: 1 | |
7 | * CMDDESC: Unsuspend a user. | |
8 | * CMDFUNC: csu_dounsuspenduser | |
9 | * CMDPROTO: int csu_dounsuspenduser(void *source, int cargc, char **cargv); | |
10 | */ | |
11 | ||
12 | #include "../chanserv.h" | |
13 | #include "../../lib/irc_string.h" | |
14 | #include <stdio.h> | |
15 | #include <string.h> | |
16 | ||
17 | int csu_dounsuspenduser(void *source, int cargc, char **cargv) { | |
18 | nick *sender=source; | |
19 | reguser *rup=getreguserfromnick(sender); | |
20 | reguser *vrup; | |
21 | char action[100]; | |
22 | ||
23 | if (!rup) | |
24 | return CMD_ERROR; | |
25 | ||
26 | if (cargc < 1) { | |
27 | chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "unsuspenduser"); | |
28 | return CMD_ERROR; | |
29 | } | |
30 | ||
31 | if (cargv[0][0] == '#') { | |
32 | if (!(vrup=findreguserbynick(&cargv[0][1]))) { | |
33 | chanservstdmessage(sender, QM_UNKNOWNUSER, &cargv[0][1]); | |
34 | return CMD_ERROR; | |
35 | } | |
36 | } | |
37 | else { | |
38 | nick *np; | |
39 | ||
40 | if (!(np=getnickbynick(cargv[0]))) { | |
41 | chanservstdmessage(sender, QM_UNKNOWNUSER, cargv[0]); | |
42 | return CMD_ERROR; | |
43 | } | |
44 | ||
45 | if (!(vrup=getreguserfromnick(np)) && sender) { | |
46 | chanservstdmessage(sender, QM_USERNOTAUTHED, cargv[0]); | |
47 | return CMD_ERROR; | |
48 | } | |
49 | } | |
50 | ||
51 | if (!UHasSuspension(vrup)) { | |
52 | chanservstdmessage(sender, QM_USERNOTSUSPENDED, cargv[0]); | |
53 | return CMD_ERROR; | |
54 | } | |
55 | ||
56 | if (UHasOperPriv(vrup) && !UHasAdminPriv(rup)) { | |
57 | snprintf(action, 99, "unsuspenduser on %s", vrup->username); | |
58 | chanservstdmessage(sender, QM_NOACCESS, action); | |
59 | chanservwallmessage("%s (%s) FAILED to unsuspend %s", sender->nick, rup->username, vrup->username); | |
60 | return CMD_ERROR; | |
61 | } | |
62 | ||
63 | if (UIsDelayedGline(vrup)) { | |
64 | strcpy(action, "removed delayed gline on"); | |
65 | } | |
66 | else if (UIsGline(vrup)) { | |
67 | strcpy(action, "removed instant gline on"); | |
68 | } | |
69 | else if (UIsSuspended(vrup)) { | |
70 | strcpy(action, "unsuspended"); | |
71 | } | |
72 | else if (UIsNeedAuth(vrup)) { | |
73 | strcpy(action, "enabled"); | |
74 | } | |
75 | else { | |
76 | chanservsendmessage(sender, "Unknown suspend type encountered."); | |
77 | return CMD_ERROR; | |
78 | } | |
79 | ||
80 | vrup->flags&=(~(QUFLAG_GLINE|QUFLAG_DELAYEDGLINE|QUFLAG_SUSPENDED|QUFLAG_NEEDAUTH)); | |
81 | vrup->suspendby=0; | |
82 | vrup->suspendexp=0; | |
83 | freesstring(vrup->suspendreason); | |
84 | vrup->suspendreason=0; | |
85 | csdb_updateuser(vrup); | |
86 | ||
87 | chanservwallmessage("%s (%s) %s %s", sender->nick, rup->username, action, vrup->username); | |
88 | chanservstdmessage(sender, QM_DONE); | |
89 | return CMD_OK; | |
90 | } |