]>
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 | controlreply(np, "Syntax: addjupe <servername> <duration> <reason>"); | |
14 | ||
15 | return CMD_OK; | |
16 | } | |
17 | ||
18 | if (jupe_find(cargv[0]) != NULL) { | |
19 | controlreply(np, "There is already a jupe for that server."); | |
20 | ||
21 | return CMD_OK; | |
22 | } | |
23 | ||
24 | duration = durationtolong(cargv[1]); | |
25 | ||
26 | if (duration > JUPE_MAX_EXPIRE) { | |
27 | controlreply(np, "A jupe's maximum duration is %s. Could not create jupe.", longtoduration(JUPE_MAX_EXPIRE, 0)); | |
28 | ||
29 | return CMD_OK; | |
30 | } | |
31 | ||
32 | result = jupe_add(cargv[0], cargv[2], duration, JUPE_ACTIVE); | |
33 | ||
34 | if (result) | |
35 | controlreply(np, "Done."); | |
36 | else | |
37 | controlreply(np, "Jupe could not be created."); | |
38 | ||
39 | return CMD_OK; | |
40 | } | |
41 | ||
42 | int ju_activatejupe(void *source, int cargc, char **cargv) { | |
43 | nick *np = (nick*)source; | |
44 | jupe_t *jupe; | |
45 | ||
46 | if (cargc < 1) { | |
47 | controlreply(np, "Syntax: activatejupe <servername>"); | |
48 | ||
49 | return CMD_OK; | |
50 | } | |
51 | ||
52 | jupe = jupe_find(cargv[0]); | |
53 | ||
54 | if (jupe == NULL) { | |
55 | controlreply(np, "There is no such jupe."); | |
56 | ||
57 | return CMD_OK; | |
58 | } | |
59 | ||
60 | if (jupe->ju_flags & JUPE_ACTIVE) { | |
61 | controlreply(np, "This jupe is already activated."); | |
62 | ||
63 | return CMD_OK; | |
64 | } | |
65 | ||
66 | jupe_activate(jupe); | |
67 | ||
68 | controlreply(np, "Done."); | |
69 | ||
70 | return CMD_OK; | |
71 | } | |
72 | ||
73 | int ju_deactivatejupe(void *source, int cargc, char **cargv) { | |
74 | nick *np = (nick*)source; | |
75 | jupe_t *jupe; | |
76 | ||
77 | if (cargc < 1) { | |
78 | controlreply(np, "Syntax: deactivatejupe <servername>"); | |
79 | ||
80 | return CMD_OK; | |
81 | } | |
82 | ||
83 | jupe = jupe_find(cargv[0]); | |
84 | ||
85 | if (jupe == NULL) { | |
86 | controlreply(np, "There is no such jupe."); | |
87 | ||
88 | return CMD_OK; | |
89 | } | |
90 | ||
91 | if ((jupe->ju_flags & JUPE_ACTIVE) == 0) { | |
92 | controlreply(np, "This jupe is already deactivated."); | |
93 | ||
94 | return CMD_OK; | |
95 | } | |
96 | ||
97 | jupe_deactivate(jupe); | |
98 | ||
99 | controlreply(np, "Done."); | |
100 | ||
101 | return CMD_OK; | |
102 | } | |
103 | ||
104 | int ju_jupelist(void *source, int cargc, char **cargv) { | |
105 | nick *np = (nick*)source; | |
106 | jupe_t *jupe; | |
107 | ||
108 | jupe_expire(); | |
109 | ||
110 | jupe = jupes; | |
111 | ||
112 | controlreply(np, "Server Reason Expires Status"); | |
113 | ||
114 | while (jupe) { | |
115 | controlreply(np, "%s %s %s %s", JupeServer(jupe), JupeReason(jupe), longtoduration(jupe->ju_expire - getnettime(), 0), (jupe->ju_flags & JUPE_ACTIVE) ? "activated" : "deactivated"); | |
116 | ||
117 | jupe = jupe->ju_next; | |
118 | } | |
119 | ||
120 | controlreply(np, "--- End of JUPE list."); | |
121 | ||
122 | return CMD_OK; | |
123 | } | |
124 | ||
125 | void _init(void) { | |
126 | registercontrolcmd("addjupe", 10, 3, ju_addjupe); | |
127 | registercontrolcmd("activatejupe", 10, 1, ju_activatejupe); | |
128 | registercontrolcmd("deactivatejupe", 10, 1, ju_deactivatejupe); | |
129 | registercontrolcmd("jupelist", 10, 0, ju_jupelist); | |
130 | } | |
131 | ||
132 | void _fini(void) { | |
133 | deregistercontrolcmd("addjupe", ju_addjupe); | |
134 | deregistercontrolcmd("activatejupe", ju_activatejupe); | |
135 | deregistercontrolcmd("deactivatejupe", ju_deactivatejupe); | |
136 | deregistercontrolcmd("jupelist", ju_jupelist); | |
137 | } |