]>
Commit | Line | Data |
---|---|---|
01250ca8 P |
1 | #include "../control/control.h" |
2 | #include "../nick/nick.h" | |
3 | #include "../channel/channel.h" | |
c755aa86 CP |
4 | #include "../lib/irc_string.h" |
5 | #include "../irc/irc.h" | |
01250ca8 P |
6 | #include "jupe.h" |
7 | ||
8 | int ju_addjupe(void *source, int cargc, char **cargv) { | |
64bf1b4e P |
9 | nick *np = (nick*)source; |
10 | int result, duration; | |
01250ca8 | 11 | |
64bf1b4e | 12 | if (cargc < 3) { |
f3bd8629 | 13 | return CMD_USAGE; |
64bf1b4e | 14 | } |
01250ca8 | 15 | |
64bf1b4e P |
16 | if (jupe_find(cargv[0]) != NULL) { |
17 | controlreply(np, "There is already a jupe for that server."); | |
18 | return CMD_OK; | |
19 | } | |
01250ca8 | 20 | |
64bf1b4e | 21 | duration = durationtolong(cargv[1]); |
01250ca8 | 22 | |
64bf1b4e P |
23 | if (duration > JUPE_MAX_EXPIRE) { |
24 | controlreply(np, "A jupe's maximum duration is %s. Could not create jupe.", longtoduration(JUPE_MAX_EXPIRE, 0)); | |
25 | return CMD_OK; | |
26 | } | |
01250ca8 | 27 | |
64bf1b4e | 28 | result = jupe_add(cargv[0], cargv[2], duration, JUPE_ACTIVE); |
01250ca8 | 29 | |
143e1ccd P |
30 | if (result) { |
31 | controlwall(NO_OPER, NL_MISC, "%s added JUPE for '%s' expiring in %s with reason %s", controlid(np), cargv[0], longtoduration(duration, 0), cargv[2]); | |
64bf1b4e | 32 | controlreply(np, "Done."); |
143e1ccd | 33 | } else |
64bf1b4e | 34 | controlreply(np, "Jupe could not be created."); |
01250ca8 | 35 | |
64bf1b4e | 36 | return CMD_OK; |
01250ca8 P |
37 | } |
38 | ||
39 | int ju_activatejupe(void *source, int cargc, char **cargv) { | |
64bf1b4e P |
40 | nick *np = (nick*)source; |
41 | jupe_t *jupe; | |
01250ca8 | 42 | |
64bf1b4e | 43 | if (cargc < 1) { |
f3bd8629 | 44 | return CMD_USAGE; |
64bf1b4e | 45 | } |
01250ca8 | 46 | |
64bf1b4e | 47 | jupe = jupe_find(cargv[0]); |
01250ca8 | 48 | |
64bf1b4e P |
49 | if (jupe == NULL) { |
50 | controlreply(np, "There is no such jupe."); | |
51 | return CMD_OK; | |
52 | } | |
01250ca8 | 53 | |
64bf1b4e P |
54 | if (jupe->ju_flags & JUPE_ACTIVE) { |
55 | controlreply(np, "This jupe is already activated."); | |
01250ca8 | 56 | |
64bf1b4e P |
57 | return CMD_OK; |
58 | } | |
01250ca8 | 59 | |
64bf1b4e | 60 | jupe_activate(jupe); |
01250ca8 | 61 | |
143e1ccd | 62 | controlwall(NO_OPER, NL_MISC, "%s reactivated JUPE for '%s'", controlid(np), cargv[0]); |
64bf1b4e | 63 | controlreply(np, "Done."); |
64bf1b4e | 64 | return CMD_OK; |
01250ca8 P |
65 | } |
66 | ||
67 | int ju_deactivatejupe(void *source, int cargc, char **cargv) { | |
64bf1b4e P |
68 | nick *np = (nick*)source; |
69 | jupe_t *jupe; | |
01250ca8 | 70 | |
64bf1b4e | 71 | if (cargc < 1) { |
f3bd8629 | 72 | return CMD_USAGE; |
64bf1b4e | 73 | } |
01250ca8 | 74 | |
64bf1b4e | 75 | jupe = jupe_find(cargv[0]); |
01250ca8 | 76 | |
64bf1b4e P |
77 | if (jupe == NULL) { |
78 | controlreply(np, "There is no such jupe."); | |
64bf1b4e P |
79 | return CMD_OK; |
80 | } | |
01250ca8 | 81 | |
64bf1b4e P |
82 | if ((jupe->ju_flags & JUPE_ACTIVE) == 0) { |
83 | controlreply(np, "This jupe is already deactivated."); | |
64bf1b4e P |
84 | return CMD_OK; |
85 | } | |
01250ca8 | 86 | |
64bf1b4e | 87 | jupe_deactivate(jupe); |
01250ca8 | 88 | |
143e1ccd | 89 | controlwall(NO_OPER, NL_MISC, "%s deactivated JUPE for '%s'", controlid(np), cargv[0]); |
64bf1b4e | 90 | controlreply(np, "Done."); |
64bf1b4e | 91 | return CMD_OK; |
01250ca8 P |
92 | } |
93 | ||
94 | int ju_jupelist(void *source, int cargc, char **cargv) { | |
64bf1b4e P |
95 | nick *np = (nick*)source; |
96 | jupe_t *jupe; | |
01250ca8 | 97 | |
64bf1b4e | 98 | jupe_expire(); |
01250ca8 | 99 | |
64bf1b4e | 100 | jupe = jupes; |
01250ca8 | 101 | |
64bf1b4e P |
102 | controlreply(np, "Server Reason Expires Status"); |
103 | ||
104 | while (jupe) { | |
105 | controlreply(np, "%s %s %s %s", JupeServer(jupe), JupeReason(jupe), longtoduration(jupe->ju_expire - getnettime(), 0), (jupe->ju_flags & JUPE_ACTIVE) ? "activated" : "deactivated"); | |
01250ca8 | 106 | |
64bf1b4e P |
107 | jupe = jupe->ju_next; |
108 | } | |
01250ca8 | 109 | |
64bf1b4e | 110 | controlreply(np, "--- End of JUPE list."); |
64bf1b4e | 111 | return CMD_OK; |
01250ca8 P |
112 | } |
113 | ||
114 | void _init(void) { | |
f3bd8629 P |
115 | registercontrolhelpcmd("addjupe", NO_OPER, 3, ju_addjupe, "Usage: addjupe <servername> <duration> <reason>"); |
116 | registercontrolhelpcmd("activatejupe", NO_OPER, 1, ju_activatejupe, "Usage: activatejupe <servername>"); | |
117 | registercontrolhelpcmd("deactivatejupe", NO_OPER, 1, ju_deactivatejupe, "Usage: deactivatejupe <servername>"); | |
118 | registercontrolhelpcmd("jupelist", NO_OPER, 0, ju_jupelist, "Usage: jupelist"); | |
01250ca8 P |
119 | } |
120 | ||
121 | void _fini(void) { | |
64bf1b4e P |
122 | deregistercontrolcmd("addjupe", ju_addjupe); |
123 | deregistercontrolcmd("activatejupe", ju_activatejupe); | |
124 | deregistercontrolcmd("deactivatejupe", ju_deactivatejupe); | |
125 | deregistercontrolcmd("jupelist", ju_jupelist); | |
01250ca8 | 126 | } |