annotate src/protocols/napster/napster.c @ 5638:0bdfa28c678e

[gaim-migrate @ 6047] We're slowly killing off multi.h. The proto_user_split and proto_user_opt have been replaced with GaimAccountOption and GaimAccountUserSplit structures, which of course have an API. The account dialog is being rewritten as well, and will soon allow you to add and modify accounts again. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 01 Jun 2003 17:40:20 +0000
parents 4fa8ca4f4259
children 0a0116686d51
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 /*
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 * gaim - Napster Protocol Plugin
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 *
3322
b77edfedc39f [gaim-migrate @ 3340]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
4 * Copyright (C) 2000-2001, Rob Flynn <rob@marko.net>
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
9 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
10 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
22 #include <config.h>
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
24 #ifndef _WIN32
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 #include <netdb.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 #include <unistd.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 #include <netinet/in.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28 #include <arpa/inet.h>
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
29 #include <sys/socket.h>
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
30 #else
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
31 #include <winsock.h>
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
32 #endif
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
33
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
34 #include <errno.h>
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
35 #include <time.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
36 #include <string.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 #include <stdlib.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
38 #include <stdio.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39 #include <time.h>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 #include <sys/stat.h>
4608
5fcb44d771d2 [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4491
diff changeset
41 #include "gaim.h"
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
42 #include "accountopt.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
43 #include "multi.h"
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
44 #include "prpl.h"
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 #include "proxy.h"
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
46
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
47 #ifdef _WIN32
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
48 #include "win32dep.h"
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
49 #endif
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3593
diff changeset
50
3322
b77edfedc39f [gaim-migrate @ 3340]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
51 #define NAP_SERVER "64.124.41.187"
b77edfedc39f [gaim-migrate @ 3340]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
52 #define NAP_PORT 8888
b77edfedc39f [gaim-migrate @ 3340]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
53
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
54 #define NAPSTER_CONNECT_STEPS 2
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
55
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56 GSList *nap_connections = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
58 struct nap_data {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59 int fd;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 gchar *email;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
62
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
63 static struct gaim_conversation *nap_find_chat(GaimConnection *gc, const char *name)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
64 {
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
65 GSList *bcs = gc->buddy_chats;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
66
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
67 while (bcs) {
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
68 struct gaim_conversation *b = bcs->data;
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
69 if (!gaim_utf8_strcasecmp(b->name, name))
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
70 return b;
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
71 bcs = bcs->next;
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
72 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
73
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
74 return NULL;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
75 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
76
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
77 static void nap_write_packet(GaimConnection *gc, unsigned short command, const char *format, ...)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
78 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
79 struct nap_data *ndata = (struct nap_data *)gc->proto_data;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
80 va_list ap;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
81 gchar *message;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
82 unsigned short size;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
83
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
84 va_start(ap, format);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
85 message = g_strdup_vprintf(format, ap);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
86 va_end(ap);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
87
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
88 size = strlen(message);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
89 gaim_debug(GAIM_DEBUG_MISC, "napster", "S %3hd: %s\n", command, message);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
90
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
91 write(ndata->fd, &size, 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
92 write(ndata->fd, &command, 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
93 write(ndata->fd, message, size);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
94
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
95 g_free(message);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
96 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
97
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
98 static int nap_do_irc_style(GaimConnection *gc, const char *message, const char *name)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
99 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
100 gchar **res;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
101
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
102 gaim_debug(GAIM_DEBUG_MISC, "napster", "C %s\n", message);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
103
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
104 res = g_strsplit(message, " ", 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
105
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
106 if (!strcasecmp(res[0], "/ME")) { /* MSG_CLIENT_PUBLIC */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
107 nap_write_packet(gc, 824, "%s \"%s\"", name, res[1]);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
108
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
109 } else if (!strcasecmp(res[0], "/MSG")) { /* MSG_CLIENT_PUBLIC */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
110 nap_write_packet(gc, 205, "%s", res[1]);
4359
5fb47ec9bfe4 [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4349
diff changeset
111
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
112 } else if (!strcasecmp(res[0], "/JOIN")) { /* join chatroom MSG_CLIENT_JOIN */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
113 if (!res[1]) {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
114 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
115 return 1;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
116 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
117 if (res[1][0] != '#')
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
118 nap_write_packet(gc, 400, "#%s", res[1]);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
119 else
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
120 nap_write_packet(gc, 400, "%s", res[1]);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
121
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
122 } else if (!strcasecmp(res[0], "/PART")) { /* partchatroom MSG_CLIENT_PART */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
123 nap_write_packet(gc, 401, "%s", res[1] ? res[1] : name);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
124
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
125 } else if (!strcasecmp(res[0], "/TOPIC")) { /* set topic MSG_SERVER_TOPIC */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
126 nap_write_packet(gc, 410, "%s", res[1] ? res[1] : name);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
127
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
128 } else if (!strcasecmp(res[0], "/WHOIS")) { /* whois request MSG_CLIENT_WHOIS */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
129 nap_write_packet(gc, 603, "%s", res[1]);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
130
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
131 } else if (!strcasecmp(res[0], "/PING")) { /* send ping MSG_CLIENT_PING */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
132 nap_write_packet(gc, 751, "%s", res[1]);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
133
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
134 } else if (!strcasecmp(res[0], "/KICK")) { /* kick asswipe MSG_CLIENT_KICK */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
135 nap_write_packet(gc, 829, "%s", res[1]);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
136
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
137 } else {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
138 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
139 return 1;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
140 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
141
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
142 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
143 return 0;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
144 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
145
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
146 /* 205 - MSG_CLIENT_PRIVMSG */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
147 static int nap_send_im(GaimConnection *gc, const char *who, const char *message, int len, int flags)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
148 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
149
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
150 if ((strlen(message) < 2) || (message[0] != '/' ) || (message[1] == '/')) {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
151 /* Actually send a chat message */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
152 nap_write_packet(gc, 205, "%s %s", who, message);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
153 } else {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
154 /* user typed an IRC-style command */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
155 nap_do_irc_style(gc, message, who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
157
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
158 return 1;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
159 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
160
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
161 /* 207 - MSG_CLIENT_ADD_HOTLIST */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
162 static void nap_add_buddy(GaimConnection *gc, const char *name)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
163 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
164 nap_write_packet(gc, 207, "%s", name);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
165 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
166
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
167 /* 208 - MSG_CLIENT_ADD_HOTLIST_SEQ */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
168 static void nap_add_buddies(GaimConnection *gc, GList *buddies)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
169 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
170 while (buddies) {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
171 nap_write_packet(gc, 208, "%s", (char *)buddies->data);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
172 buddies = buddies -> next;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
173 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
174 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
175
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
176 /* 303 - MSG_CLIENT_REMOVE_HOTLIST */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
177 static void nap_remove_buddy(GaimConnection *gc, char *name, char *group)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
178 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
179 nap_write_packet(gc, 303, "%s", name);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
180 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
181
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
182 /* 400 - MSG_CLIENT_JOIN */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
183 static void nap_join_chat(GaimConnection *gc, GHashTable *data)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
184 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
185 char *name;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
186
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
187 if (!data)
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
188 return;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
189
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
190 name = g_hash_table_lookup(data, "group");
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
191
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
192 /* Make sure the name has a # preceeding it */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
193 if (name[0] != '#')
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
194 nap_write_packet(gc, 400, "#%s", name);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
195 else
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
196 nap_write_packet(gc, 400, "%s", name);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
197 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
198
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
199 /* 401 - MSG_CLIENT_PART */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
200 static void nap_chat_leave(GaimConnection *gc, int id)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
201 {
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
202 struct gaim_conversation *c = gaim_find_chat(gc, id);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
203
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
204 if (!c)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
205 return;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
206
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
207 nap_write_packet(gc, 401, "%s", c->name);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
208 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
209
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
210 /* 402 - MSG_CLIENT_PUBLIC */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
211 static int nap_chat_send(GaimConnection *gc, int id, char *message)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
212 {
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
213 struct gaim_conversation *c = gaim_find_chat(gc, id);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
214
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
215 if (!c)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
216 return -EINVAL;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
217
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
218 if ((strlen(message) < 2) || (message[0] != '/' ) || (message[1] == '/')) {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
219 /* Actually send a chat message */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
220 nap_write_packet(gc, 402, "%s %s", c->name, message);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
221 } else {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
222 /* user typed an IRC-style command */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
223 nap_do_irc_style(gc, message, c->name);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
224 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
225
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
226 return 0;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
227 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
228
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
229 /* 603 - MSG_CLIENT_WHOIS */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
230 static void nap_get_info(GaimConnection *gc, const char *who)
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
231 {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
232 nap_write_packet(gc, 603, "%s", who);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
235 static void nap_callback(gpointer data, gint source, GaimInputCondition condition)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236 {
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
237 GaimConnection *gc = data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 struct nap_data *ndata = gc->proto_data;
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
239 struct gaim_conversation *c;
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
240 gchar *buf, *buf2, *buf3, **res;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
241 unsigned short header[2];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 int len;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 int command;
2220
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
244 int i;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
245
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
246 if (read(source, (void*)header, 4) != 4) {
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
247 gaim_connection_error(gc, _("Unable to read header from server"));
2220
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
248 return;
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
249 }
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
250
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
251 len = header[0];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
252 command = header[1];
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
253 buf = (gchar *)g_malloc((len + 1) * sizeof(gchar));
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
254 buf[len] = '\0';
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
255
2220
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
256 i = 0;
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
257 do {
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
258 int tmp = read(source, buf + i, len - i);
2220
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
259 if (tmp <= 0) {
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
260 g_free(buf);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
261 buf = g_strdup_printf("Unable to read mesage from server. Command is %hd, length is %hd.", len, command);
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
262 gaim_connection_error(gc, buf);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
263 g_free(buf);
2220
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
264 return;
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
265 }
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
266 i += tmp;
8b7ba25a7ece [gaim-migrate @ 2230]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2205
diff changeset
267 } while (i != len);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
268
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
269 gaim_debug(GAIM_DEBUG_MISC, "napster", "R %3hd: %s\n", command, buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
270
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
271 switch (command) {
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
272 case 000: /* MSG_SERVER_ERROR */
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
273 gaim_notify_error(gc, NULL, buf, NULL);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
274 gaim_input_remove(gc->inpa);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
275 gc->inpa = 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
276 close(source);
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
277 gaim_connection_destroy(gc);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
278 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
279
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
280 case 003: /* MSG_SERVER_EMAIL */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
281 gaim_debug(GAIM_DEBUG_MISC, "napster", "Registered with e-mail address: %s\n", buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
282 ndata->email = g_strdup(buf);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
283
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
284 /* Our signon is complete */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
285 gaim_connection_set_state(gc, GAIM_CONNECTED);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
286 serv_finish_login(gc);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
287
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
288 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
289
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
290 case 201: /* MSG_SERVER_SEARCH_RESULT */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
291 res = g_strsplit(buf, " ", 0);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
292 serv_got_update(gc, res[0], 1, 0, 0, 0, 0);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
293 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
294 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
295
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
296 case 202: /* MSG_SERVER_SEARCH_END */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
297 serv_got_update(gc, buf, 0, 0, 0, 0, 0);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
298 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
299
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
300 case 205: /* MSG_CLIENT_PRIVMSG */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
301 res = g_strsplit(buf, " ", 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
302 serv_got_im(gc, res[0], res[1], 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
303 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
304 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
305
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
306 case 209: /* MSG_SERVER_USER_SIGNON */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
307 /* USERNAME SPEED */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
308 res = g_strsplit(buf, " ", 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
309 serv_got_update(gc, res[0], 1, 0, 0, 0, 0);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
310 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
311 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
312
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
313 case 210: /* MSG_SERVER_USER_SIGNOFF */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
314 /* USERNAME SPEED */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
315 res = g_strsplit(buf, " ", 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
316 serv_got_update(gc, res[0], 0, 0, 0, 0, 0);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
317 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
318 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
319
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
320 case 214: /* MSG_SERVER_STATS */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
321 res = g_strsplit(buf, " ", 3);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
322 buf2 = g_strdup_printf(_("users: %s, files: %s, size: %sGB"), res[0], res[1], res[2]);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
323 serv_got_im(gc, "server", buf2, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
324 g_free(buf2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
325 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
326 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
327
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
328 case 301: /* MSG_SERVER_HOTLIST_ACK */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
329 /* Our buddy was added successfully */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
330 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
331
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
332 case 302: /* MSG_SERVER_HOTLIST_ERROR */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
333 buf2 = g_strdup_printf(_("Unable to add \"%s\" to your Napster hotlist"), buf);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
334 gaim_notify_error(gc, NULL, buf2, NULL);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
335 g_free(buf2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
336 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
337
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
338 case 316: /* MSG_SERVER_DISCONNECTING */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
339 /* we have been kicked off =^( */
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
340 gaim_notify_error(gc, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
341 _("You were disconnected from the server."), NULL);
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
342 gaim_connection_destroy(gc);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
343 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
344
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
345 case 401: /* MSG_CLIENT_PART */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
346 c = nap_find_chat(gc, buf);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
347 if (c)
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
348 serv_got_chat_left(gc, gaim_chat_get_id(GAIM_CHAT(c)));
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
349 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
350
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
351 case 403: /* MSG_SERVER_PUBLIC */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
352 res = g_strsplit(buf, " ", 3);
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
353 c = nap_find_chat(gc, res[0]);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
354 if (c)
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
355 serv_got_chat_in(gc, gaim_chat_get_id(GAIM_CHAT(c)), res[1], 0, res[2], time((time_t)NULL));
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
356 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
357 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
358
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
359 case 404: /* MSG_SERVER_NOSUCH */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
360 /* abused by opennap servers to broadcast stuff */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
361 serv_got_im(gc, "server", buf, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
362 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
363
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
364 case 405: /* MSG_SERVER_JOIN_ACK */
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
365 c = nap_find_chat(gc, buf);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
366 if (!c)
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
367 serv_got_joined_chat(gc, gaim_chat_get_id(GAIM_CHAT(c)), buf);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
368 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
369
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
370 case 407: /* MSG_SERVER_PART */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
371 res = g_strsplit(buf, " ", 0);
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
372 c = nap_find_chat(gc, res[0]);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
373 gaim_chat_remove_user(GAIM_CHAT(c), res[1], NULL);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
374 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
375 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
376
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
377 case 406: /* MSG_SERVER_JOIN */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
378 case 408: /* MSG_SERVER_CHANNEL_USER_LIST */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
379 res = g_strsplit(buf, " ", 4);
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
380 c = nap_find_chat(gc, res[0]);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
381 gaim_chat_add_user(GAIM_CHAT(c), res[1], NULL);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
382 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
383 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
384
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
385 case 409: /* MSG_SERVER_CHANNEL_USER_LIST_END */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
386 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
387
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
388 case 410: /* MSG_SERVER_TOPIC */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
389 /* display the topic in the channel */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
390 res = g_strsplit(buf, " ", 2);
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
391 c = nap_find_chat(gc, res[0]);
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
392 gaim_chat_set_topic(GAIM_CHAT(c), res[0], res[1]);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
393 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
394 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
395
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
396 case 603: /* MSG_CLIENT_WHOIS */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
397 buf2 = g_strdup_printf(_("%s requested your information"), buf);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
398 serv_got_im(gc, "server", buf2, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
399 g_free(buf2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
400 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
401
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
402 case 604: /* MSG_SERVER_WHOIS_RESPONSE */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
403 /* XXX - Format is: "Elite" 37 " " "Active" 0 0 0 0 "gaim 0.63cvs" 0 0 192.168.1.41 32798 0 unknown flounder */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
404 res = g_strsplit(buf, " ", 2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
405 g_show_info_text(gc, res[0], 2, res[1], NULL);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
406 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
407 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
408
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
409 case 621:
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
410 case 622: /* MSG_CLIENT_MOTD */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
411 /* also replaces MSG_SERVER_MOTD, so we should display it */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
412 serv_got_im(gc, "motd", buf, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
413 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
414
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
415 case 627: /* MSG_CLIENT_WALLOP */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
416 /* abused by opennap server maintainers to broadcast stuff */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
417 serv_got_im(gc, "wallop", buf, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
418 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
419
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
420 case 628: /* MSG_CLIENT_ANNOUNCE */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
421 serv_got_im(gc, "announce", buf, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
422 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
423
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
424 case 748: /* MSG_SERVER_GHOST */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
425 /* Looks like someone logged in as us! =-O */
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
426 gaim_notify_error(gc, NULL,
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
427 _("You were disconnected from the server, because "
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
428 "you logged on from a different location"), NULL);
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
429 gaim_connection_destroy(gc);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
430 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
431
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
432 case 751: /* MSG_CLIENT_PING */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
433 buf2 = g_strdup_printf(_("%s requested a PING"), buf);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
434 serv_got_im(gc, "server", buf2, 0, time(NULL), -1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
435 g_free(buf2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
436 /* send back a pong */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
437 /* MSG_CLIENT_PONG */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
438 nap_write_packet(gc, 752, "%s", buf);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
439 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
440
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
441 case 752: /* MSG_CLIENT_PONG */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
442 buf2 = g_strdup_printf("Received pong from %s", buf);
5436
ad445074d239 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5402
diff changeset
443 gaim_notify_info(gc, NULL, buf2, NULL);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
444 g_free(buf2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
445 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
446
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
447 case 824: /* MSG_CLIENT_EMOTE */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
448 res = g_strsplit(buf, " ", 3);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
449 buf2 = g_strndup(res[2]+1, strlen(res[2]) - 2); /* chomp off the surround quotes */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
450 buf3 = g_strdup_printf("/me %s", buf2);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
451 g_free(buf2);
5402
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
452 if ((c = nap_find_chat(gc, res[0]))) {
f3cf3bff72f0 [gaim-migrate @ 5778]
Mark Doliner <mark@kingant.net>
parents: 5388
diff changeset
453 gaim_chat_write(GAIM_CHAT(c), res[1], buf3, WFLAG_NICK, time(NULL));
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
454 }
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
455 g_free(buf3);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
456 g_strfreev(res);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
457 break;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
458
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
459 default:
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
460 gaim_debug(GAIM_DEBUG_MISC, "napster", "Unknown packet %hd: %s\n", command, buf);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
461 break;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
462 }
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
463
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
464 g_free(buf);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
465 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
466
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
467 /* 002 - MSG_CLIENT_LOGIN */
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
468 static void nap_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
469 {
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
470 GaimConnection *gc = data;
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
471 struct nap_data *ndata = (struct nap_data *)gc->proto_data;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
472 gchar *buf;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473
5605
4fa8ca4f4259 [gaim-migrate @ 6009]
Nathan Walp <nwalp@pidgin.im>
parents: 5604
diff changeset
474 if (!g_list_find(gaim_connections_get_all(), gc)) {
2701
8a84f2bb1716 [gaim-migrate @ 2714]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2681
diff changeset
475 close(source);
8a84f2bb1716 [gaim-migrate @ 2714]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2681
diff changeset
476 return;
8a84f2bb1716 [gaim-migrate @ 2714]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2681
diff changeset
477 }
8a84f2bb1716 [gaim-migrate @ 2714]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2681
diff changeset
478
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
479 if (source < 0) {
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
480 gaim_connection_error(gc, "Unable to connect");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
481 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
482 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
483
4452
2afc0f845e74 [gaim-migrate @ 4727]
Sean Egan <seanegan@gmail.com>
parents: 4359
diff changeset
484 ndata->fd = source;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
485
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
486 /* Update the login progress status display */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
487 buf = g_strdup_printf("Logging in: %s", gaim_account_get_username(gc->account));
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
488 gaim_connection_update_progress(gc, buf, 2, NAPSTER_CONNECT_STEPS);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
489 g_free(buf);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
490
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
491 /* Write our signon data */
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
492 nap_write_packet(gc, 2, "%s %s 0 \"gaim %s\" 0",
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
493 gaim_account_get_username(gc->account),
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
494 gaim_account_get_password(gc->account), VERSION);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
495
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496 /* And set up the input watcher */
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
497 gc->inpa = gaim_input_add(ndata->fd, GAIM_INPUT_READ, nap_callback, gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
498 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
499
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
500 static void nap_login(GaimAccount *account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501 {
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
502 GaimConnection *gc = gaim_account_get_connection(account);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
503
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
504 gaim_connection_update_progress(gc, _("Connecting"), 1, NAPSTER_CONNECT_STEPS);
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
505
4460
23af9ba33ca4 [gaim-migrate @ 4735]
Nathan Walp <nwalp@pidgin.im>
parents: 4455
diff changeset
506 gc->proto_data = g_new0(struct nap_data, 1);
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
507 if (proxy_connect(account,
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
508 gaim_account_get_string(account, "server", NAP_SERVER),
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
509 gaim_account_get_int(account, "port", NAP_PORT),
4491
3196d9044a45 [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4460
diff changeset
510 nap_login_connect, gc) != 0) {
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
511 gaim_connection_error(gc, _("Unable to connect"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
513 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
514
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
515 static void nap_close(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
516 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
517 struct nap_data *ndata = (struct nap_data *)gc->proto_data;
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
518
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
519 if (gc->inpa)
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2086
diff changeset
520 gaim_input_remove(gc->inpa);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
521
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
522 if (!ndata)
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
523 return;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
524
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
525 g_free(ndata->email);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
526 g_free(ndata);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
527 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
528
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
529 static const char* nap_list_icon(GaimAccount *a, struct buddy *b)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
530 {
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4634
diff changeset
531 return "napster";
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
532 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
533
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4793
diff changeset
534 static void nap_list_emblems(struct buddy *b, char **se, char **sw, char **nw, char **ne)
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4793
diff changeset
535 {
5068
b37d7d09ec83 [gaim-migrate @ 5419]
Nathan Walp <nwalp@pidgin.im>
parents: 4916
diff changeset
536 if (b->present == GAIM_BUDDY_OFFLINE)
4916
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4793
diff changeset
537 *se = "offline";
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4793
diff changeset
538 }
d9b6b5ae34e4 [gaim-migrate @ 5250]
Sean Egan <seanegan@gmail.com>
parents: 4793
diff changeset
539
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
540 static GList *nap_buddy_menu(GaimConnection *gc, const char *who)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
541 {
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
542 GList *m = NULL;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
543 struct proto_buddy_menu *pbm;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
544
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
545 pbm = g_new0(struct proto_buddy_menu, 1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
546 pbm->label = _("Get Info");
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
547 pbm->callback = nap_get_info;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
548 pbm->gc = gc;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
549 m = g_list_append(m, pbm);
3572
bdd0bebd2d04 [gaim-migrate @ 3670]
Sean Egan <seanegan@gmail.com>
parents: 3466
diff changeset
550
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
551 return m;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
552 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
553
5604
92b2c7f461f9 [gaim-migrate @ 6008]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
554 static GList *nap_chat_info(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
555 {
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
556 GList *m = NULL;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
557 struct proto_chat_entry *pce;
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
558
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
559 pce = g_new0(struct proto_chat_entry, 1);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
560 pce->label = _("Join what group:");
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
561 pce->identifier = "group";
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
562 m = g_list_append(m, pce);
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
563
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
564 return m;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
565 }
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
566
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
567 static GaimPlugin *my_protocol = NULL;
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
568
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
569 static GaimPluginProtocolInfo prpl_info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
570 {
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
571 GAIM_PROTO_NAPSTER,
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
572 OPT_PROTO_CHAT_TOPIC,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
573 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
574 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
575 nap_list_icon,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
576 nap_list_emblems,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
577 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
578 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
579 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
580 NULL,
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
581 nap_buddy_menu,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
582 nap_chat_info,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
583 nap_login,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
584 nap_close,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
585 nap_send_im,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
586 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
587 NULL,
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
588 nap_get_info,
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
589 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
590 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
591 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
592 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
593 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
594 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
595 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
596 nap_add_buddy,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
597 nap_add_buddies,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
598 nap_remove_buddy,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
599 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
600 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
601 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
602 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
603 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
604 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
605 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
606 nap_join_chat,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
607 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
608 nap_chat_leave,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
609 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
610 nap_chat_send,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
611 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
612 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
613 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
614 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
615 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
616 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
617 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
618 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
619 NULL,
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
620 NULL
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
621 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
622
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
623 static GaimPluginInfo info =
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
624 {
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
625 2, /**< api_version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
626 GAIM_PLUGIN_PROTOCOL, /**< type */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
627 NULL, /**< ui_requirement */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
628 0, /**< flags */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
629 NULL, /**< dependencies */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
630 GAIM_PRIORITY_DEFAULT, /**< priority */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
631
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
632 "prpl-napster", /**< id */
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
633 "Napster", /**< name */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
634 VERSION, /**< version */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
635 /** summary */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
636 N_("NAPSTER Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
637 /** description */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
638 N_("NAPSTER Protocol Plugin"),
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
639 NULL, /**< author */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
640 WEBSITE, /**< homepage */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
641
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
642 NULL, /**< load */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
643 NULL, /**< unload */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
644 NULL, /**< destroy */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
645
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
646 NULL, /**< ui_info */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
647 &prpl_info /**< extra_info */
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
648 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
649
5388
5d0df915ca09 [gaim-migrate @ 5764]
Mark Doliner <mark@kingant.net>
parents: 5234
diff changeset
650 static void __init_plugin(GaimPlugin *plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
651 {
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
652 GaimAccountOption *option;
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
653
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
654 option = gaim_account_option_string_new(_("Server"), "server",
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
655 NAP_SERVER);
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
656 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
657 option);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
658
5638
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
659 option = gaim_account_option_int_new(_("Port"), "port", 8888);
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
660 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
0bdfa28c678e [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5605
diff changeset
661 option);
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
662
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
663 my_protocol = plugin;
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
664 }
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
665
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
666 GAIM_INIT_PLUGIN(napster, __init_plugin, info);