]> jfr.im git - irc/quakenet/newserv.git/blob - jupe/jupe_commands.c
A4STATS: remove E style escapes and switch to createtable for indices
[irc/quakenet/newserv.git] / jupe / jupe_commands.c
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 }