]> jfr.im git - irc/quakenet/newserv.git/blame - jupe/jupe_commands.c
A4STATS: remove E style escapes and switch to createtable for indices
[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"
c755aa86
CP
4#include "../lib/irc_string.h"
5#include "../irc/irc.h"
01250ca8
P
6#include "jupe.h"
7
8int 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
39int 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
67int 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
94int 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
114void _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
121void _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}