ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/modules/m_services.c
Revision: 3156
Committed: Fri Mar 14 19:57:38 2014 UTC (11 years, 5 months ago) by michael
Content type: text/x-csrc
File size: 8274 byte(s)
Log Message:
- Removed client_p pointers from everywhere

File Contents

# Content
1 /*
2 * ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3 *
4 * Copyright (c) 2005-2014 ircd-hybrid development team
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19 * USA
20 */
21
22 /*! \file m_services.c
23 * \brief Includes required functions for processing the CS/NS/MS/OS/BS services command.
24 * \version $Id$
25 */
26
27 #include "stdinc.h"
28 #include "client.h"
29 #include "ircd.h"
30 //#include "channel_mode.h"
31 #include "numeric.h"
32 #include "conf.h"
33 #include "s_serv.h"
34 #include "send.h"
35 #include "parse.h"
36 #include "modules.h"
37 #include "irc_string.h"
38 #include "s_user.h"
39 #include "hash.h"
40
41
42 /*
43 * XXX: Each services alias handler is currently ugly copy&paste.
44 * Configureable aliases will get implemented.
45 */
46
47 static int
48 m_nickserv(struct Client *source_p, int parc, char *parv[])
49 {
50 struct Client *target_p = NULL;
51
52 if (EmptyString(parv[1]))
53 {
54 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
55 return 0;
56 }
57
58 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
59 {
60 sendto_one(target_p, ":%s PRIVMSG NickServ@%s :%s",
61 source_p->name, ConfigFileEntry.service_name, parv[1]);
62 return 0;
63 }
64
65 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "NickServ");
66 return 0;
67 }
68
69 static int
70 m_chanserv(struct Client *source_p, int parc, char *parv[])
71 {
72 struct Client *target_p = NULL;
73
74 if (EmptyString(parv[1]))
75 {
76 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
77 return 0;
78 }
79
80 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
81 {
82 sendto_one(target_p, ":%s PRIVMSG ChanServ@%s :%s",
83 source_p->name, ConfigFileEntry.service_name, parv[1]);
84 return 0;
85 }
86
87 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "ChanServ");
88 return 0;
89 }
90
91 static int
92 m_memoserv(struct Client *source_p, int parc, char *parv[])
93 {
94 struct Client *target_p = NULL;
95
96 if (EmptyString(parv[1]))
97 {
98 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
99 return 0;
100 }
101
102 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
103 {
104 sendto_one(target_p, ":%s PRIVMSG MemoServ@%s :%s",
105 source_p->name, ConfigFileEntry.service_name, parv[1]);
106 return 0;
107 }
108
109 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "MemoServ");
110 return 0;
111 }
112
113 static int
114 m_operserv(struct Client *source_p, int parc, char *parv[])
115 {
116 struct Client *target_p = NULL;
117
118 if (EmptyString(parv[1]))
119 {
120 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
121 return 0;
122 }
123
124 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
125 {
126 sendto_one(target_p, ":%s PRIVMSG OperServ@%s :%s",
127 source_p->name, ConfigFileEntry.service_name, parv[1]);
128 return 0;
129 }
130
131 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "OperServ");
132 return 0;
133 }
134
135 static int
136 m_statserv(struct Client *source_p, int parc, char *parv[])
137 {
138 struct Client *target_p = NULL;
139
140 if (EmptyString(parv[1]))
141 {
142 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
143 return 0;
144 }
145
146 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
147 {
148 sendto_one(target_p, ":%s PRIVMSG StatServ@%s :%s",
149 source_p->name, ConfigFileEntry.service_name, parv[1]);
150 return 0;
151 }
152
153 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "StatServ");
154 return 0;
155 }
156
157 static int
158 m_hostserv(struct Client *source_p, int parc, char *parv[])
159 {
160 struct Client *target_p = NULL;
161
162 if (EmptyString(parv[1]))
163 {
164 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
165 return 0;
166 }
167
168 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
169 {
170 sendto_one(target_p, ":%s PRIVMSG HostServ@%s :%s",
171 source_p->name, ConfigFileEntry.service_name, parv[1]);
172 return 0;
173 }
174
175 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "HostServ");
176 return 0;
177 }
178
179 static int
180 m_botserv(struct Client *source_p, int parc, char *parv[])
181 {
182 struct Client *target_p = NULL;
183
184 if (EmptyString(parv[1]))
185 {
186 sendto_one_numeric(source_p, &me, ERR_NOTEXTTOSEND);
187 return 0;
188 }
189
190 if ((target_p = hash_find_server(ConfigFileEntry.service_name)))
191 {
192 sendto_one(target_p, ":%s PRIVMSG BotServ@%s :%s",
193 source_p->name, ConfigFileEntry.service_name, parv[1]);
194 return 0;
195 }
196
197 sendto_one_numeric(source_p, &me, ERR_SERVICESDOWN, "BotServ");
198 return 0;
199 }
200
201
202 static struct Message ms_msgtab =
203 {
204 "MS", 0, 0, 0, 1, MFLG_SLOW, 0,
205 { m_unregistered, m_memoserv, m_ignore, m_ignore, m_memoserv, m_ignore }
206 };
207
208 static struct Message ns_msgtab =
209 {
210 "NS", 0, 0, 0, 1, MFLG_SLOW, 0,
211 { m_unregistered, m_nickserv, m_ignore, m_ignore, m_nickserv, m_ignore }
212 };
213
214 static struct Message os_msgtab =
215 {
216 "OS", 0, 0, 0, 1, MFLG_SLOW, 0,
217 { m_unregistered, m_operserv, m_ignore, m_ignore, m_operserv, m_ignore }
218 };
219
220 static struct Message bs_msgtab =
221 {
222 "BS", 0, 0, 0, 1, MFLG_SLOW, 0,
223 { m_unregistered, m_botserv, m_ignore, m_ignore, m_botserv, m_ignore }
224 };
225
226 static struct Message cs_msgtab =
227 {
228 "CS", 0, 0, 0, 1, MFLG_SLOW, 0,
229 { m_unregistered, m_chanserv, m_ignore, m_ignore, m_chanserv, m_ignore }
230 };
231
232 static struct Message ss_msgtab =
233 {
234 "SS", 0, 0, 0, 1, MFLG_SLOW, 0,
235 { m_unregistered, m_statserv, m_ignore, m_ignore, m_statserv, m_ignore }
236 };
237
238 static struct Message hs_msgtab =
239 {
240 "HS", 0, 0, 0, 1, MFLG_SLOW, 0,
241 { m_unregistered, m_hostserv, m_ignore, m_ignore, m_hostserv, m_ignore }
242 };
243
244 static struct Message botserv_msgtab =
245 {
246 "BOTSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
247 { m_unregistered, m_botserv, m_ignore, m_ignore, m_botserv, m_ignore }
248 };
249
250 static struct Message chanserv_msgtab =
251 {
252 "CHANSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
253 { m_unregistered, m_chanserv, m_ignore, m_ignore, m_chanserv, m_ignore }
254 };
255
256 static struct Message memoserv_msgtab =
257 {
258 "MEMOSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
259 { m_unregistered, m_memoserv, m_ignore, m_ignore, m_memoserv, m_ignore }
260 };
261
262 static struct Message nickserv_msgtab =
263 {
264 "NICKSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
265 { m_unregistered, m_nickserv, m_ignore, m_ignore, m_nickserv, m_ignore }
266 };
267
268 static struct Message operserv_msgtab =
269 {
270 "OPERSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
271 { m_unregistered, m_operserv, m_ignore, m_ignore, m_operserv, m_ignore }
272 };
273
274 static struct Message statserv_msgtab =
275 {
276 "STATSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
277 { m_unregistered, m_statserv, m_ignore, m_ignore, m_statserv, m_ignore }
278 };
279
280 static struct Message hostserv_msgtab =
281 {
282 "HOSTSERV", 0, 0, 0, 1, MFLG_SLOW, 0,
283 { m_unregistered, m_hostserv, m_ignore, m_ignore, m_hostserv, m_ignore }
284 };
285
286
287 static void
288 module_init(void)
289 {
290 mod_add_cmd(&botserv_msgtab);
291 mod_add_cmd(&chanserv_msgtab);
292 mod_add_cmd(&memoserv_msgtab);
293 mod_add_cmd(&nickserv_msgtab);
294 mod_add_cmd(&operserv_msgtab);
295 mod_add_cmd(&statserv_msgtab);
296 mod_add_cmd(&hostserv_msgtab);
297 mod_add_cmd(&bs_msgtab);
298 mod_add_cmd(&ns_msgtab);
299 mod_add_cmd(&cs_msgtab);
300 mod_add_cmd(&ms_msgtab);
301 mod_add_cmd(&os_msgtab);
302 mod_add_cmd(&ss_msgtab);
303 mod_add_cmd(&hs_msgtab);
304 }
305
306 static void
307 module_exit(void)
308 {
309 mod_del_cmd(&botserv_msgtab);
310 mod_del_cmd(&chanserv_msgtab);
311 mod_del_cmd(&memoserv_msgtab);
312 mod_del_cmd(&nickserv_msgtab);
313 mod_del_cmd(&operserv_msgtab);
314 mod_del_cmd(&statserv_msgtab);
315 mod_del_cmd(&hostserv_msgtab);
316 mod_del_cmd(&bs_msgtab);
317 mod_del_cmd(&ns_msgtab);
318 mod_del_cmd(&cs_msgtab);
319 mod_del_cmd(&ms_msgtab);
320 mod_del_cmd(&os_msgtab);
321 mod_del_cmd(&ss_msgtab);
322 mod_del_cmd(&hs_msgtab);
323 }
324
325 struct module module_entry =
326 {
327 .node = { NULL, NULL, NULL },
328 .name = NULL,
329 .version = "$Revision$",
330 .handle = NULL,
331 .modinit = module_init,
332 .modexit = module_exit,
333 .flags = 0
334 };

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision