Mon, 10 Oct 2005 17:59:48 +0000
[gaim-migrate @ 13914]
Some bits'n'pieces:
A bunch of memory leak fixes
Fix newly created accounts to connect in the currently active global
status
Fix the modify account dialog to only show relevant user options etc.
Update sametime to use some more of the new status stuff, it still
needs more love though.
Some s/online/available/ for consistency across prpls
Fix a racyness in disconnecting connections that want to die (fixes
the Yahoo crash when signing on somewhere else)
Sorry if I caused any conflicts!
| 2086 | 1 | /* |
| 2 | * gaim - Napster Protocol Plugin | |
| 3 | * | |
| 3322 | 4 | * Copyright (C) 2000-2001, Rob Flynn <rob@marko.net> |
|
7084
da83f7ead5c6
[gaim-migrate @ 7649]
Christian Hammond <chipx86@chipx86.com>
parents:
7062
diff
changeset
|
5 | * |
| 2086 | 6 | * This program is free software; you can redistribute it and/or modify |
| 7 | * it under the terms of the GNU General Public License as published by | |
| 8 | * the Free Software Foundation; either version 2 of the License, or | |
| 9 | * (at your option) any later version. | |
| 10 | * | |
| 11 | * This program is distributed in the hope that it will be useful, | |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | * GNU General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU General Public License | |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
20 | #include "internal.h" |
| 2086 | 21 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
22 | #include "account.h" |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
23 | #include "accountopt.h" |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9015
diff
changeset
|
24 | #include "blist.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
25 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
26 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
27 | #include "notify.h" |
| 2086 | 28 | #include "prpl.h" |
| 29 | #include "proxy.h" | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5681
diff
changeset
|
30 | #include "util.h" |
| 9943 | 31 | #include "version.h" |
| 3630 | 32 | |
| 3322 | 33 | #define NAP_SERVER "64.124.41.187" |
| 34 | #define NAP_PORT 8888 | |
| 35 | ||
| 5604 | 36 | #define NAPSTER_CONNECT_STEPS 2 |
| 37 | ||
| 2086 | 38 | GSList *nap_connections = NULL; |
| 39 | ||
| 40 | struct nap_data { | |
| 41 | int fd; | |
| 42 | gchar *email; | |
| 43 | }; | |
| 44 | ||
| 5679 | 45 | static GaimConversation *nap_find_chat(GaimConnection *gc, const char *name) |
| 2086 | 46 | { |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
47 | GSList *bcs = gc->buddy_chats; |
| 2086 | 48 | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
49 | while (bcs) { |
| 5679 | 50 | GaimConversation *b = bcs->data; |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
51 | if (!gaim_utf8_strcasecmp(b->name, name)) |
| 5388 | 52 | return b; |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
53 | bcs = bcs->next; |
| 5388 | 54 | } |
| 55 | ||
| 56 | return NULL; | |
| 57 | } | |
| 58 | ||
| 5604 | 59 | static void nap_write_packet(GaimConnection *gc, unsigned short command, const char *format, ...) |
| 5388 | 60 | { |
| 61 | struct nap_data *ndata = (struct nap_data *)gc->proto_data; | |
| 62 | va_list ap; | |
| 63 | gchar *message; | |
| 64 | unsigned short size; | |
| 65 | ||
| 66 | va_start(ap, format); | |
| 67 | message = g_strdup_vprintf(format, ap); | |
| 68 | va_end(ap); | |
| 69 | ||
| 70 | size = strlen(message); | |
| 71 | gaim_debug(GAIM_DEBUG_MISC, "napster", "S %3hd: %s\n", command, message); | |
| 72 | ||
| 73 | write(ndata->fd, &size, 2); | |
| 74 | write(ndata->fd, &command, 2); | |
| 75 | write(ndata->fd, message, size); | |
| 76 | ||
| 77 | g_free(message); | |
| 78 | } | |
| 79 | ||
| 5604 | 80 | static int nap_do_irc_style(GaimConnection *gc, const char *message, const char *name) |
| 5388 | 81 | { |
| 82 | gchar **res; | |
| 83 | ||
| 84 | gaim_debug(GAIM_DEBUG_MISC, "napster", "C %s\n", message); | |
| 85 | ||
| 86 | res = g_strsplit(message, " ", 2); | |
| 87 | ||
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
88 | if (!g_ascii_strcasecmp(res[0], "/ME")) { /* MSG_CLIENT_PUBLIC */ |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
89 | nap_write_packet(gc, 824, "%s \"%s\"", name, res[1]); |
| 5388 | 90 | |
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
91 | } else if (!g_ascii_strcasecmp(res[0], "/MSG")) { /* MSG_CLIENT_PUBLIC */ |
| 5388 | 92 | nap_write_packet(gc, 205, "%s", res[1]); |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
93 | |
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
94 | } else if (!g_ascii_strcasecmp(res[0], "/JOIN")) { /* join chatroom MSG_CLIENT_JOIN */ |
| 5388 | 95 | if (!res[1]) { |
| 96 | g_strfreev(res); | |
| 97 | return 1; | |
| 98 | } | |
| 99 | if (res[1][0] != '#') | |
| 100 | nap_write_packet(gc, 400, "#%s", res[1]); | |
| 101 | else | |
| 102 | nap_write_packet(gc, 400, "%s", res[1]); | |
| 103 | ||
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
104 | } else if (!g_ascii_strcasecmp(res[0], "/PART")) { /* partchatroom MSG_CLIENT_PART */ |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
105 | nap_write_packet(gc, 401, "%s", res[1] ? res[1] : name); |
| 5388 | 106 | |
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
107 | } else if (!g_ascii_strcasecmp(res[0], "/TOPIC")) { /* set topic MSG_SERVER_TOPIC */ |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
108 | nap_write_packet(gc, 410, "%s", res[1] ? res[1] : name); |
| 5388 | 109 | |
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
110 | } else if (!g_ascii_strcasecmp(res[0], "/WHOIS")) { /* whois request MSG_CLIENT_WHOIS */ |
| 5388 | 111 | nap_write_packet(gc, 603, "%s", res[1]); |
| 112 | ||
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
113 | } else if (!g_ascii_strcasecmp(res[0], "/PING")) { /* send ping MSG_CLIENT_PING */ |
| 5388 | 114 | nap_write_packet(gc, 751, "%s", res[1]); |
| 115 | ||
|
8386
5b9e02f4c03d
[gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents:
8170
diff
changeset
|
116 | } else if (!g_ascii_strcasecmp(res[0], "/KICK")) { /* kick asswipe MSG_CLIENT_KICK */ |
| 5388 | 117 | nap_write_packet(gc, 829, "%s", res[1]); |
| 118 | ||
| 119 | } else { | |
| 120 | g_strfreev(res); | |
| 121 | return 1; | |
| 122 | } | |
| 123 | ||
| 124 | g_strfreev(res); | |
| 125 | return 0; | |
| 126 | } | |
| 127 | ||
| 128 | /* 205 - MSG_CLIENT_PRIVMSG */ | |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
129 | static int nap_send_im(GaimConnection *gc, const char *who, const char *message, GaimConvImFlags flags) |
| 5388 | 130 | { |
| 131 | ||
| 132 | if ((strlen(message) < 2) || (message[0] != '/' ) || (message[1] == '/')) { | |
| 133 | /* Actually send a chat message */ | |
| 134 | nap_write_packet(gc, 205, "%s %s", who, message); | |
| 135 | } else { | |
| 136 | /* user typed an IRC-style command */ | |
| 137 | nap_do_irc_style(gc, message, who); | |
| 2086 | 138 | } |
| 139 | ||
| 5388 | 140 | return 1; |
| 141 | } | |
| 142 | ||
| 143 | /* 207 - MSG_CLIENT_ADD_HOTLIST */ | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9040
diff
changeset
|
144 | static void nap_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) |
| 5388 | 145 | { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9040
diff
changeset
|
146 | nap_write_packet(gc, 207, "%s", buddy->name); |
| 5388 | 147 | } |
| 148 | ||
| 149 | /* 208 - MSG_CLIENT_ADD_HOTLIST_SEQ */ | |
|
10869
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
150 | static void nap_send_buddylist(GaimConnection *gc) |
| 5388 | 151 | { |
|
10869
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
152 | GaimBuddyList *blist; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
153 | GaimBlistNode *gnode, *cnode, *bnode; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
154 | GaimBuddy *buddy; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
155 | |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
156 | if ((blist = gaim_get_blist()) != NULL) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
157 | { |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
158 | for (gnode = blist->root; gnode != NULL; gnode = gnode->next) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
159 | { |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
160 | if (!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
161 | continue; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
162 | for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
163 | { |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
164 | if (!GAIM_BLIST_NODE_IS_CONTACT(cnode)) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
165 | continue; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
166 | for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
167 | { |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
168 | if (!GAIM_BLIST_NODE_IS_BUDDY(bnode)) |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
169 | continue; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
170 | buddy = (GaimBuddy *)bnode; |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
171 | nap_write_packet(gc, 208, "%s", buddy->name); |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
172 | } |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
173 | } |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
174 | } |
| 5388 | 175 | } |
| 176 | } | |
| 177 | ||
| 178 | /* 303 - MSG_CLIENT_REMOVE_HOTLIST */ | |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9040
diff
changeset
|
179 | static void nap_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) |
| 5388 | 180 | { |
|
9285
9cedf5d26577
[gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents:
9040
diff
changeset
|
181 | nap_write_packet(gc, 303, "%s", buddy->name); |
| 5388 | 182 | } |
| 183 | ||
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
184 | static char *nap_get_chat_name(GHashTable *data) { |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
185 | char *name = g_hash_table_lookup(data, "group"); |
|
10200
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
186 | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
187 | /* Make sure the name has a # preceding it */ |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
188 | if (name[0] != '#') { |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
189 | return g_strdup_printf("#%s", name); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
190 | } |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
191 | |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
192 | return g_strdup(name); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
193 | } |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
194 | |
| 5388 | 195 | /* 400 - MSG_CLIENT_JOIN */ |
| 5604 | 196 | static void nap_join_chat(GaimConnection *gc, GHashTable *data) |
| 5388 | 197 | { |
| 198 | char *name; | |
| 199 | ||
| 200 | if (!data) | |
| 201 | return; | |
| 202 | ||
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
203 | name = nap_get_chat_name(data); |
| 5388 | 204 | |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
205 | if (name) { |
| 5388 | 206 | nap_write_packet(gc, 400, "%s", name); |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
207 | g_free(name); |
|
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
208 | } |
| 5388 | 209 | } |
| 210 | ||
| 211 | /* 401 - MSG_CLIENT_PART */ | |
| 5604 | 212 | static void nap_chat_leave(GaimConnection *gc, int id) |
| 5388 | 213 | { |
| 5679 | 214 | GaimConversation *c = gaim_find_chat(gc, id); |
| 5388 | 215 | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
216 | if (!c) |
| 5388 | 217 | return; |
| 218 | ||
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
219 | nap_write_packet(gc, 401, "%s", c->name); |
| 5388 | 220 | } |
| 221 | ||
| 222 | /* 402 - MSG_CLIENT_PUBLIC */ | |
|
6059
9934c862ca14
[gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents:
5920
diff
changeset
|
223 | static int nap_chat_send(GaimConnection *gc, int id, const char *message) |
| 5388 | 224 | { |
| 5679 | 225 | GaimConversation *c = gaim_find_chat(gc, id); |
| 5388 | 226 | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
227 | if (!c) |
| 5388 | 228 | return -EINVAL; |
| 229 | ||
| 230 | if ((strlen(message) < 2) || (message[0] != '/' ) || (message[1] == '/')) { | |
| 231 | /* Actually send a chat message */ | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
232 | nap_write_packet(gc, 402, "%s %s", c->name, message); |
| 5388 | 233 | } else { |
| 234 | /* user typed an IRC-style command */ | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
235 | nap_do_irc_style(gc, message, c->name); |
| 5388 | 236 | } |
| 237 | ||
| 238 | return 0; | |
| 239 | } | |
| 240 | ||
| 241 | /* 603 - MSG_CLIENT_WHOIS */ | |
| 5604 | 242 | static void nap_get_info(GaimConnection *gc, const char *who) |
| 5388 | 243 | { |
| 244 | nap_write_packet(gc, 603, "%s", who); | |
| 2086 | 245 | } |
| 246 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
247 | static void nap_callback(gpointer data, gint source, GaimInputCondition condition) |
| 2086 | 248 | { |
| 5604 | 249 | GaimConnection *gc = data; |
| 2086 | 250 | struct nap_data *ndata = gc->proto_data; |
|
10010
d9ee01f0659a
[gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents:
9953
diff
changeset
|
251 | GaimAccount *account = gaim_connection_get_account(gc); |
| 5679 | 252 | GaimConversation *c; |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
253 | gchar *buf, *buf2, *buf3, **res; |
| 2086 | 254 | unsigned short header[2]; |
| 255 | int len; | |
| 256 | int command; | |
|
2220
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
257 | int i; |
| 2086 | 258 | |
| 5388 | 259 | if (read(source, (void*)header, 4) != 4) { |
| 5604 | 260 | gaim_connection_error(gc, _("Unable to read header from server")); |
|
2220
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
261 | return; |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
262 | } |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
263 | |
| 2086 | 264 | len = header[0]; |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10732
diff
changeset
|
265 | command = header[1]; |
| 5388 | 266 | buf = (gchar *)g_malloc((len + 1) * sizeof(gchar)); |
| 267 | buf[len] = '\0'; | |
| 2086 | 268 | |
|
2220
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
269 | i = 0; |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
270 | do { |
| 5388 | 271 | int tmp = read(source, buf + i, len - i); |
|
2220
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
272 | if (tmp <= 0) { |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
273 | g_free(buf); |
|
10816
ba2657f4c157
[gaim-migrate @ 12471]
Luke Schierer <lschiere@pidgin.im>
parents:
10812
diff
changeset
|
274 | buf = g_strdup_printf(_("Unable to read message from server: %s. Command is %hd, length is %hd."), strerror(errno), len, command); |
| 5604 | 275 | gaim_connection_error(gc, buf); |
| 5388 | 276 | g_free(buf); |
|
2220
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
277 | return; |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
278 | } |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
279 | i += tmp; |
|
ce98eae1803a
[gaim-migrate @ 2230]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
280 | } while (i != len); |
| 2086 | 281 | |
| 5388 | 282 | gaim_debug(GAIM_DEBUG_MISC, "napster", "R %3hd: %s\n", command, buf); |
| 2086 | 283 | |
| 5388 | 284 | switch (command) { |
| 285 | case 000: /* MSG_SERVER_ERROR */ | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
286 | gaim_notify_error(gc, NULL, buf, NULL); |
| 5388 | 287 | gaim_input_remove(gc->inpa); |
| 288 | gc->inpa = 0; | |
| 2086 | 289 | close(source); |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10732
diff
changeset
|
290 | gaim_connection_error(gc, _("Unknown server error.")); |
| 5388 | 291 | break; |
| 2086 | 292 | |
| 5388 | 293 | case 003: /* MSG_SERVER_EMAIL */ |
| 294 | gaim_debug(GAIM_DEBUG_MISC, "napster", "Registered with e-mail address: %s\n", buf); | |
| 2086 | 295 | ndata->email = g_strdup(buf); |
| 296 | ||
| 297 | /* Our signon is complete */ | |
| 5604 | 298 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
| 2086 | 299 | |
|
10869
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
300 | /* Send the server our buddy list */ |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
301 | nap_send_buddylist(gc); |
|
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
302 | |
| 5388 | 303 | break; |
| 304 | ||
| 305 | case 201: /* MSG_SERVER_SEARCH_RESULT */ | |
| 306 | res = g_strsplit(buf, " ", 0); | |
|
11638
1821b40269a3
[gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11533
diff
changeset
|
307 | gaim_prpl_got_user_status(account, res[0], "available", NULL); |
| 5388 | 308 | g_strfreev(res); |
| 309 | break; | |
| 310 | ||
| 311 | case 202: /* MSG_SERVER_SEARCH_END */ | |
| 10123 | 312 | gaim_prpl_got_user_status(account, buf, "offline", NULL); |
| 5388 | 313 | break; |
| 314 | ||
| 315 | case 205: /* MSG_CLIENT_PRIVMSG */ | |
| 316 | res = g_strsplit(buf, " ", 2); | |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10723
diff
changeset
|
317 | buf2 = g_markup_escape_text(res[1], -1); |
|
8495
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
318 | serv_got_im(gc, res[0], buf2, 0, time(NULL)); |
|
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
319 | g_free(buf2); |
| 5388 | 320 | g_strfreev(res); |
| 321 | break; | |
| 322 | ||
| 323 | case 209: /* MSG_SERVER_USER_SIGNON */ | |
| 324 | /* USERNAME SPEED */ | |
| 325 | res = g_strsplit(buf, " ", 2); | |
|
11638
1821b40269a3
[gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11533
diff
changeset
|
326 | gaim_prpl_got_user_status(account, res[0], "available", NULL); |
| 5388 | 327 | g_strfreev(res); |
| 328 | break; | |
| 329 | ||
| 330 | case 210: /* MSG_SERVER_USER_SIGNOFF */ | |
| 331 | /* USERNAME SPEED */ | |
| 332 | res = g_strsplit(buf, " ", 2); | |
|
10010
d9ee01f0659a
[gaim-migrate @ 10927]
Mark Doliner <markdoliner@pidgin.im>
parents:
9953
diff
changeset
|
333 | gaim_prpl_got_user_status(account, res[0], "offline", NULL); |
| 5388 | 334 | g_strfreev(res); |
| 335 | break; | |
| 336 | ||
| 337 | case 214: /* MSG_SERVER_STATS */ | |
| 338 | res = g_strsplit(buf, " ", 3); | |
| 339 | buf2 = g_strdup_printf(_("users: %s, files: %s, size: %sGB"), res[0], res[1], res[2]); | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6979
diff
changeset
|
340 | serv_got_im(gc, "server", buf2, 0, time(NULL)); |
| 5388 | 341 | g_free(buf2); |
| 342 | g_strfreev(res); | |
| 343 | break; | |
| 344 | ||
| 345 | case 301: /* MSG_SERVER_HOTLIST_ACK */ | |
| 346 | /* Our buddy was added successfully */ | |
| 347 | break; | |
| 348 | ||
| 349 | case 302: /* MSG_SERVER_HOTLIST_ERROR */ | |
| 350 | buf2 = g_strdup_printf(_("Unable to add \"%s\" to your Napster hotlist"), buf); | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
351 | gaim_notify_error(gc, NULL, buf2, NULL); |
| 5388 | 352 | g_free(buf2); |
| 353 | break; | |
| 354 | ||
| 355 | case 316: /* MSG_SERVER_DISCONNECTING */ | |
| 356 | /* we have been kicked off =^( */ | |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10732
diff
changeset
|
357 | gaim_connection_error(gc, _("You were disconnected from the server.")); |
| 5388 | 358 | break; |
| 359 | ||
| 360 | case 401: /* MSG_CLIENT_PART */ | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
361 | c = nap_find_chat(gc, buf); |
|
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
362 | if (c) |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
363 | serv_got_chat_left(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(c))); |
| 5388 | 364 | break; |
| 365 | ||
| 366 | case 403: /* MSG_SERVER_PUBLIC */ | |
| 367 | res = g_strsplit(buf, " ", 3); | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
368 | c = nap_find_chat(gc, res[0]); |
|
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
369 | if (c) |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
370 | serv_got_chat_in(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(c)), res[1], 0, res[2], time((time_t)NULL)); |
| 5388 | 371 | g_strfreev(res); |
| 372 | break; | |
| 373 | ||
| 374 | case 404: /* MSG_SERVER_NOSUCH */ | |
| 375 | /* abused by opennap servers to broadcast stuff */ | |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10723
diff
changeset
|
376 | buf2 = g_markup_escape_text(buf, -1); |
|
8495
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
377 | serv_got_im(gc, "server", buf2, 0, time(NULL)); |
|
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
378 | g_free(buf2); |
| 5388 | 379 | break; |
| 380 | ||
| 381 | case 405: /* MSG_SERVER_JOIN_ACK */ | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
382 | c = nap_find_chat(gc, buf); |
|
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
383 | if (!c) |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
384 | serv_got_joined_chat(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(c)), buf); |
| 5388 | 385 | break; |
| 386 | ||
| 387 | case 407: /* MSG_SERVER_PART */ | |
| 388 | res = g_strsplit(buf, " ", 0); | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
389 | c = nap_find_chat(gc, res[0]); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
390 | gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c), res[1], NULL); |
| 5388 | 391 | g_strfreev(res); |
| 392 | break; | |
| 393 | ||
| 394 | case 406: /* MSG_SERVER_JOIN */ | |
| 395 | case 408: /* MSG_SERVER_CHANNEL_USER_LIST */ | |
| 396 | res = g_strsplit(buf, " ", 4); | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
397 | c = nap_find_chat(gc, res[0]); |
|
9846
61f7349c153a
[gaim-migrate @ 10724]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9797
diff
changeset
|
398 | gaim_conv_chat_add_user(GAIM_CONV_CHAT(c), res[1], NULL, GAIM_CBFLAGS_NONE, TRUE); |
| 5388 | 399 | g_strfreev(res); |
| 400 | break; | |
| 401 | ||
| 402 | case 409: /* MSG_SERVER_CHANNEL_USER_LIST_END */ | |
| 403 | break; | |
| 404 | ||
| 405 | case 410: /* MSG_SERVER_TOPIC */ | |
| 406 | /* display the topic in the channel */ | |
| 407 | res = g_strsplit(buf, " ", 2); | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
408 | c = nap_find_chat(gc, res[0]); |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
409 | gaim_conv_chat_set_topic(GAIM_CONV_CHAT(c), res[0], res[1]); |
| 5388 | 410 | g_strfreev(res); |
| 411 | break; | |
| 412 | ||
| 413 | case 603: /* MSG_CLIENT_WHOIS */ | |
| 414 | buf2 = g_strdup_printf(_("%s requested your information"), buf); | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6979
diff
changeset
|
415 | serv_got_im(gc, "server", buf2, 0, time(NULL)); |
| 5388 | 416 | g_free(buf2); |
| 417 | break; | |
| 418 | ||
| 419 | case 604: /* MSG_SERVER_WHOIS_RESPONSE */ | |
| 420 | /* XXX - Format is: "Elite" 37 " " "Active" 0 0 0 0 "gaim 0.63cvs" 0 0 192.168.1.41 32798 0 unknown flounder */ | |
| 421 | res = g_strsplit(buf, " ", 2); | |
|
7062
26abb8b189ce
[gaim-migrate @ 7626]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
422 | /* res[0] == username */ |
|
11533
f58436975d44
[gaim-migrate @ 13782]
Richard Laager <rlaager@pidgin.im>
parents:
11531
diff
changeset
|
423 | gaim_notify_userinfo(gc, res[0], res[1], NULL, NULL); |
| 5388 | 424 | g_strfreev(res); |
| 425 | break; | |
| 426 | ||
| 427 | case 621: | |
| 428 | case 622: /* MSG_CLIENT_MOTD */ | |
| 429 | /* also replaces MSG_SERVER_MOTD, so we should display it */ | |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10723
diff
changeset
|
430 | buf2 = g_markup_escape_text(buf, -1); |
|
8495
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
431 | serv_got_im(gc, "motd", buf2, 0, time(NULL)); |
|
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
432 | g_free(buf2); |
| 5388 | 433 | break; |
| 434 | ||
| 435 | case 627: /* MSG_CLIENT_WALLOP */ | |
| 436 | /* abused by opennap server maintainers to broadcast stuff */ | |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10723
diff
changeset
|
437 | buf2 = g_markup_escape_text(buf, -1); |
|
8495
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
438 | serv_got_im(gc, "wallop", buf2, 0, time(NULL)); |
|
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
439 | g_free(buf2); |
| 5388 | 440 | break; |
| 441 | ||
| 442 | case 628: /* MSG_CLIENT_ANNOUNCE */ | |
|
10732
5e314ab498bf
[gaim-migrate @ 12334]
Richard Laager <rlaager@pidgin.im>
parents:
10723
diff
changeset
|
443 | buf2 = g_markup_escape_text(buf, -1); |
|
8495
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
444 | serv_got_im(gc, "announce", buf2, 0, time(NULL)); |
|
f8177127913f
[gaim-migrate @ 9230]
Mark Doliner <markdoliner@pidgin.im>
parents:
8386
diff
changeset
|
445 | g_free(buf); |
| 5388 | 446 | break; |
| 447 | ||
| 448 | case 748: /* MSG_SERVER_GHOST */ | |
| 449 | /* Looks like someone logged in as us! =-O */ | |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10732
diff
changeset
|
450 | gaim_connection_error(gc, _("You have signed on from another location.")); |
| 5388 | 451 | break; |
| 452 | ||
| 453 | case 751: /* MSG_CLIENT_PING */ | |
| 454 | buf2 = g_strdup_printf(_("%s requested a PING"), buf); | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6979
diff
changeset
|
455 | serv_got_im(gc, "server", buf2, 0, time(NULL)); |
| 5388 | 456 | g_free(buf2); |
| 457 | /* send back a pong */ | |
| 458 | /* MSG_CLIENT_PONG */ | |
| 459 | nap_write_packet(gc, 752, "%s", buf); | |
| 460 | break; | |
| 461 | ||
| 462 | case 752: /* MSG_CLIENT_PONG */ | |
| 463 | buf2 = g_strdup_printf("Received pong from %s", buf); | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5402
diff
changeset
|
464 | gaim_notify_info(gc, NULL, buf2, NULL); |
| 5388 | 465 | g_free(buf2); |
| 466 | break; | |
| 467 | ||
| 468 | case 824: /* MSG_CLIENT_EMOTE */ | |
| 469 | res = g_strsplit(buf, " ", 3); | |
| 470 | buf2 = g_strndup(res[2]+1, strlen(res[2]) - 2); /* chomp off the surround quotes */ | |
| 471 | buf3 = g_strdup_printf("/me %s", buf2); | |
| 472 | g_free(buf2); | |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
473 | if ((c = nap_find_chat(gc, res[0]))) { |
|
7118
280b3b85a28a
[gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents:
7084
diff
changeset
|
474 | gaim_conv_chat_write(GAIM_CONV_CHAT(c), res[1], buf3, GAIM_MESSAGE_NICK, time(NULL)); |
| 5388 | 475 | } |
| 476 | g_free(buf3); | |
| 477 | g_strfreev(res); | |
| 478 | break; | |
| 479 | ||
| 480 | default: | |
| 481 | gaim_debug(GAIM_DEBUG_MISC, "napster", "Unknown packet %hd: %s\n", command, buf); | |
| 482 | break; | |
| 2086 | 483 | } |
| 5388 | 484 | |
| 485 | g_free(buf); | |
| 2086 | 486 | } |
| 487 | ||
| 5388 | 488 | /* 002 - MSG_CLIENT_LOGIN */ |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
489 | static void nap_login_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 490 | { |
| 5604 | 491 | GaimConnection *gc = data; |
| 5388 | 492 | struct nap_data *ndata = (struct nap_data *)gc->proto_data; |
| 493 | gchar *buf; | |
| 2086 | 494 | |
| 5605 | 495 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
2701
9827ddde2cd6
[gaim-migrate @ 2714]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
496 | close(source); |
|
9827ddde2cd6
[gaim-migrate @ 2714]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
497 | return; |
|
9827ddde2cd6
[gaim-migrate @ 2714]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
498 | } |
|
9827ddde2cd6
[gaim-migrate @ 2714]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2681
diff
changeset
|
499 | |
| 2086 | 500 | if (source < 0) { |
| 7981 | 501 | gaim_connection_error(gc, _("Unable to connect.")); |
| 2086 | 502 | return; |
| 503 | } | |
| 504 | ||
| 4452 | 505 | ndata->fd = source; |
| 2086 | 506 | |
| 5388 | 507 | /* Update the login progress status display */ |
| 5604 | 508 | buf = g_strdup_printf("Logging in: %s", gaim_account_get_username(gc->account)); |
|
7884
69c57863d40b
[gaim-migrate @ 8538]
Mark Doliner <markdoliner@pidgin.im>
parents:
7844
diff
changeset
|
509 | gaim_connection_update_progress(gc, buf, 1, NAPSTER_CONNECT_STEPS); |
| 5388 | 510 | g_free(buf); |
| 511 | ||
| 512 | /* Write our signon data */ | |
| 5604 | 513 | nap_write_packet(gc, 2, "%s %s 0 \"gaim %s\" 0", |
| 514 | gaim_account_get_username(gc->account), | |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10732
diff
changeset
|
515 | gaim_connection_get_password(gc), VERSION); |
| 5388 | 516 | |
| 2086 | 517 | /* And set up the input watcher */ |
| 5388 | 518 | gc->inpa = gaim_input_add(ndata->fd, GAIM_INPUT_READ, nap_callback, gc); |
| 2086 | 519 | } |
| 520 | ||
|
10401
51ae616ff395
[gaim-migrate @ 11638]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10200
diff
changeset
|
521 | static void nap_login(GaimAccount *account, GaimStatus *status) |
| 2086 | 522 | { |
| 5604 | 523 | GaimConnection *gc = gaim_account_get_connection(account); |
| 5388 | 524 | |
|
7884
69c57863d40b
[gaim-migrate @ 8538]
Mark Doliner <markdoliner@pidgin.im>
parents:
7844
diff
changeset
|
525 | gaim_connection_update_progress(gc, _("Connecting"), 0, NAPSTER_CONNECT_STEPS); |
| 5388 | 526 | |
| 4460 | 527 | gc->proto_data = g_new0(struct nap_data, 1); |
|
5681
514fbc5374dc
[gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents:
5679
diff
changeset
|
528 | if (gaim_proxy_connect(account, |
| 5604 | 529 | gaim_account_get_string(account, "server", NAP_SERVER), |
| 530 | gaim_account_get_int(account, "port", NAP_PORT), | |
| 4491 | 531 | nap_login_connect, gc) != 0) { |
| 7981 | 532 | gaim_connection_error(gc, _("Unable to connect.")); |
| 2086 | 533 | } |
| 534 | } | |
| 535 | ||
| 5604 | 536 | static void nap_close(GaimConnection *gc) |
| 2086 | 537 | { |
| 538 | struct nap_data *ndata = (struct nap_data *)gc->proto_data; | |
| 5388 | 539 | |
| 2086 | 540 | if (gc->inpa) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
541 | gaim_input_remove(gc->inpa); |
| 2086 | 542 | |
| 5388 | 543 | if (!ndata) |
| 544 | return; | |
| 545 | ||
|
10882
9eabf89e88ec
[gaim-migrate @ 12580]
Gary Kramlich <grim@reaperworld.com>
parents:
10869
diff
changeset
|
546 | close(ndata->fd); |
|
9eabf89e88ec
[gaim-migrate @ 12580]
Gary Kramlich <grim@reaperworld.com>
parents:
10869
diff
changeset
|
547 | |
| 5388 | 548 | g_free(ndata->email); |
| 549 | g_free(ndata); | |
| 2086 | 550 | } |
| 551 | ||
| 6695 | 552 | static const char* nap_list_icon(GaimAccount *a, GaimBuddy *b) |
| 2086 | 553 | { |
| 4687 | 554 | return "napster"; |
| 2086 | 555 | } |
| 556 | ||
| 9953 | 557 | static void nap_list_emblems(GaimBuddy *b, const char **se, const char **sw, |
| 558 | const char **nw, const char **ne) | |
| 4916 | 559 | { |
| 10723 | 560 | if(!GAIM_BUDDY_IS_ONLINE(b)) |
| 4916 | 561 | *se = "offline"; |
| 562 | } | |
| 563 | ||
|
10200
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
564 | static GList *nap_status_types(GaimAccount *account) |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
565 | { |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
566 | GList *types = NULL; |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
567 | GaimStatusType *type; |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
568 | |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
569 | g_return_val_if_fail(account != NULL, NULL); |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
570 | |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
571 | type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
572 | "offline", |
| 10723 | 573 | _("Offline"), TRUE, TRUE, FALSE); |
|
10200
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
574 | types = g_list_append(types, type); |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
575 | |
|
11522
c2a0d620f903
[gaim-migrate @ 13770]
Mark Doliner <markdoliner@pidgin.im>
parents:
11257
diff
changeset
|
576 | type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, |
|
11638
1821b40269a3
[gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11533
diff
changeset
|
577 | "available", |
| 10723 | 578 | _("Online"), TRUE, TRUE, FALSE); |
|
10200
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
579 | types = g_list_append(types, type); |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
580 | |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
581 | return types; |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
582 | } |
|
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
583 | |
| 5604 | 584 | static GList *nap_chat_info(GaimConnection *gc) |
| 2086 | 585 | { |
| 5388 | 586 | GList *m = NULL; |
| 587 | struct proto_chat_entry *pce; | |
| 588 | ||
| 589 | pce = g_new0(struct proto_chat_entry, 1); | |
|
7844
a22c6ba3aad9
[gaim-migrate @ 8498]
Mark Doliner <markdoliner@pidgin.im>
parents:
7118
diff
changeset
|
590 | pce->label = _("_Group:"); |
| 5388 | 591 | pce->identifier = "group"; |
| 592 | m = g_list_append(m, pce); | |
| 593 | ||
| 594 | return m; | |
| 2086 | 595 | } |
| 5388 | 596 | |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
597 | GHashTable *nap_chat_info_defaults(GaimConnection *gc, const char *chat_name) |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
598 | { |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
599 | GHashTable *defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
600 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
601 | defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
602 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
603 | if (chat_name != NULL) |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
604 | g_hash_table_insert(defaults, "group", g_strdup(chat_name)); |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
605 | |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
606 | return defaults; |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
607 | } |
|
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
608 | |
| 5388 | 609 | static GaimPlugin *my_protocol = NULL; |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
610 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
611 | static GaimPluginProtocolInfo prpl_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
612 | { |
| 5388 | 613 | OPT_PROTO_CHAT_TOPIC, |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
614 | NULL, /* user_splits */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
615 | NULL, /* protocol_options */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
616 | NO_BUDDY_ICONS, /* icon_spec */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
617 | nap_list_icon, /* list_icon */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
618 | nap_list_emblems, /* list_emblems */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
619 | NULL, /* status_text */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
620 | NULL, /* tooltip_text */ |
|
10200
33c21db946e7
[gaim-migrate @ 11317]
Mark Doliner <markdoliner@pidgin.im>
parents:
10123
diff
changeset
|
621 | nap_status_types, /* status_types */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
622 | NULL, /* blist_node_menu */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
623 | nap_chat_info, /* chat_info */ |
|
9754
3a17eee239b2
[gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents:
9713
diff
changeset
|
624 | nap_chat_info_defaults, /* chat_info_defaults */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
625 | nap_login, /* login */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
626 | nap_close, /* close */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
627 | nap_send_im, /* send_im */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
628 | NULL, /* set_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
629 | NULL, /* send_typing */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
630 | nap_get_info, /* get_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
631 | NULL, /* set_away */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
632 | NULL, /* set_idle */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
633 | NULL, /* change_passwd */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
634 | nap_add_buddy, /* add_buddy */ |
|
10869
86a3144baf08
[gaim-migrate @ 12556]
Mark Doliner <markdoliner@pidgin.im>
parents:
10816
diff
changeset
|
635 | NULL, /* add_buddies */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
636 | nap_remove_buddy, /* remove_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
637 | NULL, /* remove_buddies */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
638 | NULL, /* add_permit */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
639 | NULL, /* add_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
640 | NULL, /* rem_permit */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
641 | NULL, /* rem_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
642 | NULL, /* set_permit_deny */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
643 | nap_join_chat, /* join_chat */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
644 | NULL, /* reject chat invite */ |
|
9917
2fbb3c9fab2b
[gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents:
9846
diff
changeset
|
645 | nap_get_chat_name, /* get_chat_name */ |
|
9475
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
646 | NULL, /* chat_invite */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
647 | nap_chat_leave, /* chat_leave */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
648 | NULL, /* chat_whisper */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
649 | nap_chat_send, /* chat_send */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
650 | NULL, /* keepalive */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
651 | NULL, /* register_user */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
652 | NULL, /* get_cb_info */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
653 | NULL, /* get_cb_away */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
654 | NULL, /* alias_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
655 | NULL, /* group_buddy */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
656 | NULL, /* rename_group */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
657 | NULL, /* buddy_free */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
658 | NULL, /* convo_closed */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
659 | NULL, /* normalize */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
660 | NULL, /* set_buddy_icon */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
661 | NULL, /* remove_group */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
662 | NULL, /* get_cb_real_name */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
663 | NULL, /* set_chat_topic */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
664 | NULL, /* find_blist_chat */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
665 | NULL, /* roomlist_get_list */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
666 | NULL, /* roomlist_cancel */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
667 | NULL, /* roomlist_expand_category */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
668 | NULL, /* can_receive_file */ |
|
8c8d4ac992a6
[gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9473
diff
changeset
|
669 | NULL /* send_file */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
670 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
671 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
672 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
673 | { |
| 9943 | 674 | GAIM_PLUGIN_MAGIC, |
| 10649 | 675 | 0, |
| 9943 | 676 | GAIM_MINOR_VERSION, |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
677 | GAIM_PLUGIN_PROTOCOL, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
678 | NULL, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
679 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
680 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
681 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
682 | |
| 5388 | 683 | "prpl-napster", /**< id */ |
| 684 | "Napster", /**< name */ | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
685 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
686 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
687 | N_("NAPSTER Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
688 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
689 | N_("NAPSTER Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
690 | NULL, /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6321
diff
changeset
|
691 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
692 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
693 | NULL, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
694 | NULL, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
695 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
696 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
697 | NULL, /**< ui_info */ |
| 8993 | 698 | &prpl_info, /**< extra_info */ |
| 699 | NULL, | |
| 700 | NULL | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
701 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
702 | |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
703 | static void init_plugin(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
704 | { |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
705 | GaimAccountOption *option; |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
706 | |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
707 | option = gaim_account_option_string_new(_("Server"), "server", |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
708 | NAP_SERVER); |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
709 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
710 | option); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
711 | |
|
5638
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
712 | option = gaim_account_option_int_new(_("Port"), "port", 8888); |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
713 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, |
|
53e752c88ea1
[gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents:
5605
diff
changeset
|
714 | option); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
715 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
716 | my_protocol = plugin; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
717 | } |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5136
diff
changeset
|
718 | |
|
5920
963bfdefee02
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
719 | GAIM_INIT_PLUGIN(napster, init_plugin, info); |