1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.xnap.plugin.opennap.net.msg;
20
21 import org.xnap.plugin.opennap.net.OpenNapServer;
22 import org.xnap.plugin.opennap.net.msg.server.AcceptFailedMessage;
23 import org.xnap.plugin.opennap.net.msg.server.AllChannelListEntryMessage;
24 import org.xnap.plugin.opennap.net.msg.server.*;
25 import org.xnap.plugin.opennap.net.msg.server.BlockedFileMessage;
26 import org.xnap.plugin.opennap.net.msg.server.BrowseResponseMessage;
27 import org.xnap.plugin.opennap.net.msg.server.ChannelBanListEntryMessage;
28 import org.xnap.plugin.opennap.net.msg.server.ChannelListEntryMessage;
29 import org.xnap.plugin.opennap.net.msg.server.ChannelTopicMessage;
30 import org.xnap.plugin.opennap.net.msg.server.ChannelUserListEntryMessage;
31 import org.xnap.plugin.opennap.net.msg.server.ClientDisconnectMessage;
32 import org.xnap.plugin.opennap.net.msg.server.ClientStatisticsMessage;
33 import org.xnap.plugin.opennap.net.msg.server.DataPortErrorMessage;
34 import org.xnap.plugin.opennap.net.msg.server.DirectBrowseAckMessage;
35 import org.xnap.plugin.opennap.net.msg.server.DirectBrowseErrorMessage;
36 import org.xnap.plugin.opennap.net.msg.server.DirectBrowseRequestMessage;
37 import org.xnap.plugin.opennap.net.msg.server.DownloadAckMessage;
38 import org.xnap.plugin.opennap.net.msg.server.EmoteMessage;
39 import org.xnap.plugin.opennap.net.msg.server.EndAllChannelListMessage;
40 import org.xnap.plugin.opennap.net.msg.server.EndBrowseMessage;
41 import org.xnap.plugin.opennap.net.msg.server.EndChannelBanListMessage;
42 import org.xnap.plugin.opennap.net.msg.server.EndChannelListMessage;
43 import org.xnap.plugin.opennap.net.msg.server.EndChannelUserListMessage;
44 import org.xnap.plugin.opennap.net.msg.server.EndSearchMessage;
45 import org.xnap.plugin.opennap.net.msg.server.ErrorMessage;
46 import org.xnap.plugin.opennap.net.msg.server.GetErrorMessage;
47 import org.xnap.plugin.opennap.net.msg.server.GlobalMessage;
48 import org.xnap.plugin.opennap.net.msg.server.HotlistAckMessage;
49 import org.xnap.plugin.opennap.net.msg.server.HotlistErrorMessage;
50 import org.xnap.plugin.opennap.net.msg.server.InvalidMessageException;
51 import org.xnap.plugin.opennap.net.msg.server.InvalidNickMessage;
52 import org.xnap.plugin.opennap.net.msg.server.JoinAckMessage;
53 import org.xnap.plugin.opennap.net.msg.server.JoinMessage;
54 import org.xnap.plugin.opennap.net.msg.server.LoginAckMessage;
55 import org.xnap.plugin.opennap.net.msg.server.LoginAttemptMessage;
56 import org.xnap.plugin.opennap.net.msg.server.LoginErrorMessage;
57 import org.xnap.plugin.opennap.net.msg.server.MotdMessage;
58 import org.xnap.plugin.opennap.net.msg.server.NickAlreadyRegisteredMessage;
59 import org.xnap.plugin.opennap.net.msg.server.NickNotRegisteredMessage;
60 import org.xnap.plugin.opennap.net.msg.server.OperatorMessage;
61 import org.xnap.plugin.opennap.net.msg.server.PartChannelMessage;
62 import org.xnap.plugin.opennap.net.msg.server.PingMessage;
63 import org.xnap.plugin.opennap.net.msg.server.PingUserMessage;
64 import org.xnap.plugin.opennap.net.msg.server.PongUserMessage;
65 import org.xnap.plugin.opennap.net.msg.server.PrivateMessage;
66 import org.xnap.plugin.opennap.net.msg.server.PublicMessage;
67 import org.xnap.plugin.opennap.net.msg.server.QueueLimitMessage;
68 import org.xnap.plugin.opennap.net.msg.server.RedirectClientMessage;
69 import org.xnap.plugin.opennap.net.msg.server.SearchResponseMessage;
70 import org.xnap.plugin.opennap.net.msg.server.ServerLinksMessage;
71 import org.xnap.plugin.opennap.net.msg.server.ServerMessage;
72 import org.xnap.plugin.opennap.net.msg.server.ServerStatisticsMessage;
73 import org.xnap.plugin.opennap.net.msg.server.ServerStatsMessage;
74 import org.xnap.plugin.opennap.net.msg.server.UnshareAllFilesMessage;
75 import org.xnap.plugin.opennap.net.msg.server.UploadRequestMessage;
76 import org.xnap.plugin.opennap.net.msg.server.UserPartedChannelMessage;
77 import org.xnap.plugin.opennap.net.msg.server.UserSignoffMessage;
78 import org.xnap.plugin.opennap.net.msg.server.UserSignonMessage;
79 import org.xnap.plugin.opennap.net.msg.server.WhoisResponseMessage;
80 import org.xnap.plugin.opennap.net.msg.server.WhowasResponseMessage;
81
82 public class MessageFactory {
83
84
85
86 public static final int LOGIN_ERROR = 0;
87 public static final int LOGIN_ACK = 3;
88 public static final int NICK_NOT_REGISTERED = 8;
89 public static final int NICK_ALREADY_REGISTERED = 9;
90 public static final int INVALID_NICK = 10;
91 public static final int UNSHARE_ALL_FILES = 110;
92 public static final int SEARCH_RESPONSE = 201;
93 public static final int END_SEARCH_RESPONSE = 202;
94 public static final int DOWNLOAD_ACK = 204;
95 public static final int PRIVATE_MESSAGE = 205;
96 public static final int GET_ERROR = 206;
97 public static final int USER_SIGNON = 209;
98 public static final int USER_SIGNOFF = 210;
99 public static final int BROWSE_RESPONSE = 212;
100 public static final int END_BROWSE_LIST = 213;
101 public static final int SERVER_STATS = 214;
102 public static final int RESUME_SEARCH_RESPONSE = 216;
103 public static final int END_RESUME_SEARCH = 217;
104 public static final int HOTLIST_ACK = 301;
105 public static final int HOTLIST_ERROR = 302;
106 public static final int CLIENT_DISCONNECT = 316;
107 public static final int USER_IGNORE_LIST = 320;
108 public static final int USER_IGNORE_LIST_ENTRY = 321;
109 public static final int ADD_USER_TO_IGNORE_LIST = 322;
110 public static final int USER_NOT_IGNORED = 324;
111 public static final int USER_ALREADY_IGNORED = 325;
112 public static final int CLEAR_IGNORE_LIST = 326;
113 public static final int PART_CHANNEL = 401;
114 public static final int PUBLIC_MESSAGE = 403;
115 public static final int ERROR_MESSAGE = 404;
116 public static final int JOIN_ACK = 405;
117 public static final int JOIN_MESSAGE = 406;
118 public static final int USER_PARTED_CHANNEL = 407;
119 public static final int CHANNEL_USER_LIST_ENTRY = 408;
120 public static final int END_CHANNEL_USER_LIST = 409;
121 public static final int CHANNEL_BAN_LIST = 420;
122 public static final int CHANNEL_BAN_LIST_ENTRY = 421;
123 public static final int CHANNEL_MOTD = 425;
124 public static final int INVITE_USER = 430;
125 public static final int ALTERNATE_DOWNLOAD_ACK = 501;
126 public static final int SPEED_RESPONSE = 601;
127 public static final int WHOIS_RESPONSE = 604;
128 public static final int WHOWAS_RESPONSE = 605;
129 public static final int UPLOAD_REQUEST = 607;
130 public static final int ACCEPT_FAILED = 609;
131 public static final int SET_DATA_PORT = 613;
132 public static final int BAN_LIST_ENTRY = 616;
133 public static final int LIST_CHANNELS = 617;
134 public static final int CHANNEL_LIST_ENTRY = 618;
135 public static final int QUEUE_LIMIT = 620;
136 public static final int MOTD = 621;
137 public static final int DATA_PORT_ERROR = 626;
138 public static final int OPERATOR_MESSAGE = 627;
139 public static final int GLOBAL_MESSAGE = 628;
140 public static final int BANNED_USERS = 629;
141 public static final int DIRECT_BROWSE_REQUEST = 640;
142 public static final int DIRECT_BROWSE_ACCEPT = 641;
143 public static final int DIRECT_BROWSE_ERROR = 642;
144 public static final int LOGIN_ATTEMPT = 748;
145 public static final int SERVER_PING = 750;
146 public static final int PING_USER = 751;
147 public static final int PONG_RESPONSE = 752;
148 public static final int CYCLE_CLIENT = 822;
149 public static final int EMOTE = 824;
150 public static final int USER_LIST_ENTRY = 825;
151 public static final int END_CHANNEL_LIST = 827;
152 public static final int CHANNEL_LIST = 828;
153 public static final int END_USER_LIST = 830;
154 public static final int CONNECTION_TEST = 900;
155 public static final int LISTEN_TEST = 901;
156 public static final int BLOCKED_FILE = 931;
157
158
159
160
161
162 public static ServerMessage create(OpenNapServer source, int type,
163 String data)
164 throws InvalidMessageException
165 {
166 ServerMessage msg;
167
168 switch (type) {
169 case LoginErrorMessage.TYPE:
170 msg = new LoginErrorMessage(data);
171 break;
172 case LOGIN_ACK:
173 msg = new LoginAckMessage(data);
174 break;
175 case NICK_NOT_REGISTERED:
176 msg = new NickNotRegisteredMessage(data);
177 break;
178 case NICK_ALREADY_REGISTERED:
179 msg = new NickAlreadyRegisteredMessage(data);
180 break;
181 case INVALID_NICK:
182 msg = new InvalidNickMessage(data);
183 break;
184 case UNSHARE_ALL_FILES:
185 msg = new UnshareAllFilesMessage(data);
186 break;
187 case SEARCH_RESPONSE:
188 msg = new SearchResponseMessage(data);
189 break;
190 case END_SEARCH_RESPONSE:
191 msg = new EndSearchMessage(data);
192 break;
193 case DOWNLOAD_ACK:
194 msg = new DownloadAckMessage(data);
195 break;
196 case PRIVATE_MESSAGE:
197 msg = new PrivateMessage(data);
198 break;
199 case GET_ERROR:
200 msg = new GetErrorMessage(data);
201 break;
202 case USER_SIGNON:
203 msg = new UserSignonMessage(data);
204 break;
205 case USER_SIGNOFF:
206 msg = new UserSignoffMessage(data);
207 break;
208 case BROWSE_RESPONSE:
209 msg = new BrowseResponseMessage(data);
210 break;
211 case END_BROWSE_LIST:
212 msg = new EndBrowseMessage(data);
213 break;
214 case SERVER_STATS:
215 msg = new ServerStatsMessage(data);
216 break;
217
218
219
220
221
222
223 case HotlistAckMessage.TYPE:
224 msg = new HotlistAckMessage(data);
225 break;
226 case HotlistErrorMessage.TYPE:
227 msg = new HotlistErrorMessage(data);
228 break;
229 case CLIENT_DISCONNECT:
230 msg = new ClientDisconnectMessage(data);
231 break;
232
233
234
235
236
237
238 case ADD_USER_TO_IGNORE_LIST:
239 msg = new AddUserToIgnoreListMessage(data);
240 break;
241
242
243
244
245
246
247
248
249
250 case PART_CHANNEL:
251 msg = new PartChannelMessage(data);
252 break;
253 case PUBLIC_MESSAGE:
254 msg = new PublicMessage(data);
255 break;
256 case ErrorMessage.TYPE:
257 msg = new ErrorMessage(data);
258 break;
259 case JOIN_ACK:
260 msg = new JoinAckMessage(data);
261 break;
262 case JOIN_MESSAGE:
263 msg = new JoinMessage(data);
264 break;
265 case USER_PARTED_CHANNEL:
266 msg = new UserPartedChannelMessage(data);
267 break;
268 case CHANNEL_USER_LIST_ENTRY:
269 msg = new ChannelUserListEntryMessage(data);
270 break;
271 case END_CHANNEL_USER_LIST:
272 msg = new EndChannelUserListMessage(data);
273 break;
274 case ChannelTopicMessage.TYPE:
275 msg = new ChannelTopicMessage(data);
276 break;
277 case CHANNEL_BAN_LIST:
278 msg = new EndChannelBanListMessage(data);
279 break;
280 case CHANNEL_BAN_LIST_ENTRY:
281 msg = new ChannelBanListEntryMessage(data);
282 break;
283
284
285
286
287
288
289 case ALTERNATE_DOWNLOAD_ACK:
290 msg = new AltDownloadAckMessage(data);
291 break;
292
293
294
295 case WHOIS_RESPONSE:
296 msg = new WhoisResponseMessage(data);
297 break;
298 case WHOWAS_RESPONSE:
299 msg = new WhowasResponseMessage(data);
300 break;
301 case UPLOAD_REQUEST:
302 msg = new UploadRequestMessage(data);
303 break;
304 case ACCEPT_FAILED:
305 msg = new AcceptFailedMessage(data);
306 break;
307 case SET_DATA_PORT:
308 msg = new DataPortErrorMessage(data);
309 break;
310
311
312
313 case LIST_CHANNELS:
314 msg = new EndChannelListMessage(data);
315 break;
316 case CHANNEL_LIST_ENTRY:
317 msg = new ChannelListEntryMessage(data);
318 break;
319 case QUEUE_LIMIT:
320 msg = new QueueLimitMessage(data);
321 break;
322 case MOTD:
323 msg = new MotdMessage(data);
324 break;
325 case DATA_PORT_ERROR:
326 msg = new DataPortErrorMessage(data);
327 break;
328 case OPERATOR_MESSAGE:
329 msg = new OperatorMessage(data);
330 break;
331 case GLOBAL_MESSAGE:
332 msg = new GlobalMessage(data);
333 break;
334
335
336
337 case DIRECT_BROWSE_REQUEST:
338 msg = new DirectBrowseRequestMessage(data);
339 break;
340 case DIRECT_BROWSE_ACCEPT:
341 msg = new DirectBrowseAckMessage(data);
342 break;
343 case DIRECT_BROWSE_ERROR:
344 msg = new DirectBrowseErrorMessage(data);
345 break;
346 case LOGIN_ATTEMPT:
347 msg = new LoginAttemptMessage(data);
348 break;
349 case SERVER_PING:
350 msg = new PingMessage(data);
351 break;
352 case PING_USER:
353 msg = new PingUserMessage(data);
354 break;
355 case PONG_RESPONSE:
356 msg = new PongUserMessage(data);
357 break;
358 case RedirectClientMessage.TYPE:
359 msg = new RedirectClientMessage(data);
360 break;
361
362
363
364 case EMOTE:
365 msg = new EmoteMessage(data);
366 break;
367
368
369
370 case END_CHANNEL_LIST:
371 msg = new EndAllChannelListMessage(data);
372 break;
373 case CHANNEL_LIST:
374 msg = new AllChannelListEntryMessage(data);
375 break;
376
377
378
379
380
381
382
383
384
385 case BLOCKED_FILE:
386 msg = new BlockedFileMessage(data);
387 break;
388 case ServerLinksMessage.TYPE:
389 msg = new ServerLinksMessage(data);
390 break;
391 case ServerStatisticsMessage.TYPE:
392 msg = new ServerStatisticsMessage(data);
393 break;
394 case ClientStatisticsMessage.TYPE:
395 msg = new ClientStatisticsMessage(data);
396 break;
397 default:
398 throw new InvalidMessageException("Unknown message type: "
399 + type + " " + data);
400 }
401
402 msg.setServer(source);
403
404 return msg;
405 }
406
407
408 public static String getMessageName(int id) {
409
410 String s;
411
412 switch (id) {
413 case LoginErrorMessage.TYPE:
414 s = "Login Error";
415 break;
416 case LOGIN_ACK:
417 s = "LoginAck";
418 break;
419 case NICK_NOT_REGISTERED:
420 s = "NickNotRegistered";
421 break;
422 case NICK_ALREADY_REGISTERED:
423 s = "NickAlreadyRegistered";
424 break;
425 case INVALID_NICK:
426 s = "InvalidNick";
427 break;
428 case UNSHARE_ALL_FILES:
429 s = "UnshareAllFiles";
430 break;
431 case SEARCH_RESPONSE:
432 s = "SearchResponse";
433 break;
434 case END_SEARCH_RESPONSE:
435 s = "EndSearch";
436 break;
437 case DOWNLOAD_ACK:
438 s = "DownloadAck";
439 break;
440 case PRIVATE_MESSAGE:
441 s = "Private";
442 break;
443 case GET_ERROR:
444 s = "GetError";
445 break;
446 case USER_SIGNON:
447 s = "UserSignon";
448 break;
449 case USER_SIGNOFF:
450 s = "UserSignoff";
451 break;
452 case BROWSE_RESPONSE:
453 s = "BrowseResponse";
454 break;
455 case END_BROWSE_LIST:
456 s = "EndBrowse";
457 break;
458 case SERVER_STATS:
459 s = "ServerStats";
460 break;
461 case RESUME_SEARCH_RESPONSE:
462 s = "ResumeSearchResponse";
463 break;
464 case END_RESUME_SEARCH:
465 s = "EndResumeSearchResponse";
466 break;
467 case HotlistAckMessage.TYPE:
468 s = "HotlistAck";
469 break;
470 case HotlistErrorMessage.TYPE:
471 s = "HotlistError";
472 break;
473 case CLIENT_DISCONNECT:
474 s = "ClientDisconnect";
475 break;
476 case USER_IGNORE_LIST:
477 s = "UserIgnoreList";
478 break;
479 case USER_IGNORE_LIST_ENTRY:
480 s = "UserIgnoreListEntry";
481 break;
482 case ADD_USER_TO_IGNORE_LIST:
483 s = "AddUserToIgnoreList";
484 break;
485 case USER_NOT_IGNORED:
486 s = "UserNotIgnored";
487 break;
488 case USER_ALREADY_IGNORED:
489 s = "UserAlreadyIgnored";
490 break;
491 case CLEAR_IGNORE_LIST:
492 s = "ClearIgnoreList";
493 break;
494 case PART_CHANNEL:
495 s = "PartChannel";
496 break;
497 case PUBLIC_MESSAGE:
498 s = "Public";
499 break;
500 case ErrorMessage.TYPE:
501 s = "Error";
502 break;
503 case JOIN_ACK:
504 s = "JoinAck";
505 break;
506 case JOIN_MESSAGE:
507 s = "Join";
508 break;
509 case USER_PARTED_CHANNEL:
510 s = "UserPartedChannel";
511 break;
512 case CHANNEL_USER_LIST_ENTRY:
513 s = "ChannelUserListEntry";
514 break;
515 case END_CHANNEL_USER_LIST:
516 s = "EndChannelUserList";
517 break;
518 case ChannelTopicMessage.TYPE:
519 s = "ChannelTopic";
520 break;
521 case CHANNEL_BAN_LIST:
522 s = "EndChannelBanList";
523 break;
524 case CHANNEL_BAN_LIST_ENTRY:
525 s = "ChannelBanListEntry";
526 break;
527 case CHANNEL_MOTD:
528 s = "ChannelMotd";
529 break;
530 case INVITE_USER:
531 s = "InviteUser";
532 break;
533 case ALTERNATE_DOWNLOAD_ACK:
534 s = "AltDownloadAck";
535 break;
536 case SPEED_RESPONSE:
537 s = "LinkSpeedResponse";
538 break;
539 case WHOIS_RESPONSE:
540 s = "WhoisResponse";
541 break;
542 case WHOWAS_RESPONSE:
543 s = "WhowasResponse";
544 break;
545 case UPLOAD_REQUEST:
546 s = "UploadRequest";
547 break;
548 case ACCEPT_FAILED:
549 s = "AcceptFailed";
550 break;
551 case SET_DATA_PORT:
552 s = "SetDataPortForUser";
553 break;
554 case BAN_LIST_ENTRY:
555 s = "BanListEntry";
556 break;
557 case LIST_CHANNELS:
558 s = "EndChannelList";
559 break;
560 case CHANNEL_LIST_ENTRY:
561 s = "ChannelListEntry";
562 break;
563 case QUEUE_LIMIT:
564 s = "QueueLimit";
565 break;
566 case MOTD:
567 s = "Motd";
568 break;
569 case DATA_PORT_ERROR:
570 s = "DataPortError";
571 break;
572 case OPERATOR_MESSAGE:
573 s = "Operator";
574 break;
575 case GLOBAL_MESSAGE:
576 s = "Global";
577 break;
578 case BANNED_USERS:
579 s = "BannedUsers";
580 break;
581 case DIRECT_BROWSE_REQUEST:
582 s = "DirectBrowseRequest";
583 break;
584 case DIRECT_BROWSE_ACCEPT:
585 s = "DirectBrowseAck";
586 break;
587 case DIRECT_BROWSE_ERROR:
588 s = "DirectBrowseError";
589 break;
590 case LOGIN_ATTEMPT:
591 s = "LoginAttempt";
592 break;
593 case SERVER_PING:
594 s = "Ping";
595 break;
596 case PING_USER:
597 s = "PingUser";
598 break;
599 case PONG_RESPONSE:
600 s = "PongUser";
601 break;
602 case RedirectClientMessage.TYPE:
603 s = "RedirectClient";
604 break;
605 case CYCLE_CLIENT:
606 s = "CycleClient";
607 break;
608 case EMOTE:
609 s = "Emote";
610 break;
611 case USER_LIST_ENTRY:
612 s = "UserListEntry";
613 break;
614 case END_CHANNEL_LIST:
615 s = "EndAllChannelList";
616 break;
617 case CHANNEL_LIST:
618 s = "AllChannelListEntry";
619 break;
620 case END_USER_LIST:
621 s = "EndUserList";
622 break;
623 case CONNECTION_TEST:
624 s = "ConnectionTest";
625 break;
626 case LISTEN_TEST:
627 s = "ListenTest";
628 break;
629 case BLOCKED_FILE:
630 s = "BlockedFile";
631 break;
632 case ServerLinksMessage.TYPE:
633 s = "ServerLinks";
634 break;
635 case ServerStatisticsMessage.TYPE:
636 s = "ServerStatistics";
637 break;
638 case ClientStatisticsMessage.TYPE:
639 s = "ClientStatistics";
640 break;
641 default:
642 s ="UnknownMessage!";
643
644 }
645 return s;
646 }
647
648 }
649