]> 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"
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) {
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) {
c755aa86 27 controlreply(np, "A jupe's maximum duration is %s. Could not create jupe.", longtoduration(JUPE_MAX_EXPIRE, 0));
01250ca8
P
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
42int 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
73int 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
104int 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) {
c755aa86 115 controlreply(np, "%s %s %s %s", JupeServer(jupe), JupeReason(jupe), longtoduration(jupe->ju_expire - getnettime(), 0), (jupe->ju_flags & JUPE_ACTIVE) ? "activated" : "deactivated");
01250ca8
P
116
117 jupe = jupe->ju_next;
118 }
119
120 controlreply(np, "--- End of JUPE list.");
121
122 return CMD_OK;
123}
124
125void _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
132void _fini(void) {
133 deregistercontrolcmd("addjupe", ju_addjupe);
134 deregistercontrolcmd("activatejupe", ju_activatejupe);
135 deregistercontrolcmd("deactivatejupe", ju_deactivatejupe);
136 deregistercontrolcmd("jupelist", ju_jupelist);
137}