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