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