Sat, 08 Dec 2001 09:48:52 +0000
[gaim-migrate @ 2869]
rewrote the html parser in gtkimhtml. yes, that's really all i did. the reason for the massive change is because i added a length argument, which then needed to be propogated down to everything that would ever receive anything that would get drawn to the window.
the new parser isn't any faster. that wasn't my goal. it's much more understandable now (hopefully, anyway).
| 2086 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 | * libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx> | |
| 6 | * | |
| 7 | * This program is free software; you can redistribute it and/or modify | |
| 8 | * it under the terms of the GNU General Public License as published by | |
| 9 | * the Free Software Foundation; either version 2 of the License, or | |
| 10 | * (at your option) any later version. | |
| 11 | * | |
| 12 | * This program is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | * GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 18 | * along with this program; if not, write to the Free Software | |
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 20 | * | |
| 21 | */ | |
| 22 | ||
| 23 | #ifdef HAVE_CONFIG_H | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
24 | #include <config.h> |
| 2086 | 25 | #endif |
| 26 | ||
| 27 | ||
| 28 | #include <netdb.h> | |
| 29 | #include <unistd.h> | |
| 30 | #include <errno.h> | |
| 31 | #include <netinet/in.h> | |
| 32 | #include <arpa/inet.h> | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
33 | #include <ctype.h> |
| 2086 | 34 | #include <string.h> |
| 35 | #include <stdlib.h> | |
| 36 | #include <stdio.h> | |
| 37 | #include <time.h> | |
| 38 | #include <sys/socket.h> | |
| 39 | #include <sys/stat.h> | |
| 40 | #include "multi.h" | |
| 41 | #include "prpl.h" | |
| 42 | #include "gaim.h" | |
| 43 | #include "aim.h" | |
| 44 | #include "proxy.h" | |
| 45 | ||
|
2315
ddf565f13b41
[gaim-migrate @ 2325]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2309
diff
changeset
|
46 | #include "pixmaps/ab.xpm" |
| 2086 | 47 | #include "pixmaps/admin_icon.xpm" |
| 48 | #include "pixmaps/aol_icon.xpm" | |
| 49 | #include "pixmaps/away_icon.xpm" | |
| 50 | #include "pixmaps/dt_icon.xpm" | |
| 51 | #include "pixmaps/free_icon.xpm" | |
| 52 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
53 | #include "pixmaps/gnomeicu-online.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
54 | #include "pixmaps/gnomeicu-offline.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
55 | #include "pixmaps/gnomeicu-away.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
56 | #include "pixmaps/gnomeicu-dnd.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
57 | #include "pixmaps/gnomeicu-na.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
58 | #include "pixmaps/gnomeicu-occ.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
59 | #include "pixmaps/gnomeicu-ffc.xpm" |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
60 | |
| 2086 | 61 | /* constants to identify proto_opts */ |
| 62 | #define USEROPT_AUTH 0 | |
| 63 | #define USEROPT_AUTHPORT 1 | |
| 64 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
65 | #define UC_AOL 0x02 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
66 | #define UC_ADMIN 0x04 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
67 | #define UC_UNCONFIRMED 0x08 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
68 | #define UC_NORMAL 0x10 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
69 | #define UC_AB 0x20 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
70 | |
| 2086 | 71 | #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" |
| 72 | ||
| 73 | static int gaim_caps = AIM_CAPS_CHAT | | |
| 74 | AIM_CAPS_BUDDYICON | | |
| 75 | AIM_CAPS_IMIMAGE; | |
|
2308
ea03e9136092
[gaim-migrate @ 2318]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2305
diff
changeset
|
76 | static fu8_t gaim_features[] = {0x01, 0x01, 0x01, 0x02}; |
| 2086 | 77 | |
| 78 | struct oscar_data { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
79 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
80 | aim_conn_t *conn; |
| 2086 | 81 | |
| 82 | guint cnpa; | |
| 83 | guint paspa; | |
| 84 | ||
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
85 | GSList *create_rooms; |
| 2086 | 86 | |
| 87 | gboolean conf; | |
| 88 | gboolean reqemail; | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
89 | gboolean setemail; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
90 | char *email; |
| 2086 | 91 | gboolean chpass; |
| 92 | char *oldp; | |
| 93 | char *newp; | |
| 94 | ||
| 95 | GSList *oscar_chats; | |
| 96 | GSList *direct_ims; | |
| 97 | GSList *hasicons; | |
| 98 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
99 | gboolean killme; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
100 | gboolean icq; |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
101 | GSList *evilhack; |
| 2086 | 102 | }; |
| 103 | ||
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
104 | struct create_room { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
105 | char *name; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
106 | int exchange; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
107 | }; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
108 | |
| 2086 | 109 | struct chat_connection { |
| 110 | char *name; | |
| 111 | char *show; /* AOL did something funny to us */ | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
112 | fu16_t exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
113 | fu16_t instance; |
| 2086 | 114 | int fd; /* this is redundant since we have the conn below */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
115 | aim_conn_t *conn; |
| 2086 | 116 | int inpa; |
| 117 | int id; | |
| 118 | struct gaim_connection *gc; /* i hate this. */ | |
| 119 | struct conversation *cnv; /* bah. */ | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
120 | int maxlen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
121 | int maxvis; |
| 2086 | 122 | }; |
| 123 | ||
| 124 | struct direct_im { | |
| 125 | struct gaim_connection *gc; | |
| 126 | char name[80]; | |
| 127 | int watcher; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
128 | aim_conn_t *conn; |
| 2086 | 129 | }; |
| 130 | ||
| 131 | struct ask_direct { | |
| 132 | struct gaim_connection *gc; | |
| 133 | char *sn; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
134 | char ip[64]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
135 | fu8_t cookie[8]; |
| 2086 | 136 | }; |
| 137 | ||
| 138 | struct icon_req { | |
| 139 | char *user; | |
| 140 | time_t timestamp; | |
| 2196 | 141 | unsigned long length; |
|
2191
a40e37f5bf27
[gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2172
diff
changeset
|
142 | unsigned long checksum; |
| 2086 | 143 | gboolean request; |
| 144 | }; | |
| 145 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
146 | static struct direct_im *find_direct_im(struct oscar_data *od, const char *who) { |
| 2086 | 147 | GSList *d = od->direct_ims; |
| 148 | char *n = g_strdup(normalize(who)); | |
| 149 | struct direct_im *m = NULL; | |
| 150 | ||
| 151 | while (d) { | |
| 152 | m = (struct direct_im *)d->data; | |
| 153 | if (!strcmp(n, normalize(m->name))) | |
| 154 | break; | |
| 155 | m = NULL; | |
| 156 | d = d->next; | |
| 157 | } | |
| 158 | ||
| 159 | g_free(n); | |
| 160 | return m; | |
| 161 | } | |
| 162 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
163 | static char *extract_name(const char *name) { |
| 2086 | 164 | char *tmp; |
| 165 | int i, j; | |
| 166 | char *x = strchr(name, '-'); | |
| 167 | if (!x) return NULL; | |
| 168 | x = strchr(++x, '-'); | |
| 169 | if (!x) return NULL; | |
| 170 | tmp = g_strdup(++x); | |
| 171 | ||
| 172 | for (i = 0, j = 0; x[i]; i++) { | |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
173 | char hex[3]; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
174 | if (x[i] != '%') { |
| 2086 | 175 | tmp[j++] = x[i]; |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
176 | continue; |
| 2086 | 177 | } |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
178 | strncpy(hex, x + ++i, 2); hex[2] = 0; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
179 | i++; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
180 | tmp[j++] = strtol(hex, NULL, 16); |
| 2086 | 181 | } |
| 182 | ||
| 183 | tmp[j] = 0; | |
| 184 | return tmp; | |
| 185 | } | |
| 186 | ||
| 187 | static struct chat_connection *find_oscar_chat(struct gaim_connection *gc, int id) { | |
| 188 | GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats; | |
| 189 | struct chat_connection *c = NULL; | |
| 190 | ||
| 191 | while (g) { | |
| 192 | c = (struct chat_connection *)g->data; | |
| 193 | if (c->id == id) | |
| 194 | break; | |
| 195 | g = g->next; | |
| 196 | c = NULL; | |
| 197 | } | |
| 198 | ||
| 199 | return c; | |
| 200 | } | |
| 201 | ||
| 202 | static struct chat_connection *find_oscar_chat_by_conn(struct gaim_connection *gc, | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
203 | aim_conn_t *conn) { |
| 2086 | 204 | GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats; |
| 205 | struct chat_connection *c = NULL; | |
| 206 | ||
| 207 | while (g) { | |
| 208 | c = (struct chat_connection *)g->data; | |
| 209 | if (c->conn == conn) | |
| 210 | break; | |
| 211 | g = g->next; | |
| 212 | c = NULL; | |
| 213 | } | |
| 214 | ||
| 215 | return c; | |
| 216 | } | |
| 217 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
218 | static int gaim_parse_auth_resp (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
219 | static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
220 | static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
221 | static int gaim_info_change (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
222 | static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
223 | static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
224 | static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
225 | static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
226 | static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
227 | static int gaim_parse_user_info (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
228 | static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
229 | static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
230 | static int gaim_chat_join (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
231 | static int gaim_chat_leave (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
232 | static int gaim_chat_info_update (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
233 | static int gaim_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
234 | static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
235 | static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
236 | static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
237 | static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
238 | static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
239 | static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
240 | static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
241 | static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
242 | static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
243 | static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
244 | static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
245 | static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
246 | static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
247 | static int gaim_icbm_param_info (aim_session_t *, aim_frame_t *, ...); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
248 | static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
249 | static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
250 | static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
251 | static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
252 | static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
253 | static int gaim_simpleinfo (aim_session_t *, aim_frame_t *, ...); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
254 | static int gaim_popup (aim_session_t *, aim_frame_t *, ...); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
255 | |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
256 | static int gaim_directim_initiate(aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
257 | static int gaim_directim_incoming(aim_session_t *, aim_frame_t *, ...); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
258 | static int gaim_directim_typing (aim_session_t *, aim_frame_t *, ...); |
| 2086 | 259 | |
| 260 | static char *msgerrreason[] = { | |
| 261 | "Invalid error", | |
| 262 | "Invalid SNAC", | |
| 263 | "Rate to host", | |
| 264 | "Rate to client", | |
| 265 | "Not logged in", | |
| 266 | "Service unavailable", | |
| 267 | "Service not defined", | |
| 268 | "Obsolete SNAC", | |
| 269 | "Not supported by host", | |
| 270 | "Not supported by client", | |
| 271 | "Refused by client", | |
| 272 | "Reply too big", | |
| 273 | "Responses lost", | |
| 274 | "Request denied", | |
| 275 | "Busted SNAC payload", | |
| 276 | "Insufficient rights", | |
| 277 | "In local permit/deny", | |
| 278 | "Too evil (sender)", | |
| 279 | "Too evil (receiver)", | |
| 280 | "User temporarily unavailable", | |
| 281 | "No match", | |
| 282 | "List overflow", | |
| 283 | "Request ambiguous", | |
| 284 | "Queue full", | |
| 285 | "Not while on AOL" | |
| 286 | }; | |
| 287 | static int msgerrreasonlen = 25; | |
| 288 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
289 | static void gaim_directim_disconnect(aim_session_t *sess, aim_conn_t *conn) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
290 | struct gaim_connection *gc = sess->aux_data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
291 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
292 | struct conversation *cnv; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
293 | struct direct_im *dim; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
294 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
295 | char buf[256]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
296 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
297 | sn = g_strdup(aim_directim_getsn(conn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
298 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
299 | debug_printf("%s disconnected Direct IM.\n", sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
300 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
301 | dim = find_direct_im(od, sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
302 | od->direct_ims = g_slist_remove(od->direct_ims, dim); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
303 | gaim_input_remove(dim->watcher); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
304 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
305 | g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
306 | if ((cnv = find_conversation(sn))) |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
307 | write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
308 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
309 | g_free(dim); /* I guess? I don't see it anywhere else... -- mid */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
310 | g_free(sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
311 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
312 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
313 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
314 | |
| 2086 | 315 | static void oscar_callback(gpointer data, gint source, |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
316 | GaimInputCondition condition) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
317 | aim_conn_t *conn = (aim_conn_t *)data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
318 | aim_session_t *sess = aim_conn_getsess(conn); |
| 2086 | 319 | struct gaim_connection *gc = sess ? sess->aux_data : NULL; |
| 320 | struct oscar_data *odata; | |
| 321 | ||
| 322 | if (!gc) { | |
| 323 | /* gc is null. we return, else we seg SIGSEG on next line. */ | |
| 324 | debug_printf("oscar callback for closed connection (1).\n"); | |
| 325 | return; | |
| 326 | } | |
| 327 | ||
| 328 | odata = (struct oscar_data *)gc->proto_data; | |
| 329 | ||
| 330 | if (!g_slist_find(connections, gc)) { | |
| 331 | /* oh boy. this is probably bad. i guess the only thing we | |
| 332 | * can really do is return? */ | |
| 333 | debug_printf("oscar callback for closed connection (2).\n"); | |
| 334 | return; | |
| 335 | } | |
| 336 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
337 | if (condition & GAIM_INPUT_READ) { |
| 2086 | 338 | if (conn->type == AIM_CONN_TYPE_RENDEZVOUS_OUT) { |
| 339 | debug_printf("got information on rendezvous\n"); | |
| 340 | if (aim_handlerendconnect(odata->sess, conn) < 0) { | |
| 341 | debug_printf(_("connection error (rend)\n")); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
342 | aim_conn_kill(odata->sess, &conn); |
| 2086 | 343 | } |
| 344 | } else { | |
| 345 | if (aim_get_command(odata->sess, conn) >= 0) { | |
| 346 | aim_rxdispatch(odata->sess); | |
| 347 | if (odata->killme) | |
| 348 | signoff(gc); | |
| 349 | } else { | |
| 350 | if ((conn->type == AIM_CONN_TYPE_BOS) || | |
| 351 | !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) { | |
| 352 | debug_printf(_("major connection error\n")); | |
| 353 | hide_login_progress(gc, _("Disconnected.")); | |
| 354 | signoff(gc); | |
| 355 | } else if (conn->type == AIM_CONN_TYPE_CHAT) { | |
| 356 | struct chat_connection *c = find_oscar_chat_by_conn(gc, conn); | |
| 357 | char buf[BUF_LONG]; | |
| 358 | debug_printf("disconnected from chat room %s\n", c->name); | |
| 359 | c->conn = NULL; | |
| 360 | if (c->inpa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
361 | gaim_input_remove(c->inpa); |
| 2086 | 362 | c->inpa = 0; |
| 363 | c->fd = -1; | |
| 364 | aim_conn_kill(odata->sess, &conn); | |
| 365 | sprintf(buf, _("You have been disconnected from chat room %s."), c->name); | |
| 366 | do_error_dialog(buf, _("Chat Error!")); | |
| 367 | } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { | |
| 368 | if (odata->cnpa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
369 | gaim_input_remove(odata->cnpa); |
| 2086 | 370 | odata->cnpa = 0; |
| 371 | debug_printf("removing chatnav input watcher\n"); | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
372 | while (odata->create_rooms) { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
373 | struct create_room *cr = odata->create_rooms->data; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
374 | g_free(cr->name); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
375 | odata->create_rooms = |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
376 | g_slist_remove(odata->create_rooms, cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
377 | g_free(cr); |
| 2086 | 378 | do_error_dialog(_("Chat is currently unavailable"), |
| 379 | _("Gaim - Chat")); | |
| 380 | } | |
| 381 | aim_conn_kill(odata->sess, &conn); | |
| 382 | } else if (conn->type == AIM_CONN_TYPE_AUTH) { | |
| 383 | if (odata->paspa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
384 | gaim_input_remove(odata->paspa); |
| 2086 | 385 | odata->paspa = 0; |
| 386 | debug_printf("removing authconn input watcher\n"); | |
| 387 | aim_conn_kill(odata->sess, &conn); | |
| 388 | } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
389 | if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
390 | gaim_directim_disconnect(odata->sess, conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
391 | else { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
392 | debug_printf("No handler for rendezvous disconnect (%d).\n", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
393 | source); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
394 | } |
| 2086 | 395 | aim_conn_kill(odata->sess, &conn); |
| 396 | } else { | |
| 397 | debug_printf("holy crap! generic connection error! %d\n", | |
| 398 | conn->type); | |
| 399 | aim_conn_kill(odata->sess, &conn); | |
| 400 | } | |
| 401 | } | |
| 402 | } | |
| 403 | } | |
| 404 | } | |
| 405 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
406 | static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) { |
| 2086 | 407 | char *s = g_strdup_vprintf(format, va); |
| 408 | char buf[256]; | |
| 409 | char *t; | |
| 410 | struct gaim_connection *gc = sess->aux_data; | |
| 411 | ||
| 412 | g_snprintf(buf, sizeof(buf), "%s %d: ", gc->username, level); | |
| 413 | t = g_strconcat(buf, s, NULL); | |
| 414 | debug_printf(t); | |
| 415 | if (t[strlen(t)-1] != '\n') | |
| 416 | debug_printf("\n"); | |
| 417 | g_free(t); | |
| 418 | g_free(s); | |
| 419 | } | |
| 420 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
421 | static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 422 | { |
| 423 | struct gaim_connection *gc = data; | |
| 424 | struct oscar_data *odata; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
425 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
426 | aim_conn_t *conn; |
| 2086 | 427 | |
| 428 | if (!g_slist_find(connections, gc)) { | |
| 429 | close(source); | |
| 430 | return; | |
| 431 | } | |
| 432 | ||
| 433 | odata = gc->proto_data; | |
| 434 | sess = odata->sess; | |
| 435 | conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH); | |
| 436 | ||
| 437 | if (source < 0) { | |
| 438 | hide_login_progress(gc, _("Couldn't connect to host")); | |
| 439 | signoff(gc); | |
| 440 | return; | |
| 441 | } | |
| 442 | ||
| 443 | aim_conn_completeconnect(sess, conn); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
444 | gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, |
| 2086 | 445 | oscar_callback, conn); |
| 446 | debug_printf(_("Password sent, waiting for response\n")); | |
| 447 | } | |
| 448 | ||
| 449 | static void oscar_login(struct aim_user *user) { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
450 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
451 | aim_conn_t *conn; |
| 2086 | 452 | char buf[256]; |
| 453 | struct gaim_connection *gc = new_gaim_conn(user); | |
| 454 | struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1); | |
| 455 | ||
|
2589
9f90783f8bdd
[gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2507
diff
changeset
|
456 | if (isdigit(*user->username)) { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
457 | odata->icq = TRUE; |
|
2589
9f90783f8bdd
[gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2507
diff
changeset
|
458 | /* this is odd but it's necessary for a proper do_import and do_export */ |
|
9f90783f8bdd
[gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2507
diff
changeset
|
459 | gc->protocol = PROTO_ICQ; |
|
2833
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
460 | gc->password[9] = 0; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
461 | } else { |
|
2590
fecf2ce04325
[gaim-migrate @ 2603]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2589
diff
changeset
|
462 | gc->protocol = PROTO_TOC; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
463 | gc->flags |= OPT_CONN_HTML; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
464 | } |
| 2086 | 465 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
466 | sess = g_new0(aim_session_t, 1); |
| 2086 | 467 | |
| 468 | aim_session_init(sess, AIM_SESS_FLAGS_NONBLOCKCONNECT, 0); | |
| 469 | aim_setdebuggingcb(sess, oscar_debug); | |
| 470 | ||
| 471 | /* we need an immediate queue because we don't use a while-loop to | |
| 472 | * see if things need to be sent. */ | |
| 473 | aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL); | |
| 474 | odata->sess = sess; | |
| 475 | sess->aux_data = gc; | |
| 476 | ||
| 477 | conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); | |
| 478 | if (conn == NULL) { | |
| 479 | debug_printf(_("internal connection error\n")); | |
| 480 | hide_login_progress(gc, _("Unable to login to AIM")); | |
| 481 | signoff(gc); | |
| 482 | return; | |
| 483 | } | |
| 484 | ||
| 485 | g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username); | |
| 486 | set_login_progress(gc, 2, buf); | |
| 487 | ||
| 488 | aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0); | |
| 489 | aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0); | |
| 490 | ||
| 491 | conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 492 | conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ? | |
| 493 | user->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER, | |
| 494 | user->proto_opt[USEROPT_AUTHPORT][0] ? | |
| 495 | atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT, | |
| 496 | oscar_login_connect, gc); | |
| 497 | if (conn->fd < 0) { | |
| 498 | hide_login_progress(gc, _("Couldn't connect to host")); | |
| 499 | signoff(gc); | |
| 500 | return; | |
| 501 | } | |
| 502 | aim_request_login(sess, conn, gc->username); | |
| 503 | } | |
| 504 | ||
| 505 | static void oscar_close(struct gaim_connection *gc) { | |
| 506 | struct oscar_data *odata = (struct oscar_data *)gc->proto_data; | |
| 507 | ||
| 508 | while (odata->oscar_chats) { | |
| 509 | struct chat_connection *n = odata->oscar_chats->data; | |
| 510 | if (n->inpa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
511 | gaim_input_remove(n->inpa); |
| 2086 | 512 | g_free(n->name); |
| 513 | g_free(n->show); | |
| 514 | odata->oscar_chats = g_slist_remove(odata->oscar_chats, n); | |
| 515 | g_free(n); | |
| 516 | } | |
| 517 | while (odata->direct_ims) { | |
| 518 | struct direct_im *n = odata->direct_ims->data; | |
| 519 | if (n->watcher > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
520 | gaim_input_remove(n->watcher); |
| 2086 | 521 | odata->direct_ims = g_slist_remove(odata->direct_ims, n); |
| 522 | g_free(n); | |
| 523 | } | |
| 524 | while (odata->hasicons) { | |
| 525 | struct icon_req *n = odata->hasicons->data; | |
| 526 | g_free(n->user); | |
| 527 | odata->hasicons = g_slist_remove(odata->hasicons, n); | |
| 528 | g_free(n); | |
| 529 | } | |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
530 | while (odata->evilhack) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
531 | g_free(odata->evilhack->data); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
532 | odata->evilhack = g_slist_remove(odata->evilhack, odata->evilhack->data); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
533 | } |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
534 | while (odata->create_rooms) { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
535 | struct create_room *cr = odata->create_rooms->data; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
536 | g_free(cr->name); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
537 | odata->create_rooms = g_slist_remove(odata->create_rooms, cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
538 | g_free(cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
539 | } |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
540 | if (odata->email) |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
541 | g_free(odata->email); |
|
2754
1deb656ee517
[gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2742
diff
changeset
|
542 | if (odata->newp) |
|
1deb656ee517
[gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2742
diff
changeset
|
543 | g_free(odata->newp); |
|
1deb656ee517
[gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2742
diff
changeset
|
544 | if (odata->oldp) |
|
1deb656ee517
[gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2742
diff
changeset
|
545 | g_free(odata->oldp); |
| 2086 | 546 | if (gc->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
547 | gaim_input_remove(gc->inpa); |
| 2086 | 548 | if (odata->cnpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
549 | gaim_input_remove(odata->cnpa); |
| 2086 | 550 | if (odata->paspa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
551 | gaim_input_remove(odata->paspa); |
| 2086 | 552 | aim_session_kill(odata->sess); |
| 553 | g_free(odata->sess); | |
| 554 | odata->sess = NULL; | |
| 555 | g_free(gc->proto_data); | |
| 556 | gc->proto_data = NULL; | |
| 557 | debug_printf(_("Signed off.\n")); | |
| 558 | } | |
| 559 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
560 | static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 2086 | 561 | struct gaim_connection *gc = data; |
| 562 | struct oscar_data *odata; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
563 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
564 | aim_conn_t *bosconn; |
| 2086 | 565 | |
| 566 | if (!g_slist_find(connections, gc)) { | |
| 567 | close(source); | |
| 568 | return; | |
| 569 | } | |
| 570 | ||
| 571 | odata = gc->proto_data; | |
| 572 | sess = odata->sess; | |
| 573 | bosconn = odata->conn; | |
| 574 | ||
| 575 | if (source < 0) { | |
| 576 | hide_login_progress(gc, _("Could Not Connect")); | |
| 577 | signoff(gc); | |
| 578 | return; | |
| 579 | } | |
| 580 | ||
| 581 | aim_conn_completeconnect(sess, bosconn); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
582 | gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, |
| 2086 | 583 | oscar_callback, bosconn); |
| 584 | set_login_progress(gc, 4, _("Connection established, cookie sent")); | |
| 585 | } | |
| 586 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
587 | static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 588 | va_list ap; |
| 2704 | 589 | struct aim_authresp_info *info; |
| 2086 | 590 | int i; char *host; int port; |
| 591 | struct aim_user *user; | |
| 2704 | 592 | aim_conn_t *bosconn; |
| 2086 | 593 | |
| 594 | struct gaim_connection *gc = sess->aux_data; | |
| 595 | struct oscar_data *od = gc->proto_data; | |
| 596 | user = gc->user; | |
| 597 | port = user->proto_opt[USEROPT_AUTHPORT][0] ? | |
| 598 | atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT, | |
| 599 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
600 | va_start(ap, fr); |
| 2704 | 601 | info = va_arg(ap, struct aim_authresp_info *); |
| 2086 | 602 | va_end(ap); |
| 603 | ||
| 2704 | 604 | debug_printf("inside auth_resp (Screen name: %s)\n", info->sn); |
| 605 | ||
| 606 | if (info->errorcode || !info->bosip || !info->cookie) { | |
| 607 | switch (info->errorcode) { | |
| 2086 | 608 | case 0x05: |
| 609 | /* Incorrect nick/password */ | |
| 610 | hide_login_progress(gc, _("Incorrect nickname or password.")); | |
| 611 | plugin_event(event_error, (void *)980, 0, 0, 0); | |
| 612 | break; | |
| 613 | case 0x11: | |
| 614 | /* Suspended account */ | |
| 615 | hide_login_progress(gc, _("Your account is currently suspended.")); | |
| 616 | break; | |
| 617 | case 0x18: | |
| 618 | /* connecting too frequently */ | |
| 619 | hide_login_progress(gc, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer.")); | |
| 620 | plugin_event(event_error, (void *)983, 0, 0, 0); | |
| 621 | break; | |
| 622 | case 0x1c: | |
| 623 | /* client too old */ | |
| 624 | hide_login_progress(gc, _("The client version you are using is too old. Please upgrade at " WEBSITE)); | |
| 625 | plugin_event(event_error, (void *)989, 0, 0, 0); | |
| 626 | break; | |
| 627 | default: | |
| 628 | hide_login_progress(gc, _("Authentication Failed")); | |
| 629 | break; | |
| 630 | } | |
| 2704 | 631 | debug_printf("Login Error Code 0x%04x\n", info->errorcode); |
| 632 | debug_printf("Error URL: %s\n", info->errorurl); | |
| 2086 | 633 | od->killme = TRUE; |
| 634 | return 1; | |
| 635 | } | |
| 636 | ||
| 637 | ||
| 2704 | 638 | debug_printf("Reg status: %d\n", info->regstatus); |
| 639 | if (info->email) { | |
| 640 | debug_printf("Email: %s\n", info->email); | |
| 2086 | 641 | } else { |
| 642 | debug_printf("Email is NULL\n"); | |
| 643 | } | |
| 2704 | 644 | debug_printf("BOSIP: %s\n", info->bosip); |
| 2086 | 645 | debug_printf("Closing auth connection...\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
646 | aim_conn_kill(sess, &fr->conn); |
| 2086 | 647 | |
| 648 | bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL); | |
| 649 | if (bosconn == NULL) { | |
| 650 | hide_login_progress(gc, _("Internal Error")); | |
| 651 | od->killme = TRUE; | |
| 652 | return 0; | |
| 653 | } | |
| 654 | ||
| 2675 | 655 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_bos, 0); |
| 2086 | 656 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0); |
| 657 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ACK, AIM_CB_ACK_ACK, NULL, 0); | |
| 658 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_REDIRECT, gaim_handle_redirect, 0); | |
| 659 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_RIGHTSINFO, gaim_parse_buddyrights, 0); | |
| 660 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING, gaim_parse_oncoming, 0); | |
| 661 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING, gaim_parse_offgoing, 0); | |
| 662 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_INCOMING, gaim_parse_incoming_im, 0); | |
| 663 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_ERROR, gaim_parse_locerr, 0); | |
| 664 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MISSEDCALL, gaim_parse_misses, 0); | |
| 665 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_RATECHANGE, gaim_parse_ratechange, 0); | |
| 666 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_EVIL, gaim_parse_evilnotify, 0); | |
| 667 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, AIM_CB_LOK_ERROR, gaim_parse_searcherror, 0); | |
| 668 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, 0x0003, gaim_parse_searchreply, 0); | |
| 669 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ERROR, gaim_parse_msgerr, 0); | |
| 670 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_user_info, 0); | |
| 671 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ACK, gaim_parse_msgack, 0); | |
| 672 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_MOTD, gaim_parse_motd, 0); | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
673 | aim_conn_addhandler(sess, bosconn, 0x0004, 0x0005, gaim_icbm_param_info, 0); |
| 2086 | 674 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0); |
| 675 | aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0); | |
| 676 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0); | |
| 677 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0); | |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
678 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
679 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSG, gaim_offlinemsg, 0); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
680 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE, gaim_offlinemsgdone, 0); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
681 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
682 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_SIMPLEINFO, gaim_simpleinfo, 0); |
| 2086 | 683 | |
| 684 | ((struct oscar_data *)gc->proto_data)->conn = bosconn; | |
| 2704 | 685 | for (i = 0; i < (int)strlen(info->bosip); i++) { |
| 686 | if (info->bosip[i] == ':') { | |
| 687 | port = atoi(&(info->bosip[i+1])); | |
| 2086 | 688 | break; |
| 689 | } | |
| 690 | } | |
| 2704 | 691 | host = g_strndup(info->bosip, i); |
| 2086 | 692 | bosconn->status |= AIM_CONN_STATUS_INPROGRESS; |
| 693 | bosconn->fd = proxy_connect(host, port, oscar_bos_connect, gc); | |
| 694 | g_free(host); | |
| 695 | if (bosconn->fd < 0) { | |
| 696 | hide_login_progress(gc, _("Could Not Connect")); | |
| 697 | od->killme = TRUE; | |
| 698 | return 0; | |
| 699 | } | |
| 2704 | 700 | aim_sendcookie(sess, bosconn, info->cookie); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
701 | gaim_input_remove(gc->inpa); |
| 2704 | 702 | |
| 2086 | 703 | return 1; |
| 704 | } | |
| 705 | ||
| 706 | struct pieceofcrap { | |
| 707 | struct gaim_connection *gc; | |
| 708 | unsigned long offset; | |
| 709 | unsigned long len; | |
| 710 | char *modname; | |
| 711 | int fd; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
712 | aim_conn_t *conn; |
| 2086 | 713 | unsigned int inpa; |
| 714 | }; | |
| 715 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
716 | static void damn_you(gpointer data, gint source, GaimInputCondition c) |
| 2086 | 717 | { |
| 718 | struct pieceofcrap *pos = data; | |
| 719 | struct oscar_data *od = pos->gc->proto_data; | |
| 720 | char in = '\0'; | |
| 721 | int x = 0; | |
| 722 | unsigned char m[17]; | |
| 723 | ||
| 724 | while (read(pos->fd, &in, 1) == 1) { | |
| 725 | if (in == '\n') | |
| 726 | x++; | |
| 727 | else if (in != '\r') | |
| 728 | x = 0; | |
| 729 | if (x == 2) | |
| 730 | break; | |
| 731 | in = '\0'; | |
| 732 | } | |
| 733 | if (in != '\n') { | |
| 734 | do_error_dialog("Gaim was unable to get a valid hash for logging into AIM." | |
| 735 | " You may be disconnected shortly.", "Login Error"); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
736 | gaim_input_remove(pos->inpa); |
| 2086 | 737 | close(pos->fd); |
| 738 | g_free(pos); | |
| 739 | return; | |
| 740 | } | |
| 741 | read(pos->fd, m, 16); | |
| 742 | m[16] = '\0'; | |
| 743 | debug_printf("Sending hash: "); | |
| 744 | for (x = 0; x < 16; x++) | |
| 745 | debug_printf("%02x ", (unsigned char)m[x]); | |
| 746 | debug_printf("\n"); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
747 | gaim_input_remove(pos->inpa); |
| 2086 | 748 | close(pos->fd); |
| 749 | aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH); | |
| 750 | g_free(pos); | |
| 751 | } | |
| 752 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
753 | static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) { |
| 2086 | 754 | struct pieceofcrap *pos = data; |
| 755 | char buf[BUF_LONG]; | |
| 756 | ||
| 757 | if (source < 0) { | |
| 758 | do_error_dialog("Gaim was unable to get a valid hash for logging into AIM." | |
| 759 | " You may be disconnected shortly.", "Login Error"); | |
| 760 | if (pos->modname) | |
| 761 | g_free(pos->modname); | |
| 762 | g_free(pos); | |
| 763 | return; | |
| 764 | } | |
| 765 | ||
| 766 | g_snprintf(buf, sizeof(buf), "GET " AIMHASHDATA | |
| 767 | "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n", | |
| 768 | pos->offset, pos->len, pos->modname ? pos->modname : ""); | |
| 769 | write(pos->fd, buf, strlen(buf)); | |
| 770 | if (pos->modname) | |
| 771 | g_free(pos->modname); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
772 | pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos); |
| 2086 | 773 | return; |
| 774 | } | |
| 775 | ||
| 776 | /* size of icbmui.ocm, the largest module in AIM 3.5 */ | |
| 777 | #define AIM_MAX_FILE_SIZE 98304 | |
| 778 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
779 | int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 780 | va_list ap; |
| 781 | struct pieceofcrap *pos; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
782 | fu32_t offset, len; |
| 2086 | 783 | char *modname; |
| 784 | int fd; | |
| 785 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
786 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
787 | offset = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
788 | len = (fu32_t)va_arg(ap, unsigned long); |
| 2086 | 789 | modname = va_arg(ap, char *); |
| 790 | va_end(ap); | |
| 791 | ||
| 792 | debug_printf("offset: %d, len: %d, file: %s\n", offset, len, modname ? modname : "aim.exe"); | |
| 793 | if (len == 0) { | |
| 794 | debug_printf("len is 0, hashing NULL\n"); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
795 | aim_sendmemblock(sess, fr->conn, offset, len, NULL, |
| 2086 | 796 | AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 797 | return 1; | |
| 798 | } | |
| 799 | /* uncomment this when you're convinced it's right. remember, it's been wrong before. | |
| 800 | if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) { | |
| 801 | char *buf; | |
| 802 | int i = 8; | |
| 803 | if (modname) | |
| 804 | i += strlen(modname); | |
| 805 | buf = g_malloc(i); | |
| 806 | i = 0; | |
| 807 | if (modname) { | |
| 808 | memcpy(buf, modname, strlen(modname)); | |
| 809 | i += strlen(modname); | |
| 810 | } | |
| 811 | buf[i++] = offset & 0xff; | |
| 812 | buf[i++] = (offset >> 8) & 0xff; | |
| 813 | buf[i++] = (offset >> 16) & 0xff; | |
| 814 | buf[i++] = (offset >> 24) & 0xff; | |
| 815 | buf[i++] = len & 0xff; | |
| 816 | buf[i++] = (len >> 8) & 0xff; | |
| 817 | buf[i++] = (len >> 16) & 0xff; | |
| 818 | buf[i++] = (len >> 24) & 0xff; | |
| 819 | debug_printf("len + offset is invalid, hashing request\n"); | |
| 820 | aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST); | |
| 821 | g_free(buf); | |
| 822 | return 1; | |
| 823 | } | |
| 824 | */ | |
| 825 | ||
| 826 | pos = g_new0(struct pieceofcrap, 1); | |
| 827 | pos->gc = sess->aux_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
828 | pos->conn = fr->conn; |
| 2086 | 829 | |
| 830 | pos->offset = offset; | |
| 831 | pos->len = len; | |
| 832 | pos->modname = modname ? g_strdup(modname) : NULL; | |
| 833 | ||
| 834 | fd = proxy_connect("gaim.sourceforge.net", 80, straight_to_hell, pos); | |
| 835 | if (fd < 0) { | |
| 836 | if (pos->modname) | |
| 837 | g_free(pos->modname); | |
| 838 | g_free(pos); | |
| 839 | do_error_dialog("Gaim was unable to get a valid hash for logging into AIM." | |
| 840 | " You may be disconnected shortly.", "Login Error"); | |
| 841 | } | |
| 842 | pos->fd = fd; | |
| 843 | ||
| 844 | return 1; | |
| 845 | } | |
| 846 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
847 | static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 848 | #if 0 |
| 849 | struct client_info_s info = {"gaim", 4, 1, 2010, "us", "en", 0x0004, 0x0000, 0x04b}; | |
| 850 | #else | |
| 851 | struct client_info_s info = AIM_CLIENTINFO_KNOWNGOOD; | |
| 852 | #endif | |
| 853 | char *key; | |
| 854 | va_list ap; | |
| 855 | struct gaim_connection *gc = sess->aux_data; | |
| 856 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
857 | va_start(ap, fr); |
| 2086 | 858 | key = va_arg(ap, char *); |
| 859 | va_end(ap); | |
| 860 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
861 | aim_send_login(sess, fr->conn, gc->username, gc->password, &info, key); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
862 | |
| 2086 | 863 | return 1; |
| 864 | } | |
| 865 | ||
| 2675 | 866 | static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2647 | 867 | struct gaim_connection *gc = sess->aux_data; |
| 868 | struct chat_connection *chatcon; | |
| 869 | static int id = 1; | |
| 870 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
871 | aim_conn_addhandler(sess, fr->conn, 0x000e, 0x0001, gaim_parse_genericerr, 0); |
| 2675 | 872 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_chat_join, 0); |
| 873 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_chat_leave, 0); | |
| 874 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_chat_info_update, 0); | |
| 875 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_chat_incoming_msg, 0); | |
| 876 | ||
| 2672 | 877 | aim_clientready(sess, fr->conn); |
| 2675 | 878 | |
| 2647 | 879 | chatcon = find_oscar_chat_by_conn(gc, fr->conn); |
| 880 | chatcon->id = id; | |
| 881 | chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show); | |
| 882 | ||
| 883 | return 1; | |
| 884 | } | |
| 885 | ||
| 2675 | 886 | static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 887 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
888 | aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0); |
| 2647 | 889 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0); |
| 2675 | 890 | |
| 891 | aim_clientready(sess, fr->conn); | |
| 892 | ||
| 893 | aim_chatnav_reqrights(sess, fr->conn); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
894 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
895 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
896 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
897 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
898 | static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 2086 | 899 | struct gaim_connection *gc = data; |
| 900 | struct oscar_data *odata; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
901 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
902 | aim_conn_t *tstconn; |
| 2086 | 903 | |
| 904 | if (!g_slist_find(connections, gc)) { | |
| 905 | close(source); | |
| 906 | return; | |
| 907 | } | |
| 908 | ||
| 909 | odata = gc->proto_data; | |
| 910 | sess = odata->sess; | |
| 911 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV); | |
| 912 | ||
| 913 | if (source < 0) { | |
| 914 | aim_conn_kill(sess, &tstconn); | |
| 915 | debug_printf("unable to connect to chatnav server\n"); | |
| 916 | return; | |
| 917 | } | |
| 918 | ||
| 919 | aim_conn_completeconnect(sess, tstconn); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
920 | odata->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
921 | oscar_callback, tstconn); |
| 2086 | 922 | debug_printf("chatnav: connected\n"); |
| 923 | } | |
| 924 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
925 | static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 926 | { |
| 927 | struct gaim_connection *gc = data; | |
| 928 | struct oscar_data *odata; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
929 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
930 | aim_conn_t *tstconn; |
| 2086 | 931 | |
| 932 | if (!g_slist_find(connections, gc)) { | |
| 933 | close(source); | |
| 934 | return; | |
| 935 | } | |
| 936 | ||
| 937 | odata = gc->proto_data; | |
| 938 | sess = odata->sess; | |
| 939 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH); | |
| 940 | ||
| 941 | if (source < 0) { | |
| 942 | aim_conn_kill(sess, &tstconn); | |
| 943 | debug_printf("unable to connect to authorizer\n"); | |
| 944 | return; | |
| 945 | } | |
| 946 | ||
| 947 | aim_conn_completeconnect(sess, tstconn); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
948 | odata->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, |
| 2086 | 949 | oscar_callback, tstconn); |
| 950 | debug_printf("chatnav: connected\n"); | |
| 951 | } | |
| 952 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
953 | static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 954 | { |
| 955 | struct chat_connection *ccon = data; | |
| 956 | struct gaim_connection *gc = ccon->gc; | |
| 957 | struct oscar_data *odata; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
958 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
959 | aim_conn_t *tstconn; |
| 2086 | 960 | |
| 961 | if (!g_slist_find(connections, gc)) { | |
| 962 | close(source); | |
| 963 | g_free(ccon->show); | |
| 964 | g_free(ccon->name); | |
| 965 | g_free(ccon); | |
| 966 | return; | |
| 967 | } | |
| 968 | ||
| 969 | odata = gc->proto_data; | |
| 970 | sess = odata->sess; | |
| 971 | tstconn = ccon->conn; | |
| 972 | ||
| 973 | if (source < 0) { | |
| 974 | aim_conn_kill(sess, &tstconn); | |
| 975 | g_free(ccon->show); | |
| 976 | g_free(ccon->name); | |
| 977 | g_free(ccon); | |
| 978 | return; | |
| 979 | } | |
| 980 | ||
| 981 | aim_conn_completeconnect(sess, ccon->conn); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
982 | ccon->inpa = gaim_input_add(tstconn->fd, |
|
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
983 | GAIM_INPUT_READ, |
| 2086 | 984 | oscar_callback, tstconn); |
| 985 | odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon); | |
| 986 | } | |
| 987 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
988 | /* Hrmph. I don't know how to make this look better. --mid */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
989 | static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 990 | va_list ap; |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
991 | struct aim_redirect_data *redir; |
| 2086 | 992 | struct gaim_connection *gc = sess->aux_data; |
| 993 | struct aim_user *user = gc->user; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
994 | aim_conn_t *tstconn; |
| 2086 | 995 | int i; |
| 996 | char *host; | |
| 997 | int port; | |
| 998 | ||
| 999 | port = user->proto_opt[USEROPT_AUTHPORT][0] ? | |
| 1000 | atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT, | |
| 1001 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1002 | va_start(ap, fr); |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1003 | redir = va_arg(ap, struct aim_redirect_data *); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1004 | va_end(ap); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1005 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1006 | for (i = 0; i < (int)strlen(redir->ip); i++) { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1007 | if (redir->ip[i] == ':') { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1008 | port = atoi(&(redir->ip[i+1])); |
| 2086 | 1009 | break; |
| 1010 | } | |
| 1011 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1012 | host = g_strndup(redir->ip, i); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1013 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1014 | switch(redir->group) { |
| 2086 | 1015 | case 0x7: /* Authorizer */ |
| 1016 | debug_printf("Reconnecting with authorizor...\n"); | |
| 1017 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); | |
| 1018 | if (tstconn == NULL) { | |
| 1019 | debug_printf("unable to reconnect with authorizer\n"); | |
| 1020 | g_free(host); | |
| 1021 | return 1; | |
| 1022 | } | |
| 2675 | 1023 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0); |
| 2086 | 1024 | aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0); |
| 1025 | aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0); | |
| 1026 | aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0); | |
| 1027 | ||
| 1028 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 1029 | tstconn->fd = proxy_connect(host, port, oscar_auth_connect, gc); | |
| 1030 | if (tstconn->fd < 0) { | |
| 1031 | aim_conn_kill(sess, &tstconn); | |
| 1032 | debug_printf("unable to reconnect with authorizer\n"); | |
| 1033 | g_free(host); | |
| 1034 | return 1; | |
| 1035 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1036 | aim_sendcookie(sess, tstconn, redir->cookie); |
| 2086 | 1037 | break; |
| 1038 | case 0xd: /* ChatNav */ | |
| 1039 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL); | |
| 1040 | if (tstconn == NULL) { | |
| 1041 | debug_printf("unable to connect to chatnav server\n"); | |
| 1042 | g_free(host); | |
| 1043 | return 1; | |
| 1044 | } | |
| 2675 | 1045 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0); |
| 2086 | 1046 | |
| 1047 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 1048 | tstconn->fd = proxy_connect(host, port, oscar_chatnav_connect, gc); | |
| 1049 | if (tstconn->fd < 0) { | |
| 1050 | aim_conn_kill(sess, &tstconn); | |
| 1051 | debug_printf("unable to connect to chatnav server\n"); | |
| 1052 | g_free(host); | |
| 1053 | return 1; | |
| 1054 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1055 | aim_sendcookie(sess, tstconn, redir->cookie); |
| 2086 | 1056 | break; |
| 1057 | case 0xe: /* Chat */ | |
| 1058 | { | |
| 1059 | struct chat_connection *ccon; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1060 | |
| 2086 | 1061 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL); |
| 1062 | if (tstconn == NULL) { | |
| 1063 | debug_printf("unable to connect to chat server\n"); | |
| 1064 | g_free(host); | |
| 1065 | return 1; | |
| 1066 | } | |
| 1067 | ||
| 2675 | 1068 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0); |
| 1069 | ||
| 2086 | 1070 | ccon = g_new0(struct chat_connection, 1); |
| 1071 | ccon->conn = tstconn; | |
| 1072 | ccon->gc = gc; | |
| 1073 | ccon->fd = -1; | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1074 | ccon->name = g_strdup(redir->chat.room); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1075 | ccon->exchange = redir->chat.exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1076 | ccon->instance = redir->chat.instance; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1077 | ccon->show = extract_name(redir->chat.room); |
| 2086 | 1078 | |
| 1079 | ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 1080 | ccon->conn->fd = proxy_connect(host, port, oscar_chat_connect, ccon); | |
| 1081 | if (ccon->conn->fd < 0) { | |
| 1082 | aim_conn_kill(sess, &tstconn); | |
| 1083 | debug_printf("unable to connect to chat server\n"); | |
| 1084 | g_free(host); | |
| 1085 | g_free(ccon->show); | |
| 1086 | g_free(ccon->name); | |
| 1087 | g_free(ccon); | |
| 1088 | return 1; | |
| 1089 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1090 | aim_sendcookie(sess, tstconn, redir->cookie); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1091 | debug_printf("Connected to chat room %s exchange %d\n", ccon->name, ccon->exchange); |
| 2086 | 1092 | } |
| 1093 | break; | |
| 1094 | default: /* huh? */ | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1095 | debug_printf("got redirect for unknown service 0x%04x\n", redir->group); |
| 2086 | 1096 | break; |
| 1097 | } | |
| 1098 | ||
| 1099 | g_free(host); | |
| 1100 | return 1; | |
| 1101 | } | |
| 1102 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1103 | static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1104 | aim_userinfo_t *info; |
| 2086 | 1105 | time_t time_idle; |
| 1106 | int type = 0; | |
| 1107 | struct gaim_connection *gc = sess->aux_data; | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1108 | struct oscar_data *od = gc->proto_data; |
|
2305
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1109 | char *tmp; |
|
2713
c22d13046898
[gaim-migrate @ 2726]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
1110 | int caps; |
| 2086 | 1111 | |
| 1112 | va_list ap; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1113 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1114 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1115 | va_end(ap); |
| 1116 | ||
|
2713
c22d13046898
[gaim-migrate @ 2726]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
1117 | caps = info->capabilities; |
|
c22d13046898
[gaim-migrate @ 2726]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
1118 | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1119 | if (!od->icq) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1120 | if (info->flags & AIM_FLAG_ACTIVEBUDDY) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1121 | type |= UC_AB; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1122 | if (info->flags & AIM_FLAG_UNCONFIRMED) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1123 | type |= UC_UNCONFIRMED; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1124 | if (info->flags & AIM_FLAG_ADMINISTRATOR) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1125 | type |= UC_ADMIN; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1126 | if (info->flags & AIM_FLAG_AOL) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1127 | type |= UC_AOL; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1128 | if (info->flags & AIM_FLAG_FREE) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1129 | type |= UC_NORMAL; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1130 | if (info->flags & AIM_FLAG_AWAY) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1131 | type |= UC_UNAVAILABLE; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1132 | } else { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1133 | if (info->icqinfo.status) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1134 | type = (info->icqinfo.status << 6); |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1135 | if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT)) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1136 | type |= UC_UNAVAILABLE; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1137 | } |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2717
diff
changeset
|
1138 | if (caps & AIM_CAPS_ICQ) |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2717
diff
changeset
|
1139 | caps ^= AIM_CAPS_ICQ; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1140 | debug_printf("icq status: %d\n", info->icqinfo.status); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1141 | } |
| 2086 | 1142 | |
| 1143 | if (info->idletime) { | |
| 1144 | time(&time_idle); | |
| 1145 | time_idle -= info->idletime*60; | |
| 1146 | } else | |
| 1147 | time_idle = 0; | |
| 1148 | ||
|
2305
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1149 | tmp = g_strdup(normalize(gc->username)); |
|
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1150 | if (!strcmp(tmp, normalize(info->sn))) |
|
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1151 | g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", info->sn); |
|
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1152 | g_free(tmp); |
|
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1153 | |
|
2698
29d3c1727fd1
[gaim-migrate @ 2711]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2689
diff
changeset
|
1154 | serv_got_update(gc, info->sn, 1, info->warnlevel/10, time(NULL) - info->sessionlen, |
|
2713
c22d13046898
[gaim-migrate @ 2726]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
1155 | time_idle, type, caps); |
| 2086 | 1156 | |
| 1157 | return 1; | |
| 1158 | } | |
| 1159 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1160 | static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1161 | aim_userinfo_t *info; |
| 2086 | 1162 | va_list ap; |
| 1163 | struct gaim_connection *gc = sess->aux_data; | |
| 1164 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1165 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1166 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1167 | va_end(ap); |
| 1168 | ||
| 1169 | serv_got_update(gc, info->sn, 0, 0, 0, 0, 0, 0); | |
| 1170 | ||
| 1171 | return 1; | |
| 1172 | } | |
| 1173 | ||
| 1174 | static void cancel_direct_im(gpointer w, struct ask_direct *d) { | |
| 1175 | debug_printf("Freeing DirectIM prompts.\n"); | |
| 1176 | ||
| 1177 | g_free(d->sn); | |
| 1178 | g_free(d); | |
| 1179 | } | |
| 1180 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1181 | static void oscar_directim_callback(gpointer data, gint source, GaimInputCondition condition) { |
| 2086 | 1182 | struct direct_im *dim = data; |
| 1183 | struct gaim_connection *gc = dim->gc; | |
| 1184 | struct oscar_data *od = gc->proto_data; | |
|
2235
8828cb249372
[gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2232
diff
changeset
|
1185 | struct conversation *cnv; |
| 2086 | 1186 | char buf[256]; |
| 1187 | ||
| 1188 | if (!g_slist_find(connections, gc)) { | |
| 1189 | g_free(dim); | |
| 1190 | return; | |
| 1191 | } | |
| 1192 | ||
| 1193 | if (source < 0) { | |
| 1194 | g_free(dim); | |
| 1195 | return; | |
| 1196 | } | |
| 1197 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1198 | if (dim->conn->fd != source) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1199 | dim->conn->fd = source; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1200 | |
| 2086 | 1201 | aim_conn_completeconnect(od->sess, dim->conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1202 | if (!(cnv = find_conversation(dim->name))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1203 | cnv = new_conversation(dim->name); |
| 2086 | 1204 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name); |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
1205 | write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1); |
| 2086 | 1206 | |
| 1207 | od->direct_ims = g_slist_append(od->direct_ims, dim); | |
| 1208 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1209 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, |
| 2086 | 1210 | oscar_callback, dim->conn); |
| 1211 | } | |
| 1212 | ||
| 1213 | static int accept_direct_im(gpointer w, struct ask_direct *d) { | |
| 1214 | struct gaim_connection *gc = d->gc; | |
| 1215 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; | |
| 1216 | struct direct_im *dim; | |
| 1217 | char *host; int port = FAIM_LOGIN_PORT; | |
| 1218 | int i; | |
| 1219 | ||
| 1220 | debug_printf("Accepted DirectIM.\n"); | |
| 1221 | ||
| 1222 | dim = find_direct_im(od, d->sn); | |
| 1223 | if (dim) { | |
| 1224 | cancel_direct_im(w, d); /* 40 */ | |
| 1225 | return TRUE; | |
| 1226 | } | |
| 1227 | dim = g_new0(struct direct_im, 1); | |
| 1228 | dim->gc = d->gc; | |
| 1229 | g_snprintf(dim->name, sizeof dim->name, "%s", d->sn); | |
| 1230 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1231 | dim->conn = aim_directim_connect(od->sess, d->sn, NULL, d->cookie); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1232 | if (!dim->conn) { |
| 2086 | 1233 | g_free(dim); |
| 1234 | cancel_direct_im(w, d); | |
| 1235 | return TRUE; | |
| 1236 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1237 | |
| 2086 | 1238 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, |
| 1239 | gaim_directim_incoming, 0); | |
| 1240 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, | |
| 1241 | gaim_directim_typing, 0); | |
| 1242 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1243 | for (i = 0; i < (int)strlen(d->ip); i++) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1244 | if (d->ip[i] == ':') { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1245 | port = atoi(&(d->ip[i+1])); |
| 2086 | 1246 | break; |
| 1247 | } | |
| 1248 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1249 | host = g_strndup(d->ip, i); |
| 2086 | 1250 | dim->conn->status |= AIM_CONN_STATUS_INPROGRESS; |
| 1251 | dim->conn->fd = proxy_connect(host, port, oscar_directim_callback, dim); | |
| 1252 | g_free(host); | |
| 1253 | if (dim->conn->fd < 0) { | |
| 1254 | aim_conn_kill(od->sess, &dim->conn); | |
| 1255 | g_free(dim); | |
| 1256 | cancel_direct_im(w, d); | |
| 1257 | return TRUE; | |
| 1258 | } | |
| 1259 | ||
| 1260 | cancel_direct_im(w, d); | |
| 1261 | ||
| 1262 | return TRUE; | |
| 1263 | } | |
| 1264 | ||
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1265 | static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1266 | char *tmp = g_malloc(BUF_LONG); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1267 | struct gaim_connection *gc = sess->aux_data; |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
1268 | int flags = 0; |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
1269 | |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
1270 | if (args->icbmflags & AIM_IMFLAGS_AWAY) |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
1271 | flags |= IM_FLAG_AWAY; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1272 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1273 | if (args->icbmflags & AIM_IMFLAGS_HASICON) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1274 | struct oscar_data *od = gc->proto_data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1275 | struct icon_req *ir = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1276 | GSList *h = od->hasicons; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1277 | char *who = normalize(userinfo->sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1278 | debug_printf("%s has an icon\n", userinfo->sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1279 | while (h) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1280 | ir = h->data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1281 | if (!strcmp(ir->user, who)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1282 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1283 | h = h->next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1284 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1285 | if (!h) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1286 | ir = g_new0(struct icon_req, 1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1287 | ir->user = g_strdup(who); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1288 | od->hasicons = g_slist_append(od->hasicons, ir); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1289 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1290 | if ((args->iconlen != ir->length) || |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1291 | (args->iconsum != ir->checksum) || |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1292 | (args->iconstamp != ir->timestamp)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1293 | ir->request = TRUE; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1294 | ir->length = args->iconlen; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1295 | ir->checksum = args->iconsum; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1296 | ir->timestamp = args->iconstamp; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1297 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1298 | |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
1299 | if (gc->user->iconfile[0] && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1300 | FILE *file; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1301 | struct stat st; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1302 | |
|
2248
091ec337929f
[gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
1303 | if (!stat(gc->user->iconfile, &st)) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1304 | char *buf = g_malloc(st.st_size); |
|
2248
091ec337929f
[gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
1305 | file = fopen(gc->user->iconfile, "r"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1306 | if (file) { |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1307 | int len = fread(buf, 1, st.st_size, file); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1308 | debug_printf("Sending buddy icon to %s (%d bytes, %d reported)\n", |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
1309 | userinfo->sn, len, st.st_size); |
|
2673
84bb25b76700
[gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2672
diff
changeset
|
1310 | aim_send_icon(sess, userinfo->sn, buf, st.st_size, |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1311 | st.st_mtime, aim_iconsum(buf, st.st_size)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1312 | fclose(file); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
1313 | } else |
|
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
1314 | debug_printf("Can't open buddy icon file!\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1315 | g_free(buf); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
1316 | } else |
|
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
1317 | debug_printf("Can't stat buddy icon file!\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1318 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1319 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1320 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1321 | * Quickly convert it to eight bit format, replacing |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1322 | * non-ASCII UNICODE characters with their equivelent |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1323 | * HTML entity. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1324 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1325 | if (args->icbmflags & AIM_IMFLAGS_UNICODE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1326 | int i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1327 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1328 | for (i = 0, tmp[0] = '\0'; i < args->msglen; i += 2) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1329 | unsigned short uni; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1330 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1331 | uni = ((args->msg[i] & 0xff) << 8) | (args->msg[i+1] & 0xff); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1332 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1333 | if ((uni < 128) || ((uni >= 160) && (uni <= 255))) { /* ISO 8859-1 */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1334 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1335 | g_snprintf(tmp+strlen(tmp), BUF_LONG-strlen(tmp), "%c", uni); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1336 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1337 | } else { /* something else, do UNICODE entity */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1338 | g_snprintf(tmp+strlen(tmp), BUF_LONG-strlen(tmp), "&#%04x;", uni); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1339 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1340 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1341 | } else |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1342 | g_snprintf(tmp, BUF_LONG, "%s", args->msg); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1343 | |
|
2817
de2623f389a2
[gaim-migrate @ 2830]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2799
diff
changeset
|
1344 | strip_linefeed(tmp); |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
1345 | serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL), -1); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1346 | g_free(tmp); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1347 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1348 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1349 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1350 | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1351 | static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1352 | struct gaim_connection *gc = sess->aux_data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1353 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1354 | if (args->reqclass & AIM_CAPS_CHAT) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1355 | char *name = extract_name(args->info.chat.roominfo.name); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1356 | int *exch = g_new0(int, 1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1357 | GList *m = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1358 | m = g_list_append(m, g_strdup(name ? name : args->info.chat.roominfo.name)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1359 | *exch = args->info.chat.roominfo.exchange; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1360 | m = g_list_append(m, exch); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1361 | serv_got_chat_invite(gc, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1362 | name ? name : args->info.chat.roominfo.name, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1363 | userinfo->sn, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1364 | args->info.chat.msg, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1365 | m); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1366 | if (name) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1367 | g_free(name); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1368 | } else if (args->reqclass & AIM_CAPS_SENDFILE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1369 | } else if (args->reqclass & AIM_CAPS_GETFILE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1370 | } else if (args->reqclass & AIM_CAPS_VOICE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1371 | } else if (args->reqclass & AIM_CAPS_BUDDYICON) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1372 | set_icon_data(gc, normalize(userinfo->sn), args->info.icon.icon, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1373 | args->info.icon.length); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1374 | } else if (args->reqclass & AIM_CAPS_IMIMAGE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1375 | struct ask_direct *d = g_new0(struct ask_direct, 1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1376 | char buf[256]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1377 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1378 | debug_printf("%s received direct im request from %s (%s)\n", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1379 | gc->username, userinfo->sn, args->info.imimage.ip); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1380 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1381 | d->gc = gc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1382 | d->sn = g_strdup(userinfo->sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1383 | strncpy(d->ip, args->info.imimage.ip, sizeof(d->ip)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1384 | memcpy(d->cookie, args->cookie, 8); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1385 | g_snprintf(buf, sizeof buf, "%s has just asked to directly connect to %s.", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1386 | userinfo->sn, gc->username); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1387 | do_ask_dialog(buf, d, accept_direct_im, cancel_direct_im); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1388 | } else { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1389 | debug_printf("Unknown reqclass %d\n", args->reqclass); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1390 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1391 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1392 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1393 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1394 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1395 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1396 | static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1397 | int channel, ret = 0; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1398 | aim_userinfo_t *userinfo; |
| 2086 | 1399 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1400 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1401 | va_start(ap, fr); |
| 2086 | 1402 | channel = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1403 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1404 | |
| 1405 | /* channel 1: standard message */ | |
| 1406 | if (channel == 1) { | |
| 1407 | struct aim_incomingim_ch1_args *args; | |
| 1408 | ||
| 1409 | args = va_arg(ap, struct aim_incomingim_ch1_args *); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1410 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1411 | ret = incomingim_chan1(sess, fr->conn, userinfo, args); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1412 | |
| 2086 | 1413 | } else if (channel == 2) { |
| 1414 | struct aim_incomingim_ch2_args *args; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1415 | |
| 2086 | 1416 | args = va_arg(ap, struct aim_incomingim_ch2_args *); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1417 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1418 | ret = incomingim_chan2(sess, fr->conn, userinfo, args); |
| 2086 | 1419 | } |
| 1420 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1421 | va_end(ap); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1422 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1423 | return ret; |
| 2086 | 1424 | } |
| 1425 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1426 | static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1427 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1428 | fu16_t chan, nummissed, reason; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1429 | aim_userinfo_t *userinfo; |
| 2086 | 1430 | char buf[1024]; |
| 1431 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1432 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1433 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1434 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1435 | nummissed = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1436 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1437 | va_end(ap); |
| 1438 | ||
| 1439 | switch(reason) { | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1440 | case 0: |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1441 | /* Invalid (0) */ |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1442 | g_snprintf(buf, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1443 | sizeof(buf), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1444 | _("You missed %d message%s from %s because %s invalid."), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1445 | nummissed, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1446 | nummissed == 1 ? "" : "s", |
|
2432
da7b062af97c
[gaim-migrate @ 2445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2427
diff
changeset
|
1447 | userinfo->sn, |
|
da7b062af97c
[gaim-migrate @ 2445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2427
diff
changeset
|
1448 | nummissed == 1 ? "it was" : "they were"); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1449 | break; |
| 2086 | 1450 | case 1: |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1451 | /* Message too large */ |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1452 | g_snprintf(buf, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1453 | sizeof(buf), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1454 | _("You missed %d message%s from %s because %s too large."), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1455 | nummissed, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1456 | nummissed == 1 ? "" : "s", |
|
2432
da7b062af97c
[gaim-migrate @ 2445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2427
diff
changeset
|
1457 | userinfo->sn, |
|
da7b062af97c
[gaim-migrate @ 2445]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2427
diff
changeset
|
1458 | nummissed == 1 ? "it was" : "they were"); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1459 | break; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1460 | case 2: |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1461 | /* Rate exceeded */ |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1462 | g_snprintf(buf, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1463 | sizeof(buf), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1464 | _("You missed %d message%s from %s because the rate limit has been exceeded."), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1465 | nummissed, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1466 | nummissed == 1 ? "" : "s", |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1467 | userinfo->sn); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1468 | break; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1469 | case 3: |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1470 | /* Evil Sender */ |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1471 | g_snprintf(buf, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1472 | sizeof(buf), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1473 | _("You missed %d message%s from %s because they are too evil."), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1474 | nummissed, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1475 | nummissed == 1 ? "" : "s", |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1476 | userinfo->sn); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1477 | break; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1478 | case 4: |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1479 | /* Evil Receiver */ |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1480 | g_snprintf(buf, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1481 | sizeof(buf), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1482 | _("You missed %d message%s from %s because you are too evil."), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1483 | nummissed, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1484 | nummissed == 1 ? "" : "s", |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1485 | userinfo->sn); |
| 2086 | 1486 | break; |
| 1487 | default: | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1488 | g_snprintf(buf, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1489 | sizeof(buf), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1490 | _("You missed %d message%s from %s for unknown reasons."), |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1491 | nummissed, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1492 | nummissed == 1 ? "" : "s", |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1493 | userinfo->sn); |
| 2086 | 1494 | break; |
| 1495 | } | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1496 | do_error_dialog(buf, _("Gaim - Error")); |
| 2086 | 1497 | |
| 1498 | return 1; | |
| 1499 | } | |
| 1500 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1501 | static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1502 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1503 | fu16_t reason; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1504 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1505 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1506 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1507 | va_end(ap); |
| 1508 | ||
| 1509 | debug_printf("snac threw error (reason 0x%04x: %s\n", reason, | |
| 1510 | (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown"); | |
| 1511 | ||
| 1512 | return 1; | |
| 1513 | } | |
| 1514 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1515 | static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1516 | va_list ap; |
| 1517 | char *destn; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1518 | fu16_t reason; |
| 2086 | 1519 | char buf[1024]; |
| 1520 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1521 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1522 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1523 | destn = va_arg(ap, char *); |
| 1524 | va_end(ap); | |
| 1525 | ||
| 1526 | sprintf(buf, _("Your message to %s did not get sent: %s"), destn, | |
| 1527 | (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Reason unknown")); | |
| 1528 | do_error_dialog(buf, _("Gaim - Error")); | |
| 1529 | ||
| 1530 | return 1; | |
| 1531 | } | |
| 1532 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1533 | static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1534 | va_list ap; |
| 1535 | char *destn; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1536 | fu16_t reason; |
| 2086 | 1537 | char buf[1024]; |
| 1538 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1539 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1540 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1541 | destn = va_arg(ap, char *); |
| 1542 | va_end(ap); | |
| 1543 | ||
| 1544 | sprintf(buf, _("User information for %s unavailable: %s"), destn, | |
| 1545 | (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Reason unknown")); | |
| 1546 | do_error_dialog(buf, _("Gaim - Error")); | |
| 1547 | ||
| 1548 | return 1; | |
| 1549 | } | |
| 1550 | ||
| 1551 | static char *images(int flags) { | |
| 1552 | static char buf[1024]; | |
| 2679 | 1553 | g_snprintf(buf, sizeof(buf), "%s%s%s%s%s", |
| 1554 | (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "", | |
| 2086 | 1555 | (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "", |
| 1556 | (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "", | |
| 1557 | (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "", | |
| 1558 | (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : ""); | |
| 1559 | return buf; | |
| 1560 | } | |
| 1561 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1562 | static int gaim_parse_user_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1563 | aim_userinfo_t *info; |
| 2086 | 1564 | char *prof_enc = NULL, *prof = NULL; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1565 | fu16_t infotype; |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1566 | char header[BUF_LONG]; |
|
2137
b0c18ea1dee8
[gaim-migrate @ 2147]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2131
diff
changeset
|
1567 | char legend[BUF_LONG]; |
| 2086 | 1568 | struct gaim_connection *gc = sess->aux_data; |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1569 | struct oscar_data *od = gc->proto_data; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1570 | GSList *l = od->evilhack; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1571 | gboolean evilhack = FALSE; |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1572 | gboolean away; |
| 2086 | 1573 | va_list ap; |
| 1574 | char *asc; | |
| 1575 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1576 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1577 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1578 | prof_enc = va_arg(ap, char *); |
| 1579 | prof = va_arg(ap, char *); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1580 | infotype = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1581 | va_end(ap); |
| 1582 | ||
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1583 | g_snprintf(legend, sizeof legend, |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1584 | _("<br><BODY BGCOLOR=WHITE><hr><I>Legend:</I><br><br>" |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1585 | "<IMG SRC=\"free_icon.gif\"> : Normal AIM User<br>" |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1586 | "<IMG SRC=\"aol_icon.gif\"> : AOL User <br>" |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1587 | "<IMG SRC=\"dt_icon.gif\"> : Trial AIM User <br>" |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1588 | "<IMG SRC=\"admin_icon.gif\"> : Administrator")); |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1589 | |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1590 | away = infotype != AIM_GETINFO_GENERALINFO; |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1591 | |
| 2086 | 1592 | if (info->membersince) |
| 1593 | asc = g_strdup_printf("Member Since : <B>%s</B><BR>\n", | |
| 1594 | asctime(localtime(&info->membersince))); | |
| 1595 | else | |
| 1596 | asc = g_strdup(""); | |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1597 | g_snprintf(header, sizeof header, |
| 2086 | 1598 | _("Username : <B>%s</B> %s <BR>\n" |
| 1599 | "%s" | |
| 1600 | "Warning Level : <B>%d %%</B><BR>\n" | |
| 1601 | "Online Since : <B>%s</B><BR>\n" | |
|
2137
b0c18ea1dee8
[gaim-migrate @ 2147]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2131
diff
changeset
|
1602 | "Idle Minutes : <B>%d</B>\n<BR>\n<HR><BR>\n"), |
| 2086 | 1603 | info->sn, images(info->flags), |
| 1604 | asc, | |
| 1605 | info->warnlevel/10, | |
| 1606 | asctime(localtime(&info->onlinesince)), | |
|
2137
b0c18ea1dee8
[gaim-migrate @ 2147]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2131
diff
changeset
|
1607 | info->idletime); |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1608 | g_free(asc); |
|
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
1609 | |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1610 | while (l) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1611 | char *x = l->data; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1612 | if (!strcmp(x, normalize(info->sn))) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1613 | evilhack = TRUE; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1614 | g_free(x); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1615 | od->evilhack = g_slist_remove(od->evilhack, x); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1616 | break; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1617 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1618 | l = l->next; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1619 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1620 | |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1621 | if (away) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1622 | if (evilhack) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1623 | g_show_info_text(gc, info->sn, 2, |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1624 | header, |
|
2797
860827047ac5
[gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2791
diff
changeset
|
1625 | (prof && *prof) ? away_subs(prof, gc->username) : |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1626 | _("<i>User has no away message</i>"), |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1627 | legend, NULL); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1628 | } else { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1629 | g_show_info_text(gc, info->sn, 0, |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1630 | header, |
|
2797
860827047ac5
[gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2791
diff
changeset
|
1631 | (prof && *prof) ? away_subs(prof, gc->username) : NULL, |
|
2799
250c4ae590a0
[gaim-migrate @ 2812]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2797
diff
changeset
|
1632 | (prof && *prof) ? "<BR><HR><BR>" : NULL, |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1633 | NULL); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1634 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1635 | } else { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1636 | g_show_info_text(gc, info->sn, 1, |
|
2797
860827047ac5
[gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2791
diff
changeset
|
1637 | (prof && *prof) ? away_subs(prof, gc->username) : |
|
860827047ac5
[gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2791
diff
changeset
|
1638 | _("<i>No Information Provided</i>"), |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1639 | legend, |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1640 | NULL); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
1641 | } |
| 2086 | 1642 | |
| 1643 | return 1; | |
| 1644 | } | |
| 1645 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1646 | static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1647 | char *msg; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1648 | fu16_t id; |
| 2086 | 1649 | va_list ap; |
| 1650 | char buildbuf[150]; | |
| 1651 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1652 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1653 | id = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1654 | msg = va_arg(ap, char *); |
| 1655 | va_end(ap); | |
| 1656 | ||
| 1657 | aim_getbuildstring(buildbuf, sizeof(buildbuf)); | |
| 1658 | ||
| 1659 | debug_printf("MOTD: %s (%d)\n", msg ? msg : "Unknown", id); | |
|
2092
f56061012e3c
[gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
1660 | if (id < 4) |
| 2086 | 1661 | do_error_dialog(_("Your connection may be lost."), |
| 1662 | _("AOL error")); | |
| 1663 | ||
| 1664 | return 1; | |
| 1665 | } | |
| 1666 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1667 | static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1668 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1669 | fu16_t type; |
| 2086 | 1670 | struct gaim_connection *gc = sess->aux_data; |
| 1671 | struct oscar_data *odata = (struct oscar_data *)gc->proto_data; | |
| 1672 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1673 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1674 | type = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1675 | |
| 1676 | switch(type) { | |
| 1677 | case 0x0002: { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1678 | fu8_t maxrooms; |
| 2086 | 1679 | struct aim_chat_exchangeinfo *exchanges; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1680 | int exchangecount, i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1681 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1682 | maxrooms = (fu8_t)va_arg(ap, unsigned int); |
| 2086 | 1683 | exchangecount = va_arg(ap, int); |
| 1684 | exchanges = va_arg(ap, struct aim_chat_exchangeinfo *); | |
| 1685 | va_end(ap); | |
| 1686 | ||
| 1687 | debug_printf("chat info: Chat Rights:\n"); | |
| 1688 | debug_printf("chat info: \tMax Concurrent Rooms: %d\n", maxrooms); | |
| 1689 | debug_printf("chat info: \tExchange List: (%d total)\n", exchangecount); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1690 | for (i = 0; i < exchangecount; i++) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1691 | debug_printf("chat info: \t\t%d\n", exchanges[i].number); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1692 | while (odata->create_rooms) { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1693 | struct create_room *cr = odata->create_rooms->data; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1694 | debug_printf("creating room %s\n", cr->name); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1695 | aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1696 | g_free(cr->name); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1697 | odata->create_rooms = g_slist_remove(odata->create_rooms, cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
1698 | g_free(cr); |
| 2086 | 1699 | } |
| 1700 | } | |
| 1701 | break; | |
| 1702 | case 0x0008: { | |
| 1703 | char *fqcn, *name, *ck; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1704 | fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1705 | fu8_t createperms; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1706 | fu32_t createtime; |
| 2086 | 1707 | |
| 1708 | fqcn = va_arg(ap, char *); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1709 | instance = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1710 | exchange = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1711 | flags = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1712 | createtime = va_arg(ap, fu32_t); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1713 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1714 | maxoccupancy = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1715 | createperms = (fu8_t)va_arg(ap, int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1716 | unknown = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1717 | name = va_arg(ap, char *); |
| 1718 | ck = va_arg(ap, char *); | |
| 1719 | va_end(ap); | |
| 1720 | ||
| 1721 | debug_printf("created room: %s %d %d %d %lu %d %d %d %d %s %s\n", | |
| 1722 | fqcn, | |
| 1723 | exchange, instance, flags, | |
| 1724 | createtime, | |
| 1725 | maxmsglen, maxoccupancy, createperms, unknown, | |
| 1726 | name, ck); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1727 | aim_chat_join(odata->sess, odata->conn, exchange, ck, instance); |
| 2086 | 1728 | } |
| 1729 | break; | |
| 1730 | default: | |
| 1731 | va_end(ap); | |
| 1732 | debug_printf("chatnav info: unknown type (%04x)\n", type); | |
| 1733 | break; | |
| 1734 | } | |
| 1735 | return 1; | |
| 1736 | } | |
| 1737 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1738 | static int gaim_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1739 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1740 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1741 | aim_userinfo_t *info; |
| 2086 | 1742 | struct gaim_connection *g = sess->aux_data; |
| 1743 | ||
| 1744 | struct chat_connection *c = NULL; | |
| 1745 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1746 | va_start(ap, fr); |
| 2086 | 1747 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1748 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1749 | va_end(ap); |
| 1750 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1751 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 1752 | if (!c) |
| 1753 | return 1; | |
| 1754 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1755 | for (i = 0; i < count; i++) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1756 | add_chat_buddy(c->cnv, info[i].sn); |
| 2086 | 1757 | |
| 1758 | return 1; | |
| 1759 | } | |
| 1760 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1761 | static int gaim_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1762 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1763 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1764 | aim_userinfo_t *info; |
| 2086 | 1765 | struct gaim_connection *g = sess->aux_data; |
| 1766 | ||
| 1767 | struct chat_connection *c = NULL; | |
| 1768 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1769 | va_start(ap, fr); |
| 2086 | 1770 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1771 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1772 | va_end(ap); |
| 1773 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1774 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 1775 | if (!c) |
| 1776 | return 1; | |
| 1777 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1778 | for (i = 0; i < count; i++) |
|
2820
4e07191ca3d0
[gaim-migrate @ 2833]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2817
diff
changeset
|
1779 | remove_chat_buddy(c->cnv, info[i].sn, NULL); |
| 2086 | 1780 | |
| 1781 | return 1; | |
| 1782 | } | |
| 1783 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1784 | static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1785 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1786 | aim_userinfo_t *userinfo; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1787 | struct aim_chat_roominfo *roominfo; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1788 | char *roomname; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1789 | int usercount; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1790 | char *roomdesc; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1791 | fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1792 | fu32_t creationtime; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1793 | struct gaim_connection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1794 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1795 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1796 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1797 | roominfo = va_arg(ap, struct aim_chat_roominfo *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1798 | roomname = va_arg(ap, char *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1799 | usercount= va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1800 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1801 | roomdesc = va_arg(ap, char *); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1802 | unknown_c9 = (fu16_t)va_arg(ap, int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1803 | creationtime = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1804 | maxmsglen = (fu16_t)va_arg(ap, int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1805 | unknown_d2 = (fu16_t)va_arg(ap, int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1806 | unknown_d5 = (fu16_t)va_arg(ap, int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1807 | maxvisiblemsglen = (fu16_t)va_arg(ap, int); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1808 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1809 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1810 | debug_printf("inside chat_info_update (maxmsglen = %d, maxvislen = %d)\n", |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1811 | maxmsglen, maxvisiblemsglen); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1812 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1813 | ccon->maxlen = maxmsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1814 | ccon->maxvis = maxvisiblemsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1815 | |
| 2086 | 1816 | return 1; |
| 1817 | } | |
| 1818 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1819 | static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1820 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1821 | aim_userinfo_t *info; |
| 2086 | 1822 | char *msg; |
| 1823 | struct gaim_connection *gc = sess->aux_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1824 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn); |
| 2086 | 1825 | char *tmp; |
| 1826 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1827 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1828 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1829 | msg = va_arg(ap, char *); |
| 1830 | ||
| 1831 | tmp = g_malloc(BUF_LONG); | |
| 1832 | g_snprintf(tmp, BUF_LONG, "%s", msg); | |
| 1833 | serv_got_chat_in(gc, ccon->id, info->sn, 0, tmp, time((time_t)NULL)); | |
| 1834 | g_free(tmp); | |
| 1835 | ||
| 1836 | return 1; | |
| 1837 | } | |
| 1838 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1839 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1840 | * Recieved in response to an IM sent with the AIM_IMFLAGS_ACK option. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1841 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1842 | static int gaim_parse_msgack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1843 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1844 | fu16_t type; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1845 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1846 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1847 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1848 | type = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 1849 | sn = va_arg(ap, char *); |
| 1850 | va_end(ap); | |
| 1851 | ||
| 1852 | debug_printf("Sent message to %s.\n", sn); | |
| 1853 | ||
| 1854 | return 1; | |
| 1855 | } | |
| 1856 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1857 | static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1858 | static const char *codes[5] = { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1859 | "invalid", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1860 | "change", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1861 | "warning", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1862 | "limit", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1863 | "limit cleared", |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1864 | }; |
| 2086 | 1865 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1866 | fu16_t code, rateclass; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1867 | fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1868 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1869 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1870 | code = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1871 | rateclass= (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1872 | windowsize = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1873 | clear = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1874 | alert = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1875 | limit = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1876 | disconnect = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1877 | currentavg = (fu32_t)va_arg(ap, unsigned long); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1878 | maxavg = (fu32_t)va_arg(ap, unsigned long); |
| 2086 | 1879 | va_end(ap); |
| 1880 | ||
| 1881 | debug_printf("rate %s (paramid 0x%04lx): curavg = %ld, maxavg = %ld, alert at %ld, " | |
| 1882 | "clear warning at %ld, limit at %ld, disconnect at %ld (window size = %ld)\n", | |
| 1883 | (code < 5) ? codes[code] : codes[0], | |
| 1884 | rateclass, | |
| 1885 | currentavg, maxavg, | |
| 1886 | alert, clear, | |
| 1887 | limit, disconnect, | |
| 1888 | windowsize); | |
| 1889 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1890 | /* XXX fix these values */ |
| 2086 | 1891 | if (code == AIM_RATE_CODE_CHANGE) { |
| 1892 | if (currentavg >= clear) | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1893 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 1894 | } else if (code == AIM_RATE_CODE_WARNING) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1895 | aim_conn_setlatency(fr->conn, windowsize/4); |
| 2086 | 1896 | } else if (code == AIM_RATE_CODE_LIMIT) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1897 | aim_conn_setlatency(fr->conn, windowsize/2); |
| 2086 | 1898 | } else if (code == AIM_RATE_CODE_CLEARLIMIT) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1899 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 1900 | } |
| 1901 | ||
| 1902 | return 1; | |
| 1903 | } | |
| 1904 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1905 | static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1906 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1907 | fu16_t newevil; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1908 | aim_userinfo_t *userinfo; |
| 2086 | 1909 | struct gaim_connection *gc = sess->aux_data; |
| 1910 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1911 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1912 | newevil = (fu16_t)va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1913 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1914 | va_end(ap); |
| 1915 | ||
| 1916 | serv_got_eviled(gc, (userinfo && userinfo->sn[0]) ? userinfo->sn : NULL, newevil / 10); | |
| 1917 | ||
| 1918 | return 1; | |
| 1919 | } | |
| 1920 | ||
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1921 | static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1922 | va_list ap; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1923 | aim_userinfo_t *info; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1924 | struct gaim_connection *gc = sess->aux_data; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1925 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1926 | va_start(ap, fr); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1927 | info = va_arg(ap, aim_userinfo_t *); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1928 | va_end(ap); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1929 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1930 | gc->evil = info->warnlevel/10; |
|
2698
29d3c1727fd1
[gaim-migrate @ 2711]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2689
diff
changeset
|
1931 | /* gc->correction_time = (info->onlinesince - gc->login_time); */ |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1932 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1933 | return 1; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1934 | } |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1935 | |
| 2675 | 1936 | static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1937 | struct gaim_connection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1938 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
1939 | aim_reqpersonalinfo(sess, fr->conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1940 | aim_bos_reqlocaterights(sess, fr->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1941 | aim_bos_setprofile(sess, fr->conn, gc->user->user_info, NULL, gaim_caps); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1942 | aim_bos_reqbuddyrights(sess, fr->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1943 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1944 | account_online(gc); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1945 | serv_finish_login(gc); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1946 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1947 | if (bud_list_cache_exists(gc)) |
|
2382
69a4e3665132
[gaim-migrate @ 2395]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2361
diff
changeset
|
1948 | do_import(gc, NULL); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1949 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1950 | debug_printf("buddy list loaded\n"); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1951 | |
|
2673
84bb25b76700
[gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2672
diff
changeset
|
1952 | aim_reqicbmparams(sess); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1953 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1954 | aim_bos_reqrights(sess, fr->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1955 | aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1956 | aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1957 | AIM_PRIVFLAGS_ALLOWMEMBERSINCE); |
| 2086 | 1958 | |
| 1959 | return 1; | |
| 1960 | } | |
| 1961 | ||
| 2675 | 1962 | static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2647 | 1963 | struct gaim_connection *gc = sess->aux_data; |
| 1964 | struct oscar_data *od = gc->proto_data; | |
| 1965 | ||
| 2672 | 1966 | aim_clientready(sess, fr->conn); |
| 2675 | 1967 | debug_printf("connected to admin\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1968 | |
| 2647 | 1969 | if (od->chpass) { |
| 1970 | debug_printf("changing password\n"); | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
1971 | aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp); |
| 2647 | 1972 | g_free(od->oldp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1973 | od->oldp = NULL; |
| 2647 | 1974 | g_free(od->newp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1975 | od->newp = NULL; |
| 2647 | 1976 | od->chpass = FALSE; |
| 1977 | } | |
| 1978 | if (od->conf) { | |
| 1979 | debug_printf("confirming account\n"); | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
1980 | aim_admin_reqconfirm(sess, fr->conn); |
| 2647 | 1981 | od->conf = FALSE; |
| 1982 | } | |
| 1983 | if (od->reqemail) { | |
| 1984 | debug_printf("requesting email\n"); | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
1985 | aim_admin_getinfo(sess, fr->conn, 0x0011); |
| 2647 | 1986 | od->reqemail = FALSE; |
| 1987 | } | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1988 | if (od->setemail) { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1989 | debug_printf("setting email\n"); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1990 | aim_admin_setemail(sess, fr->conn, od->email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1991 | g_free(od->email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1992 | od->setemail = FALSE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
1993 | } |
| 2647 | 1994 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1995 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1996 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1997 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1998 | static int gaim_icbm_param_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
1999 | struct aim_icbmparameters *params; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2000 | va_list ap; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2001 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2002 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2003 | params = va_arg(ap, struct aim_icbmparameters *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2004 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2005 | |
|
2427
761801814c88
[gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2421
diff
changeset
|
2006 | /* evidently this crashes on solaris. i have no clue why |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2007 | debug_printf("ICBM Parameters: maxchannel = %d, default flags = 0x%08lx, max msg len = %d, " |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2008 | "max sender evil = %f, max receiver evil = %f, min msg interval = %ld\n", |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2009 | params->maxchan, params->flags, params->maxmsglen, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2010 | ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2011 | params->minmsginterval); |
|
2427
761801814c88
[gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2421
diff
changeset
|
2012 | */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2013 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2014 | /* Maybe senderwarn and recverwarn should be user preferences... */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2015 | params->maxmsglen = 8000; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2016 | params->minmsginterval = 0; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2017 | |
|
2673
84bb25b76700
[gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2672
diff
changeset
|
2018 | aim_seticbmparam(sess, params); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2019 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2020 | return 1; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2021 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2022 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2023 | /* XXX this is frivelous... do you really want to know this info? */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2024 | static int gaim_parse_buddyrights(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2025 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2026 | fu16_t maxbuddies, maxwatchers; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2027 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2028 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2029 | maxbuddies = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2030 | maxwatchers = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 2031 | va_end(ap); |
| 2032 | ||
| 2033 | debug_printf("buddy list rights: Max buddies = %d / Max watchers = %d\n", maxbuddies, maxwatchers); | |
| 2034 | ||
| 2035 | return 1; | |
| 2036 | } | |
| 2037 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2038 | static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2039 | fu16_t maxpermits, maxdenies; |
| 2086 | 2040 | va_list ap; |
| 2041 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2042 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2043 | maxpermits = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2044 | maxdenies = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 2045 | va_end(ap); |
| 2046 | ||
| 2047 | debug_printf("BOS rights: Max permit = %d / Max deny = %d\n", maxpermits, maxdenies); | |
| 2048 | ||
| 2672 | 2049 | aim_clientready(sess, fr->conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2050 | |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2051 | aim_icq_reqofflinemsgs(sess); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2052 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2053 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV); |
| 2086 | 2054 | |
| 2055 | return 1; | |
| 2056 | } | |
| 2057 | ||
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2058 | static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2059 | va_list ap; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2060 | struct aim_icq_offlinemsg *msg; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2061 | struct gaim_connection *gc = sess->aux_data; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2062 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2063 | va_start(ap, fr); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2064 | msg = va_arg(ap, struct aim_icq_offlinemsg *); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2065 | va_end(ap); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2066 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2067 | if (msg->type == 0x0001) { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2068 | char sender[32]; |
|
2817
de2623f389a2
[gaim-migrate @ 2830]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2799
diff
changeset
|
2069 | char *tmp = g_strdup(msg->msg); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2070 | time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2071 | g_snprintf(sender, sizeof(sender), "%lu", msg->sender); |
|
2817
de2623f389a2
[gaim-migrate @ 2830]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2799
diff
changeset
|
2072 | strip_linefeed(tmp); |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
2073 | serv_got_im(gc, sender, tmp, 0, t, -1); |
|
2817
de2623f389a2
[gaim-migrate @ 2830]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2799
diff
changeset
|
2074 | g_free(tmp); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2075 | } else { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2076 | debug_printf("unknown offline message type 0x%04x\n", msg->type); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2077 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2078 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2079 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2080 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2081 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2082 | static int gaim_offlinemsgdone(aim_session_t *sess, aim_frame_t *fr, ...) |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2083 | { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2084 | aim_icq_ackofflinemsgs(sess); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2085 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2086 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2087 | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2088 | static int gaim_simpleinfo(aim_session_t *sess, aim_frame_t *fr, ...) |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2089 | { |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
2090 | struct gaim_connection *gc = sess->aux_data; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2091 | va_list ap; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2092 | struct aim_icq_simpleinfo *info; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2093 | char buf[16 * 1024]; |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
2094 | char who[16]; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2095 | |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2096 | va_start(ap, fr); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2097 | info = va_arg(ap, struct aim_icq_simpleinfo *); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2098 | va_end(ap); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2099 | |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
2100 | g_snprintf(who, sizeof who, "%lu", info->uin); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2101 | g_snprintf(buf, sizeof buf, |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2102 | "<B>UIN:</B> %lu<BR>" |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2103 | "<B>Nick:</B> %s<BR>" |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2104 | "<B>Name:</B> %s %s<BR>" |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2105 | "<B>Email:</B> %s\n", |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2106 | info->uin, |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2107 | info->nick, |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2108 | info->first, info->last, |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2109 | info->email); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2110 | |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
2111 | g_show_info_text(gc, who, FALSE, buf, NULL); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2112 | |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2113 | return 1; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2114 | } |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2115 | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2116 | static int gaim_popup(aim_session_t *sess, aim_frame_t *fr, ...) |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2117 | { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2118 | char *msg, *url; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2119 | fu16_t wid, hei, delay; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2120 | va_list ap; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2121 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2122 | va_start(ap, fr); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2123 | msg = va_arg(ap, char *); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2124 | url = va_arg(ap, char *); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2125 | wid = (fu16_t)va_arg(ap, int); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2126 | hei = (fu16_t)va_arg(ap, int); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2127 | delay = (fu16_t)va_arg(ap, int); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2128 | va_end(ap); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2129 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2130 | serv_got_popup(msg, url, wid, hei); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2131 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2132 | return 1; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2133 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2134 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2135 | static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2136 | va_list ap; |
| 2137 | char *address, *SNs; | |
| 2138 | int i, num; | |
| 2139 | char *buf; | |
| 2140 | int at = 0, len; | |
| 2141 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2142 | va_start(ap, fr); |
| 2086 | 2143 | address = va_arg(ap, char *); |
| 2144 | num = va_arg(ap, int); | |
| 2145 | SNs = va_arg(ap, char *); | |
| 2146 | va_end(ap); | |
| 2147 | ||
| 2148 | len = num * (MAXSNLEN + 1) + 1024; | |
| 2149 | buf = g_malloc(len); | |
| 2150 | at += g_snprintf(buf + at, len - at, "<B>%s has the following screen names:</B><BR>", address); | |
| 2151 | for (i = 0; i < num; i++) | |
| 2152 | at += g_snprintf(buf + at, len - at, "%s<BR>", &SNs[i * (MAXSNLEN + 1)]); | |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
2153 | g_show_info_text(NULL, NULL, FALSE, buf, NULL); |
| 2086 | 2154 | g_free(buf); |
| 2155 | ||
| 2156 | return 1; | |
| 2157 | } | |
| 2158 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2159 | static int gaim_parse_searcherror(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2160 | va_list ap; |
| 2161 | char *address; | |
| 2162 | char buf[BUF_LONG]; | |
| 2163 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2164 | va_start(ap, fr); |
| 2086 | 2165 | address = va_arg(ap, char *); |
| 2166 | va_end(ap); | |
| 2167 | ||
| 2168 | g_snprintf(buf, sizeof(buf), "No results found for email address %s", address); | |
| 2169 | do_error_dialog(buf, _("Error")); | |
| 2170 | ||
| 2171 | return 1; | |
| 2172 | } | |
| 2173 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2174 | static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2175 | fu16_t status; |
| 2086 | 2176 | va_list ap; |
| 2177 | char msg[256]; | |
| 2178 | struct gaim_connection *gc = sess->aux_data; | |
| 2179 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2180 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2181 | status = (fu16_t)va_arg(ap, unsigned int); /* status code of confirmation request */ |
| 2086 | 2182 | va_end(ap); |
| 2183 | ||
| 2184 | debug_printf("account confirmation returned status 0x%04x (%s)\n", status, | |
| 2185 | status ? "email sent" : "unknown"); | |
| 2186 | if (status) { | |
| 2187 | g_snprintf(msg, sizeof(msg), "You should receive an email asking to confirm %s.", | |
| 2188 | gc->username); | |
| 2189 | do_error_dialog(msg, "Confirm"); | |
| 2190 | } | |
| 2191 | ||
| 2192 | return 1; | |
| 2193 | } | |
| 2194 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2195 | static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2196 | int change, str; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2197 | fu16_t perms, type, length; |
| 2086 | 2198 | char *val; |
| 2199 | va_list ap; | |
| 2200 | char buf[BUF_LONG]; | |
| 2201 | struct gaim_connection *gc = sess->aux_data; | |
| 2202 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2203 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2204 | change = va_arg(ap, int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2205 | perms = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2206 | type = (fu16_t)va_arg(ap, unsigned int); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2207 | length = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 2208 | val = va_arg(ap, char *); |
| 2209 | str = va_arg(ap, int); | |
| 2210 | va_end(ap); | |
| 2211 | ||
| 2212 | debug_printf("info%s: perms = %d, type = %x, length = %d, val = %s\n", | |
| 2213 | change ? " change" : "", perms, type, length, str ? val : "(not string)"); | |
| 2214 | ||
| 2215 | if ((type == 0x0011) && str) { | |
| 2216 | g_snprintf(buf, sizeof(buf), "The email address for %s is %s", gc->username, val); | |
| 2217 | do_error_dialog(buf, "Email"); | |
| 2218 | } | |
| 2219 | ||
| 2220 | return 1; | |
| 2221 | } | |
| 2222 | ||
| 2223 | static void oscar_keepalive(struct gaim_connection *gc) { | |
| 2224 | struct oscar_data *odata = (struct oscar_data *)gc->proto_data; | |
| 2225 | aim_flap_nop(odata->sess, odata->conn); | |
| 2226 | } | |
| 2227 | ||
| 2228 | static char *oscar_name() { | |
| 2229 | return "Oscar"; | |
| 2230 | } | |
| 2231 | ||
|
2231
9d8593ab093e
[gaim-migrate @ 2241]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2205
diff
changeset
|
2232 | static int oscar_send_im(struct gaim_connection *gc, char *name, char *message, int imflags) { |
| 2086 | 2233 | struct oscar_data *odata = (struct oscar_data *)gc->proto_data; |
| 2234 | struct direct_im *dim = find_direct_im(odata, name); | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
2235 | int ret = 0; |
| 2086 | 2236 | if (dim) { |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
2237 | ret = aim_send_im_direct(odata->sess, dim->conn, message); |
| 2086 | 2238 | } else { |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2239 | if (imflags & IM_FLAG_AWAY) { |
|
2673
84bb25b76700
[gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2672
diff
changeset
|
2240 | ret = aim_send_im(odata->sess, name, AIM_IMFLAGS_AWAY, message); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2241 | } else { |
|
2197
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2242 | struct aim_sendimext_args args; |
| 2086 | 2243 | GSList *h = odata->hasicons; |
|
2137
b0c18ea1dee8
[gaim-migrate @ 2147]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2131
diff
changeset
|
2244 | struct icon_req *ir = NULL; |
| 2086 | 2245 | char *who = normalize(name); |
|
2197
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2246 | struct stat st; |
|
2248
091ec337929f
[gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
2247 | |
|
091ec337929f
[gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
2248 | args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES; |
|
2833
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2249 | if (odata->icq) |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2250 | args.flags |= AIM_IMFLAGS_OFFLINE; |
|
2248
091ec337929f
[gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
2251 | |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
2252 | args.features = gaim_features; |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
2253 | args.featureslen = sizeof(gaim_features); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2254 | |
| 2086 | 2255 | while (h) { |
| 2256 | ir = h->data; | |
| 2257 | if (ir->request && !strcmp(who, ir->user)) | |
| 2258 | break; | |
| 2259 | h = h->next; | |
| 2260 | } | |
| 2261 | if (h) { | |
| 2262 | ir->request = FALSE; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2263 | args.flags |= AIM_IMFLAGS_BUDDYREQ; |
| 2086 | 2264 | debug_printf("sending buddy icon request with message\n"); |
| 2265 | } | |
|
2197
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2266 | |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
2267 | if (gc->user->iconfile[0] && !stat(gc->user->iconfile, &st)) { |
|
2248
091ec337929f
[gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
2268 | FILE *file = fopen(gc->user->iconfile, "r"); |
|
2197
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2269 | if (file) { |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2270 | char *buf = g_malloc(st.st_size); |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2271 | fread(buf, 1, st.st_size, file); |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2272 | |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2273 | args.iconlen = st.st_size; |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2274 | args.iconsum = aim_iconsum(buf, st.st_size); |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2275 | args.iconstamp = st.st_mtime; |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2276 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2277 | args.flags |= AIM_IMFLAGS_HASICON; |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
2278 | debug_printf("Claiming to have an icon.\n"); |
|
2197
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2279 | |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2280 | fclose(file); |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2281 | g_free(buf); |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2282 | } |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2283 | } |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2284 | |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2285 | args.destsn = name; |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2286 | args.msg = message; |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2287 | args.msglen = strlen(message); |
|
e2b0aae53d01
[gaim-migrate @ 2207]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2196
diff
changeset
|
2288 | |
|
2673
84bb25b76700
[gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2672
diff
changeset
|
2289 | ret = aim_send_im_ext(odata->sess, &args); |
| 2086 | 2290 | } |
| 2291 | } | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
2292 | if (ret >= 0) |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
2293 | return 1; |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
2294 | return ret; |
| 2086 | 2295 | } |
| 2296 | ||
| 2297 | static void oscar_get_info(struct gaim_connection *g, char *name) { | |
| 2298 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2299 | if (odata->icq) |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2300 | aim_icq_getsimpleinfo(odata->sess, name); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2301 | else |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2302 | /* people want the away message on the top, so we get the away message |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2303 | * first and then get the regular info, since it's too difficult to |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2304 | * insert in the middle. i hate people. */ |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2305 | aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_AWAYMESSAGE); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2306 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2307 | |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2308 | static void oscar_get_away(struct gaim_connection *g, char *name) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2309 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2310 | if (!odata->icq) |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
2311 | aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_GENERALINFO); |
| 2086 | 2312 | } |
| 2313 | ||
| 2314 | static void oscar_set_dir(struct gaim_connection *g, char *first, char *middle, char *last, | |
| 2315 | char *maiden, char *city, char *state, char *country, int web) { | |
| 2316 | /* FIXME : some of these things are wrong, but i'm lazy */ | |
| 2317 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2318 | aim_setdirectoryinfo(odata->sess, odata->conn, first, middle, last, | |
| 2319 | maiden, NULL, NULL, city, state, NULL, 0, web); | |
| 2320 | } | |
| 2321 | ||
| 2322 | ||
| 2323 | static void oscar_set_idle(struct gaim_connection *g, int time) { | |
| 2324 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2325 | aim_bos_setidle(odata->sess, odata->conn, time); | |
| 2326 | } | |
| 2327 | ||
| 2328 | static void oscar_set_info(struct gaim_connection *g, char *info) { | |
| 2329 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2330 | char inforeal[1025], away[1025]; | |
| 2331 | g_snprintf(inforeal, sizeof(inforeal), "%s", info); | |
| 2332 | if (g->away) | |
| 2333 | g_snprintf(away, sizeof(away), "%s", g->away); | |
| 2334 | if (strlen(info) > 1024) | |
| 2335 | do_error_dialog("Maximum info length (1024) exceeded, truncating", "Info Too Long"); | |
| 2336 | aim_bos_setprofile(odata->sess, odata->conn, inforeal, g->away ? NULL : "", gaim_caps); | |
| 2337 | } | |
| 2338 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2339 | static void oscar_set_away(struct gaim_connection *gc, char *state, char *message) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2340 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2341 | char away[1025]; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2342 | if (!od->icq) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2343 | if (message) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2344 | g_snprintf(away, sizeof(away), "%s", message); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2345 | aim_bos_setprofile(od->sess, od->conn, NULL, message ? away : "", gaim_caps); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2346 | if (gc->away) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2347 | g_free (gc->away); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2348 | gc->away = NULL; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2349 | if (message) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2350 | if (strlen(message) > 1024) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2351 | do_error_dialog("Maximum away length (1024) exceeded, truncating", |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2352 | "Info Too Long"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2353 | gc->away = g_strdup (message); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2354 | } |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2355 | return; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2356 | } |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2357 | |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2358 | if (gc->away) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2359 | gc->away = NULL; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2360 | |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2361 | if (!strcmp(state, "Online")) |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2362 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_ONLINE); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2363 | else if (!strcmp(state, "Away")) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2364 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2365 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2366 | } else if (!strcmp(state, "Do Not Disturb")) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2367 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_DND); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2368 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2369 | } else if (!strcmp(state, "Not Available")) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2370 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NA); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2371 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2372 | } else if (!strcmp(state, "Occupied")) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2373 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_OCCUPIED); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2374 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2375 | } else if (!strcmp(state, "Free For Chat")) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2376 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_CHAT); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2377 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2378 | } else if (!strcmp(state, "Invisible")) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2379 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_INVISIBLE); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2380 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2381 | } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2382 | if (message) { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2383 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NA); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2384 | gc->away = ""; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2385 | } else { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2386 | aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_ONLINE); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2387 | } |
| 2086 | 2388 | } |
| 2389 | } | |
| 2390 | ||
| 2391 | static void oscar_warn(struct gaim_connection *g, char *name, int anon) { | |
| 2392 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2113 | 2393 | aim_send_warning(odata->sess, odata->conn, name, anon ? AIM_WARN_ANON : 0); |
| 2086 | 2394 | } |
| 2395 | ||
| 2396 | static void oscar_dir_search(struct gaim_connection *g, char *first, char *middle, char *last, | |
| 2397 | char *maiden, char *city, char *state, char *country, char *email) { | |
| 2398 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2399 | if (strlen(email)) | |
| 2400 | aim_usersearch_address(odata->sess, odata->conn, email); | |
| 2401 | } | |
| 2402 | ||
| 2403 | static void oscar_add_buddy(struct gaim_connection *g, char *name) { | |
| 2404 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2405 | aim_add_buddy(odata->sess, odata->conn, name); | |
| 2406 | } | |
| 2407 | ||
| 2408 | static void oscar_add_buddies(struct gaim_connection *g, GList *buddies) { | |
| 2409 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2410 | char buf[MSG_LEN]; | |
| 2411 | int n = 0; | |
| 2412 | while (buddies) { | |
| 2413 | if (n > MSG_LEN - 18) { | |
| 2414 | aim_bos_setbuddylist(odata->sess, odata->conn, buf); | |
| 2415 | n = 0; | |
| 2416 | } | |
| 2417 | n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", (char *)buddies->data); | |
| 2418 | buddies = buddies->next; | |
| 2419 | } | |
| 2420 | aim_bos_setbuddylist(odata->sess, odata->conn, buf); | |
| 2421 | } | |
| 2422 | ||
|
2681
73cd94b9e78e
[gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2679
diff
changeset
|
2423 | static void oscar_remove_buddy(struct gaim_connection *g, char *name, char *group) { |
| 2086 | 2424 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; |
| 2425 | aim_remove_buddy(odata->sess, odata->conn, name); | |
| 2426 | } | |
| 2427 | ||
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2428 | static GList *oscar_chat_info(struct gaim_connection *gc) { |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2429 | GList *m = NULL; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2430 | struct proto_chat_entry *pce; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2431 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2432 | pce = g_new0(struct proto_chat_entry, 1); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2433 | pce->label = _("Join what group:"); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2434 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2435 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2436 | pce = g_new0(struct proto_chat_entry, 1); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2437 | pce->label = _("Exchange:"); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2438 | pce->is_int = TRUE; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2439 | pce->min = 4; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2440 | pce->max = 20; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2441 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2442 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2443 | return m; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2444 | } |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2445 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2446 | static void oscar_join_chat(struct gaim_connection *g, GList *data) { |
| 2086 | 2447 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2448 | aim_conn_t *cur; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2449 | char *name; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2450 | int *exchange; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2451 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2452 | if (!data || !data->next) |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2453 | return; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2454 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2455 | name = data->data; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2456 | exchange = data->next->data; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2457 | |
| 2086 | 2458 | debug_printf("Attempting to join chat room %s.\n", name); |
| 2459 | if ((cur = aim_getconn_type(odata->sess, AIM_CONN_TYPE_CHATNAV))) { | |
| 2460 | debug_printf("chatnav exists, creating room\n"); | |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2461 | aim_chatnav_createroom(odata->sess, cur, name, *exchange); |
| 2086 | 2462 | } else { |
| 2463 | /* this gets tricky */ | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
2464 | struct create_room *cr = g_new0(struct create_room, 1); |
| 2086 | 2465 | debug_printf("chatnav does not exist, opening chatnav\n"); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
2466 | cr->exchange = *exchange; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
2467 | cr->name = g_strdup(name); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
2468 | odata->create_rooms = g_slist_append(odata->create_rooms, cr); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2469 | aim_reqservice(odata->sess, odata->conn, AIM_CONN_TYPE_CHATNAV); |
| 2086 | 2470 | } |
| 2471 | } | |
| 2472 | ||
| 2473 | static void oscar_chat_invite(struct gaim_connection *g, int id, char *message, char *name) { | |
| 2474 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; | |
| 2475 | struct chat_connection *ccon = find_oscar_chat(g, id); | |
| 2476 | ||
| 2477 | if (!ccon) | |
| 2478 | return; | |
| 2479 | ||
| 2480 | aim_chat_invite(odata->sess, odata->conn, name, message ? message : "", | |
| 2481 | ccon->exchange, ccon->name, 0x0); | |
| 2482 | } | |
| 2483 | ||
| 2484 | static void oscar_chat_leave(struct gaim_connection *g, int id) { | |
| 2485 | struct oscar_data *odata = g ? (struct oscar_data *)g->proto_data : NULL; | |
| 2486 | GSList *bcs = g->buddy_chats; | |
| 2487 | struct conversation *b = NULL; | |
| 2488 | struct chat_connection *c = NULL; | |
| 2489 | int count = 0; | |
| 2490 | ||
| 2491 | while (bcs) { | |
| 2492 | count++; | |
| 2493 | b = (struct conversation *)bcs->data; | |
| 2494 | if (id == b->id) | |
| 2495 | break; | |
| 2496 | bcs = bcs->next; | |
| 2497 | b = NULL; | |
| 2498 | } | |
| 2499 | ||
| 2500 | if (!b) | |
| 2501 | return; | |
| 2502 | ||
| 2503 | debug_printf("Attempting to leave room %s (currently in %d rooms)\n", b->name, count); | |
| 2504 | ||
| 2505 | c = find_oscar_chat(g, b->id); | |
| 2506 | if (c != NULL) { | |
| 2507 | if (odata) | |
| 2508 | odata->oscar_chats = g_slist_remove(odata->oscar_chats, c); | |
| 2509 | if (c->inpa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2510 | gaim_input_remove(c->inpa); |
| 2086 | 2511 | if (g && odata->sess) |
| 2512 | aim_conn_kill(odata->sess, &c->conn); | |
| 2513 | g_free(c->name); | |
| 2514 | g_free(c->show); | |
| 2515 | g_free(c); | |
| 2516 | } | |
| 2517 | /* we do this because with Oscar it doesn't tell us we left */ | |
| 2518 | serv_got_chat_left(g, b->id); | |
| 2519 | } | |
| 2520 | ||
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2521 | static int oscar_chat_send(struct gaim_connection *g, int id, char *message) { |
| 2086 | 2522 | struct oscar_data *odata = (struct oscar_data *)g->proto_data; |
| 2523 | GSList *bcs = g->buddy_chats; | |
| 2524 | struct conversation *b = NULL; | |
| 2525 | struct chat_connection *c = NULL; | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2526 | char *buf, *buf2; |
| 2086 | 2527 | int i, j; |
| 2528 | ||
| 2529 | while (bcs) { | |
| 2530 | b = (struct conversation *)bcs->data; | |
| 2531 | if (id == b->id) | |
| 2532 | break; | |
| 2533 | bcs = bcs->next; | |
| 2534 | b = NULL; | |
| 2535 | } | |
| 2536 | if (!b) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2537 | return -EINVAL; |
| 2086 | 2538 | |
| 2539 | bcs = odata->oscar_chats; | |
| 2540 | while (bcs) { | |
| 2541 | c = (struct chat_connection *)bcs->data; | |
| 2542 | if (b == c->cnv) | |
| 2543 | break; | |
| 2544 | bcs = bcs->next; | |
| 2545 | c = NULL; | |
| 2546 | } | |
| 2547 | if (!c) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2548 | return -EINVAL; |
| 2086 | 2549 | |
| 2550 | buf = g_malloc(strlen(message) * 4 + 1); | |
| 2551 | for (i = 0, j = 0; i < strlen(message); i++) { | |
| 2552 | if (message[i] == '\n') { | |
| 2553 | buf[j++] = '<'; | |
| 2554 | buf[j++] = 'B'; | |
| 2555 | buf[j++] = 'R'; | |
| 2556 | buf[j++] = '>'; | |
| 2557 | } else { | |
| 2558 | buf[j++] = message[i]; | |
| 2559 | } | |
| 2560 | } | |
| 2561 | buf[j] = '\0'; | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2562 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2563 | if (strlen(buf) > c->maxlen) |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2564 | return -E2BIG; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2565 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2566 | buf2 = strip_html(buf); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2567 | if (strlen(buf2) > c->maxvis) { |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2568 | g_free(buf2); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2569 | return -E2BIG; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2570 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2571 | g_free(buf2); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2572 | |
| 2086 | 2573 | aim_chat_send_im(odata->sess, c->conn, 0, buf, strlen(buf)); |
| 2574 | g_free(buf); | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2575 | return 0; |
| 2086 | 2576 | } |
| 2577 | ||
| 2578 | static char **oscar_list_icon(int uc) { | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2579 | if (uc == 0) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2580 | return (char **)icon_online_xpm; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2581 | if (uc & 0x7fc0) { |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2582 | uc >>= 6; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2583 | if (uc & AIM_ICQ_STATE_AWAY) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2584 | return icon_away_xpm; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2585 | if (uc & AIM_ICQ_STATE_DND) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2586 | return icon_dnd_xpm; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2587 | if (uc & AIM_ICQ_STATE_NA) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2588 | return icon_na_xpm; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2589 | if (uc & AIM_ICQ_STATE_OCCUPIED) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2590 | return icon_occ_xpm; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2591 | if (uc & AIM_ICQ_STATE_CHAT) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2592 | return icon_ffc_xpm; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
2593 | if (uc & AIM_ICQ_STATE_INVISIBLE) |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2594 | return icon_offline_xpm; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2595 | return icon_online_xpm; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2596 | } |
| 2086 | 2597 | if (uc & UC_UNAVAILABLE) |
| 2598 | return (char **)away_icon_xpm; | |
| 2689 | 2599 | if (uc & UC_AB) |
| 2679 | 2600 | return (char **)ab_xpm; |
| 2086 | 2601 | if (uc & UC_AOL) |
| 2602 | return (char **)aol_icon_xpm; | |
| 2603 | if (uc & UC_ADMIN) | |
| 2604 | return (char **)admin_icon_xpm; | |
| 2605 | if (uc & UC_UNCONFIRMED) | |
| 2606 | return (char **)dt_icon_xpm; | |
|
2297
d957c91e8562
[gaim-migrate @ 2307]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2288
diff
changeset
|
2607 | if (uc & UC_NORMAL) |
|
d957c91e8562
[gaim-migrate @ 2307]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2288
diff
changeset
|
2608 | return (char **)free_icon_xpm; |
| 2086 | 2609 | return NULL; |
| 2610 | } | |
| 2611 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2612 | static int gaim_directim_initiate(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2613 | va_list ap; |
| 2614 | struct gaim_connection *gc = sess->aux_data; | |
| 2615 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2616 | aim_conn_t *newconn, *listenerconn; |
|
2235
8828cb249372
[gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2232
diff
changeset
|
2617 | struct conversation *cnv; |
| 2086 | 2618 | struct direct_im *dim; |
| 2619 | char buf[256]; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2620 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2621 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2622 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2623 | newconn = va_arg(ap, aim_conn_t *); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2624 | listenerconn = va_arg(ap, aim_conn_t *); |
| 2086 | 2625 | va_end(ap); |
| 2626 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2627 | aim_conn_close(listenerconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2628 | aim_conn_kill(sess, &listenerconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2629 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2630 | sn = g_strdup(aim_directim_getsn(newconn)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2631 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2632 | debug_printf("DirectIM: initiate success to %s\n", sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2633 | dim = find_direct_im(od, sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2634 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2635 | if (!(cnv = find_conversation(sn))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2636 | cnv = new_conversation(sn); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2637 | gaim_input_remove(dim->watcher); |
| 2086 | 2638 | dim->conn = newconn; |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2639 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, |
| 2086 | 2640 | oscar_callback, dim->conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2641 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2642 | g_free(sn); |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
2643 | write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1); |
| 2086 | 2644 | |
| 2645 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, | |
| 2646 | gaim_directim_incoming, 0); | |
| 2647 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, | |
| 2648 | gaim_directim_typing, 0); | |
| 2649 | ||
| 2650 | return 1; | |
| 2651 | } | |
| 2652 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2653 | static int gaim_directim_incoming(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2654 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2655 | char *msg, *sn; |
| 2086 | 2656 | struct gaim_connection *gc = sess->aux_data; |
| 2657 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2658 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2659 | sn = va_arg(ap, char *); |
| 2086 | 2660 | msg = va_arg(ap, char *); |
| 2661 | va_end(ap); | |
| 2662 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2663 | debug_printf("Got DirectIM message from %s\n", sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2664 | |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
2665 | serv_got_im(gc, sn, msg, 0, time(NULL), -1); |
| 2086 | 2666 | |
| 2667 | return 1; | |
| 2668 | } | |
| 2669 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2670 | static int gaim_directim_typing(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2671 | va_list ap; |
| 2672 | char *sn; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2673 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2674 | va_start(ap, fr); |
| 2086 | 2675 | sn = va_arg(ap, char *); |
| 2676 | va_end(ap); | |
| 2677 | ||
| 2678 | /* I had to leave this. It's just too funny. It reminds me of my sister. */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2679 | debug_printf("ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn); |
| 2086 | 2680 | |
| 2681 | return 1; | |
| 2682 | } | |
| 2683 | ||
| 2684 | struct ask_do_dir_im { | |
| 2685 | char *who; | |
| 2686 | struct gaim_connection *gc; | |
| 2687 | }; | |
| 2688 | ||
|
2235
8828cb249372
[gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2232
diff
changeset
|
2689 | static void oscar_cancel_direct_im(gpointer obj, struct ask_do_dir_im *data) { |
| 2086 | 2690 | g_free(data); |
| 2691 | } | |
| 2692 | ||
|
2235
8828cb249372
[gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2232
diff
changeset
|
2693 | static void oscar_direct_im(gpointer obj, struct ask_do_dir_im *data) { |
| 2086 | 2694 | struct gaim_connection *gc = data->gc; |
| 2695 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; | |
| 2696 | struct direct_im *dim; | |
| 2697 | ||
| 2698 | dim = find_direct_im(od, data->who); | |
| 2699 | if (dim) { | |
| 2700 | do_error_dialog("Direct IM request already pending.", "Unable"); | |
| 2701 | return; | |
| 2702 | } | |
| 2703 | dim = g_new0(struct direct_im, 1); | |
| 2704 | dim->gc = gc; | |
| 2705 | g_snprintf(dim->name, sizeof dim->name, "%s", data->who); | |
| 2706 | ||
|
2717
b97d1ea4e28c
[gaim-migrate @ 2730]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2713
diff
changeset
|
2707 | dim->conn = aim_directim_initiate(od->sess, data->who); |
| 2086 | 2708 | if (dim->conn != NULL) { |
| 2709 | od->direct_ims = g_slist_append(od->direct_ims, dim); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
2710 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, |
| 2086 | 2711 | oscar_callback, dim->conn); |
| 2712 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINITIATE, | |
| 2713 | gaim_directim_initiate, 0); | |
| 2714 | } else { | |
| 2715 | do_error_dialog(_("Unable to open Direct IM"), _("Error")); | |
| 2716 | g_free(dim); | |
| 2717 | } | |
| 2718 | } | |
| 2719 | ||
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2720 | static void oscar_ask_direct_im(struct gaim_connection *gc, gchar *who) { |
| 2086 | 2721 | char buf[BUF_LONG]; |
| 2722 | struct ask_do_dir_im *data = g_new0(struct ask_do_dir_im, 1); | |
| 2723 | data->who = who; | |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2724 | data->gc = gc; |
| 2086 | 2725 | g_snprintf(buf, sizeof(buf), _("You have selected to open a Direct IM connection with %s." |
| 2726 | " Doing this will let them see your IP address, and may be" | |
| 2727 | " a security risk. Do you wish to continue?"), who); | |
| 2728 | do_ask_dialog(buf, data, oscar_direct_im, oscar_cancel_direct_im); | |
| 2729 | } | |
| 2730 | ||
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2731 | static void oscar_get_away_msg(struct gaim_connection *gc, char *who) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2732 | struct oscar_data *od = gc->proto_data; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2733 | od->evilhack = g_slist_append(od->evilhack, g_strdup(normalize(who))); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2734 | oscar_get_info(gc, who); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2735 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2736 | |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2737 | static GList *oscar_buddy_menu(struct gaim_connection *gc, char *who) { |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2738 | GList *m = NULL; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2739 | struct proto_buddy_menu *pbm; |
| 2086 | 2740 | char *n = g_strdup(normalize(gc->username)); |
|
2833
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2741 | struct oscar_data *odata = gc->proto_data; |
| 2086 | 2742 | |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2743 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2744 | pbm->label = _("Get Info"); |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2745 | pbm->callback = oscar_get_info; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2746 | pbm->gc = gc; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2747 | m = g_list_append(m, pbm); |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2748 | |
|
2833
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2749 | if (!odata->icq) { |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2750 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
2833
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2751 | pbm->label = _("Get Away Msg"); |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2752 | pbm->callback = oscar_get_away_msg; |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2753 | pbm->gc = gc; |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2754 | m = g_list_append(m, pbm); |
|
2833
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2755 | |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2756 | if (strcmp(n, normalize(who))) { |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2757 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2758 | pbm->label = _("Direct IM"); |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2759 | pbm->callback = oscar_ask_direct_im; |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2760 | pbm->gc = gc; |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2761 | m = g_list_append(m, pbm); |
|
7062e95f00c3
[gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2822
diff
changeset
|
2762 | } |
| 2086 | 2763 | } |
| 2764 | g_free(n); | |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2765 | |
|
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
2766 | return m; |
| 2086 | 2767 | } |
| 2768 | ||
|
2154
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2769 | static GList *oscar_user_opts() |
| 2086 | 2770 | { |
|
2154
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2771 | GList *m = NULL; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2772 | struct proto_user_opt *puo; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2773 | |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2774 | puo = g_new0(struct proto_user_opt, 1); |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2775 | puo->label = "Auth Host:"; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2776 | puo->def = "login.oscar.aol.com"; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2777 | puo->pos = USEROPT_AUTH; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2778 | m = g_list_append(m, puo); |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2779 | |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2780 | puo = g_new0(struct proto_user_opt, 1); |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2781 | puo->label = "Auth Port:"; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2782 | puo->def = "5190"; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2783 | puo->pos = USEROPT_AUTHPORT; |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2784 | m = g_list_append(m, puo); |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2785 | |
|
7d4835b44b85
[gaim-migrate @ 2164]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2141
diff
changeset
|
2786 | return m; |
| 2086 | 2787 | } |
| 2788 | ||
| 2789 | static void oscar_set_permit_deny(struct gaim_connection *gc) { | |
| 2790 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; | |
| 2791 | GSList *list; | |
| 2792 | char buf[MAXMSGLEN]; | |
| 2793 | int at; | |
| 2794 | ||
| 2795 | switch(gc->permdeny) { | |
| 2796 | case 1: | |
| 2797 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gc->username); | |
| 2798 | break; | |
| 2799 | case 2: | |
| 2800 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gc->username); | |
| 2801 | break; | |
| 2802 | case 3: | |
| 2803 | list = gc->permit; | |
| 2804 | at = 0; | |
| 2805 | while (list) { | |
| 2806 | at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data); | |
| 2807 | list = list->next; | |
| 2808 | } | |
| 2809 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf); | |
| 2810 | break; | |
| 2811 | case 4: | |
| 2812 | list = gc->deny; | |
| 2813 | at = 0; | |
| 2814 | while (list) { | |
| 2815 | at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data); | |
| 2816 | list = list->next; | |
| 2817 | } | |
| 2818 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf); | |
| 2819 | break; | |
| 2820 | default: | |
| 2821 | break; | |
| 2822 | } | |
|
2597
51ca3fb939c9
[gaim-migrate @ 2610]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2590
diff
changeset
|
2823 | signoff_blocked(gc); |
| 2086 | 2824 | } |
| 2825 | ||
| 2826 | static void oscar_add_permit(struct gaim_connection *gc, char *who) { | |
| 2827 | if (gc->permdeny != 3) return; | |
| 2828 | oscar_set_permit_deny(gc); | |
| 2829 | } | |
| 2830 | ||
| 2831 | static void oscar_add_deny(struct gaim_connection *gc, char *who) { | |
| 2832 | if (gc->permdeny != 4) return; | |
| 2833 | oscar_set_permit_deny(gc); | |
| 2834 | } | |
| 2835 | ||
| 2836 | static void oscar_rem_permit(struct gaim_connection *gc, char *who) { | |
| 2837 | if (gc->permdeny != 3) return; | |
| 2838 | oscar_set_permit_deny(gc); | |
| 2839 | } | |
| 2840 | ||
| 2841 | static void oscar_rem_deny(struct gaim_connection *gc, char *who) { | |
| 2842 | if (gc->permdeny != 4) return; | |
| 2843 | oscar_set_permit_deny(gc); | |
| 2844 | } | |
| 2845 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2846 | static GList *oscar_away_states(struct gaim_connection *gc) |
| 2086 | 2847 | { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2848 | struct oscar_data *od = gc->proto_data; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2849 | GList *m = NULL; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2850 | |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2851 | if (!od->icq) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2852 | return g_list_append(m, GAIM_AWAY_CUSTOM); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2853 | |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2854 | m = g_list_append(m, "Online"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2855 | m = g_list_append(m, "Away"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2856 | m = g_list_append(m, "Do Not Disturb"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2857 | m = g_list_append(m, "Not Available"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2858 | m = g_list_append(m, "Occupied"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2859 | m = g_list_append(m, "Free For Chat"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2860 | m = g_list_append(m, "Invisible"); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2861 | |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
2862 | return m; |
| 2086 | 2863 | } |
| 2864 | ||
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2865 | static void oscar_change_email(struct gaim_connection *gc, char *email) |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2866 | { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2867 | struct oscar_data *od = gc->proto_data; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2868 | aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2869 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2870 | if (conn) { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2871 | aim_admin_setemail(od->sess, conn, email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2872 | } else { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2873 | od->setemail = TRUE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2874 | od->email = g_strdup(email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2875 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2876 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2877 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2878 | |
| 2086 | 2879 | static void oscar_do_action(struct gaim_connection *gc, char *act) |
| 2880 | { | |
| 2881 | struct oscar_data *od = gc->proto_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2882 | aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH); |
| 2086 | 2883 | |
| 2884 | if (!strcmp(act, "Set User Info")) { | |
| 2885 | show_set_info(gc); | |
| 2886 | } else if (!strcmp(act, "Change Password")) { | |
| 2887 | show_change_passwd(gc); | |
| 2888 | } else if (!strcmp(act, "Confirm Account")) { | |
| 2889 | if (!conn) { | |
| 2890 | od->conf = TRUE; | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2891 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
| 2086 | 2892 | } else |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2893 | aim_admin_reqconfirm(od->sess, conn); |
| 2086 | 2894 | } else if (!strcmp(act, "Display Current Registered Address")) { |
| 2895 | if (!conn) { | |
| 2896 | od->reqemail = TRUE; | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2897 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
| 2086 | 2898 | } else |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2899 | aim_admin_getinfo(od->sess, conn, 0x11); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2900 | } else if (!strcmp(act, "Change Current Registered Address")) { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2901 | do_prompt_dialog("Change Address To: ", NULL, gc, oscar_change_email, NULL); |
| 2086 | 2902 | } else if (!strcmp(act, "Search for Buddy by Email")) { |
| 2903 | show_find_email(gc); | |
| 2904 | } | |
| 2905 | } | |
| 2906 | ||
| 2907 | static GList *oscar_actions() | |
| 2908 | { | |
| 2909 | GList *m = NULL; | |
| 2910 | ||
| 2911 | m = g_list_append(m, "Set User Info"); | |
| 2912 | m = g_list_append(m, NULL); | |
| 2913 | m = g_list_append(m, "Change Password"); | |
| 2914 | m = g_list_append(m, "Confirm Account"); | |
| 2915 | m = g_list_append(m, "Display Current Registered Address"); | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
2916 | m = g_list_append(m, "Change Current Registered Address"); |
| 2086 | 2917 | m = g_list_append(m, NULL); |
| 2918 | m = g_list_append(m, "Search for Buddy by Email"); | |
| 2919 | ||
| 2920 | return m; | |
| 2921 | } | |
| 2922 | ||
| 2923 | static void oscar_change_passwd(struct gaim_connection *gc, char *old, char *new) | |
| 2924 | { | |
| 2925 | struct oscar_data *od = gc->proto_data; | |
| 2926 | if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) { | |
| 2927 | od->chpass = TRUE; | |
| 2928 | od->oldp = g_strdup(old); | |
| 2929 | od->newp = g_strdup(new); | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2930 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
| 2086 | 2931 | } else { |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
2932 | aim_admin_changepasswd(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH), |
| 2086 | 2933 | new, old); |
| 2934 | } | |
| 2935 | } | |
| 2936 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2937 | static void oscar_convo_closed(struct gaim_connection *gc, char *who) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2938 | { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2939 | struct oscar_data *od = gc->proto_data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2940 | struct direct_im *dim = find_direct_im(od, who); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2941 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2942 | if (!dim) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2943 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2944 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2945 | od->direct_ims = g_slist_remove(od->direct_ims, dim); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2946 | gaim_input_remove(dim->watcher); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2947 | aim_conn_kill(od->sess, &dim->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2948 | g_free(dim); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2949 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2950 | |
| 2086 | 2951 | static struct prpl *my_protocol = NULL; |
| 2952 | ||
| 2953 | void oscar_init(struct prpl *ret) { | |
| 2954 | ret->protocol = PROTO_OSCAR; | |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
2955 | ret->options = OPT_PROTO_BUDDY_ICON; |
| 2086 | 2956 | ret->name = oscar_name; |
| 2957 | ret->list_icon = oscar_list_icon; | |
| 2958 | ret->away_states = oscar_away_states; | |
| 2959 | ret->actions = oscar_actions; | |
| 2960 | ret->do_action = oscar_do_action; | |
| 2961 | ret->buddy_menu = oscar_buddy_menu; | |
| 2962 | ret->user_opts = oscar_user_opts; | |
| 2963 | ret->login = oscar_login; | |
| 2964 | ret->close = oscar_close; | |
| 2965 | ret->send_im = oscar_send_im; | |
| 2966 | ret->set_info = oscar_set_info; | |
| 2967 | ret->get_info = oscar_get_info; | |
| 2968 | ret->set_away = oscar_set_away; | |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
2969 | ret->get_away = oscar_get_away; |
| 2086 | 2970 | ret->set_dir = oscar_set_dir; |
| 2971 | ret->get_dir = NULL; /* Oscar really doesn't have this */ | |
| 2972 | ret->dir_search = oscar_dir_search; | |
| 2973 | ret->set_idle = oscar_set_idle; | |
| 2974 | ret->change_passwd = oscar_change_passwd; | |
| 2975 | ret->add_buddy = oscar_add_buddy; | |
| 2976 | ret->add_buddies = oscar_add_buddies; | |
| 2977 | ret->remove_buddy = oscar_remove_buddy; | |
| 2978 | ret->add_permit = oscar_add_permit; | |
| 2979 | ret->add_deny = oscar_add_deny; | |
| 2980 | ret->rem_permit = oscar_rem_permit; | |
| 2981 | ret->rem_deny = oscar_rem_deny; | |
| 2982 | ret->set_permit_deny = oscar_set_permit_deny; | |
| 2983 | ret->warn = oscar_warn; | |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
2984 | ret->chat_info = oscar_chat_info; |
| 2086 | 2985 | ret->join_chat = oscar_join_chat; |
| 2986 | ret->chat_invite = oscar_chat_invite; | |
| 2987 | ret->chat_leave = oscar_chat_leave; | |
| 2988 | ret->chat_whisper = NULL; | |
| 2989 | ret->chat_send = oscar_chat_send; | |
| 2990 | ret->keepalive = oscar_keepalive; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2991 | ret->convo_closed = oscar_convo_closed; |
| 2086 | 2992 | |
| 2993 | my_protocol = ret; | |
| 2994 | } | |
| 2995 | ||
| 2996 | #ifndef STATIC | |
| 2997 | ||
| 2998 | char *gaim_plugin_init(GModule *handle) | |
| 2999 | { | |
| 3000 | load_protocol(oscar_init, sizeof(struct prpl)); | |
| 3001 | return NULL; | |
| 3002 | } | |
| 3003 | ||
| 3004 | void gaim_plugin_remove() | |
| 3005 | { | |
| 3006 | struct prpl *p = find_prpl(PROTO_OSCAR); | |
| 3007 | if (p == my_protocol) | |
| 3008 | unload_protocol(p); | |
| 3009 | } | |
| 3010 | ||
| 3011 | char *name() | |
| 3012 | { | |
| 3013 | return "Oscar"; | |
| 3014 | } | |
| 3015 | ||
| 3016 | char *description() | |
| 3017 | { | |
|
2162
2a9f076b0af9
[gaim-migrate @ 2172]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2154
diff
changeset
|
3018 | return PRPL_DESC("Oscar"); |
| 2086 | 3019 | } |
| 3020 | ||
| 3021 | #endif |