Mercurial > pidgin
annotate src/protocols/oscar/aim.h @ 12478:8489040cf97b
[gaim-migrate @ 14789]
Patch to gaim-devel by Aleksander Piotrowski
"Looks like if one sets alias for particular buddy then alias_buddy callback
is not called. Following diff fixes that problem for me (verified with
jabber and my own protocol plugins) but I'm not sure if it is correct place
to call serv_alias_buddy() (as I'm not sure if this whole alias bug isn't
only my local problem ;)"
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 13 Dec 2005 23:25:24 +0000 |
parents | 9a0a6e74aafd |
children | 5b9ae793e2fb |
rev | line source |
---|---|
8978 | 1 /* |
2086 | 2 * Main libfaim header. Must be included in client for prototypes/macros. |
3 * | |
4 * "come on, i turned a chick lesbian; i think this is the hackish equivalent" | |
4194 | 5 * -- Josh Myer |
2086 | 6 * |
7 */ | |
8 | |
9 #ifndef __AIM_H__ | |
10 #define __AIM_H__ | |
11 | |
11159 | 12 #include "aim_cbtypes.h" |
2086 | 13 |
11253 | 14 #include "debug.h" |
11159 | 15 #include "internal.h" |
2086 | 16 |
17 #include <stdio.h> | |
18 #include <string.h> | |
19 #include <fcntl.h> | |
20 #include <sys/types.h> | |
21 #include <stdlib.h> | |
22 #include <stdarg.h> | |
23 #include <errno.h> | |
24 #include <time.h> | |
25 | |
3630 | 26 #ifndef _WIN32 |
2086 | 27 #include <sys/time.h> |
28 #include <unistd.h> | |
4617 | 29 #include <netdb.h> |
2086 | 30 #include <netinet/in.h> |
31 #include <sys/socket.h> | |
3630 | 32 #else |
8244
5e7ffea3f76a
[gaim-migrate @ 8967]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
8240
diff
changeset
|
33 #include "libc_interface.h" |
2086 | 34 #endif |
35 | |
6322 | 36 #ifdef __cplusplus |
37 extern "C" { | |
38 #endif | |
39 | |
11185 | 40 /* TODO: Remove these three typedefs and use guints everywhere. */ |
41 typedef guint8 fu8_t; | |
42 typedef guint16 fu16_t; | |
43 typedef guint32 fu32_t; | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
44 |
11185 | 45 typedef guint32 aim_snacid_t; |
46 typedef guint16 flap_seqnum_t; | |
2086 | 47 |
11338 | 48 #define WIN32_STATIC |
2086 | 49 #if defined(_WIN32) && !defined(WIN32_STATIC) |
50 /* | |
51 * For a win32 DLL, we define WIN32_INDLL if this file | |
11338 | 52 * is included while compiling the DLL. If it's not |
53 * defined (it's included in a client app), the symbols | |
2086 | 54 * will be imported instead of exported. |
55 */ | |
56 #ifdef WIN32_INDLL | |
57 #define faim_export __declspec(dllexport) | |
11399 | 58 #else |
2086 | 59 #define faim_export __declspec(dllimport) |
60 #endif /* WIN32_INDLL */ | |
61 #define faim_internal | |
62 #else | |
63 /* | |
64 * Nothing normally needed for unix... | |
65 */ | |
66 #define faim_export | |
67 #define faim_internal | |
68 #endif | |
69 | |
6322 | 70 #ifndef FALSE |
71 #define FALSE (0) | |
72 #endif | |
73 | |
4901 | 74 #ifndef TRUE |
6322 | 75 #define TRUE (!FALSE) |
4901 | 76 #endif |
77 | |
11338 | 78 #define FAIM_SNAC_HASH_SIZE 16 |
79 | |
80 /* | |
81 * Current Maximum Length for Screen Names (not including NULL) | |
2086 | 82 * |
83 * Currently only names up to 16 characters can be registered | |
8735
92cbf9713795
[gaim-migrate @ 9490]
Christian Hammond <chipx86@chipx86.com>
parents:
8708
diff
changeset
|
84 * however it is apparently legal for them to be larger. |
2086 | 85 */ |
4908 | 86 #define MAXSNLEN 97 |
2086 | 87 |
88 /* | |
89 * Current Maximum Length for Instant Messages | |
90 * | |
91 * This was found basically by experiment, but not wholly | |
92 * accurate experiment. It should not be regarded | |
93 * as completely correct. But its a decent approximation. | |
94 * | |
95 * Note that although we can send this much, its impossible | |
96 * for WinAIM clients (up through the latest (4.0.1957)) to | |
97 * send any more than 1kb. Amaze all your windows friends | |
98 * with utterly oversized instant messages! | |
99 * | |
100 * XXX: the real limit is the total SNAC size at 8192. Fix this. | |
11399 | 101 * |
2086 | 102 */ |
103 #define MAXMSGLEN 7987 | |
104 | |
105 /* | |
106 * Maximum size of a Buddy Icon. | |
107 */ | |
108 #define MAXICONLEN 7168 | |
109 #define AIM_ICONIDENT "AVT1picture.id" | |
110 | |
111 /* | |
112 * Current Maximum Length for Chat Room Messages | |
113 * | |
114 * This is actually defined by the protocol to be | |
115 * dynamic, but I have yet to see due cause to | |
116 * define it dynamically here. Maybe later. | |
117 * | |
118 */ | |
119 #define MAXCHATMSGLEN 512 | |
120 | |
5345 | 121 /** |
122 * Maximum length for the password of an ICQ account | |
123 */ | |
124 #define MAXICQPASSLEN 8 | |
125 | |
2086 | 126 #define AIM_MD5_STRING "AOL Instant Messenger (SM)" |
127 | |
128 /* | |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
129 * Client info. Filled in by the client and passed in to |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
130 * aim_send_login(). The information ends up getting passed to OSCAR |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
131 * through the initial login command. |
2086 | 132 * |
133 */ | |
134 struct client_info_s { | |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
135 const char *clientstring; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
136 fu16_t clientid; |
4070 | 137 fu16_t major; |
138 fu16_t minor; | |
139 fu16_t point; | |
140 fu16_t build; | |
141 fu32_t distrib; | |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
142 const char *country; /* two-letter abbrev */ |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
143 const char *lang; /* two-letter abbrev */ |
2086 | 144 }; |
145 | |
4070 | 146 /* Needs to be checked */ |
3458 | 147 #define CLIENTINFO_AIM_3_5_1670 { \ |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
148 "AOL Instant Messenger (SM), version 3.5.1670/WIN32", \ |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
149 0x0004, \ |
4070 | 150 0x0003, 0x0005, \ |
151 0x0000, 0x0686, \ | |
152 0x0000002a, \ | |
153 "us", "en", \ | |
154 } | |
155 | |
156 /* Needs to be checked */ | |
157 /* Latest winaim without ssi */ | |
158 #define CLIENTINFO_AIM_4_1_2010 { \ | |
159 "AOL Instant Messenger (SM), version 4.1.2010/WIN32", \ | |
160 0x0004, \ | |
161 0x0004, 0x0001, \ | |
162 0x0000, 0x07da, \ | |
163 0x0000004b, \ | |
164 "us", "en", \ | |
165 } | |
166 | |
167 /* Needs to be checked */ | |
168 #define CLIENTINFO_AIM_4_3_2188 { \ | |
169 "AOL Instant Messenger (SM), version 4.3.2188/WIN32", \ | |
170 0x0109, \ | |
171 0x0400, 0x0003, \ | |
172 0x0000, 0x088c, \ | |
173 0x00000086, \ | |
174 "us", "en", \ | |
2086 | 175 } |
176 | |
4070 | 177 /* Needs to be checked */ |
178 #define CLIENTINFO_AIM_4_8_2540 { \ | |
179 "AOL Instant Messenger (SM), version 4.8.2540/WIN32", \ | |
180 0x0109, \ | |
181 0x0004, 0x0008, \ | |
182 0x0000, 0x09ec, \ | |
183 0x000000af, \ | |
184 "us", "en", \ | |
2086 | 185 } |
186 | |
4070 | 187 /* Needs to be checked */ |
3595 | 188 #define CLIENTINFO_AIM_5_0_2938 { \ |
4070 | 189 "AOL Instant Messenger, version 5.0.2938/WIN32", \ |
190 0x0109, \ | |
191 0x0005, 0x0000, \ | |
192 0x0000, 0x0b7a, \ | |
193 0x00000000, \ | |
194 "us", "en", \ | |
3595 | 195 } |
196 | |
4070 | 197 #define CLIENTINFO_AIM_5_1_3036 { \ |
198 "AOL Instant Messenger, version 5.1.3036/WIN32", \ | |
199 0x0109, \ | |
200 0x0005, 0x0001, \ | |
201 0x0000, 0x0bdc, \ | |
202 0x000000d2, \ | |
203 "us", "en", \ | |
204 } | |
205 | |
7253 | 206 #define CLIENTINFO_AIM_5_5_3415 { \ |
207 "AOL Instant Messenger, version 5.5.3415/WIN32", \ | |
208 0x0109, \ | |
209 0x0005, 0x0005, \ | |
210 0x0000, 0x0057, \ | |
211 0x000000ef, \ | |
212 "us", "en", \ | |
213 } | |
214 | |
10464 | 215 #define CLIENTINFO_AIM_5_9_3702 { \ |
216 "AOL Instant Messenger, version 5.9.3702/WIN32", \ | |
217 0x0109, \ | |
218 0x0005, 0x0009, \ | |
219 0x0000, 0x0e76, \ | |
220 0x00000111, \ | |
221 "us", "en", \ | |
222 } | |
223 | |
5917 | 224 #define CLIENTINFO_ICHAT_1_0 { \ |
225 "Apple iChat", \ | |
226 0x311a, \ | |
227 0x0001, 0x0000, \ | |
228 0x0000, 0x003c, \ | |
229 0x000000c6, \ | |
230 "us", "en", \ | |
231 } | |
232 | |
4070 | 233 /* Needs to be checked */ |
3458 | 234 #define CLIENTINFO_ICQ_4_65_3281 { \ |
235 "ICQ Inc. - Product of ICQ (TM) 2000b.4.65.1.3281.85", \ | |
236 0x010a, \ | |
4070 | 237 0x0004, 0x0041, \ |
238 0x0001, 0x0cd1, \ | |
239 0x00000055, \ | |
240 "us", "en", \ | |
3458 | 241 } |
242 | |
4070 | 243 /* Needs to be checked */ |
3458 | 244 #define CLIENTINFO_ICQ_5_34_3728 { \ |
245 "ICQ Inc. - Product of ICQ (TM).2002a.5.34.1.3728.85", \ | |
246 0x010a, \ | |
4070 | 247 0x0005, 0x0022, \ |
248 0x0001, 0x0e8f, \ | |
249 0x00000055, \ | |
250 "us", "en", \ | |
3458 | 251 } |
252 | |
4071 | 253 #define CLIENTINFO_ICQ_5_45_3777 { \ |
4070 | 254 "ICQ Inc. - Product of ICQ (TM).2003a.5.45.1.3777.85", \ |
255 0x010a, \ | |
256 0x0005, 0x002d, \ | |
257 0x0001, 0x0ec1, \ | |
258 0x00000055, \ | |
259 "us", "en", \ | |
260 } | |
261 | |
7313 | 262 #define CLIENTINFO_ICQBASIC_14_3_1068 { \ |
4070 | 263 "ICQBasic", \ |
264 0x010a, \ | |
265 0x0014, 0x0003, \ | |
266 0x0000, 0x042c, \ | |
267 0x0000043d, \ | |
268 "us", "en", \ | |
269 } | |
270 | |
7313 | 271 #define CLIENTINFO_NETSCAPE_7_0_1 { \ |
4317 | 272 "Netscape 2000 an approved user of AOL Instant Messenger (SM)", \ |
273 0x1d0d, \ | |
274 0x0007, 0x0000, \ | |
275 0x0001, 0x0000, \ | |
276 0x00000058, \ | |
277 "us", "en", \ | |
278 } | |
279 | |
12049 | 280 #define CLIENTINFO_GAIM { \ |
12178 | 281 "Gaim/" VERSION, \ |
12177 | 282 0x0109, \ |
283 0x0005, 0x0001, \ | |
284 0x0000, 0x0bdc, \ | |
285 0x000000d2, \ | |
12049 | 286 "us", "en", \ |
287 } | |
288 | |
4071 | 289 #define CLIENTINFO_AIM_KNOWNGOOD CLIENTINFO_AIM_5_1_3036 |
290 #define CLIENTINFO_ICQ_KNOWNGOOD CLIENTINFO_ICQ_5_45_3777 | |
2086 | 291 |
12049 | 292 /* |
293 * These could be arbitrary, but its easier to use the actual AIM values | |
2086 | 294 */ |
4617 | 295 #define AIM_CONN_TYPE_BOS 0x0002 |
296 #define AIM_CONN_TYPE_ADS 0x0005 | |
297 #define AIM_CONN_TYPE_AUTH 0x0007 | |
7806 | 298 #define AIM_CONN_TYPE_CHATNAV 0x000d |
4617 | 299 #define AIM_CONN_TYPE_CHAT 0x000e |
7806 | 300 #define AIM_CONN_TYPE_SEARCH 0x000f |
4804 | 301 #define AIM_CONN_TYPE_ICON 0x0010 |
4617 | 302 #define AIM_CONN_TYPE_EMAIL 0x0018 |
2086 | 303 |
4617 | 304 /* they start getting arbitrary for rendezvous stuff =) */ |
11369 | 305 #define AIM_CONN_TYPE_RENDEZVOUS_PROXY 0xfffd /* these speak a strange language */ |
4617 | 306 #define AIM_CONN_TYPE_RENDEZVOUS 0xfffe /* these do not speak FLAP! */ |
307 #define AIM_CONN_TYPE_LISTENER 0xffff /* socket waiting for accept() */ | |
2086 | 308 |
11369 | 309 /* Command types for doing a rendezvous proxy login |
310 * Thanks to Keith Lea and the Joust project for documenting these commands well */ | |
311 #define AIM_RV_PROXY_PACKETVER_DFLT 0x044a | |
312 #define AIM_RV_PROXY_ERROR 0x0001 | |
313 #define AIM_RV_PROXY_INIT_SEND 0x0002 /* First command sent when creating a connection */ | |
314 #define AIM_RV_PROXY_INIT_RECV 0x0004 /* First command sent when receiving existing connection */ | |
315 #define AIM_RV_PROXY_ACK 0x0003 | |
316 #define AIM_RV_PROXY_READY 0x0005 | |
317 | |
318 /* Number of bytes expected in each of the above packets, including the 2 bytes specifying length */ | |
319 #define AIM_RV_PROXY_ERROR_LEN 14 | |
320 #define AIM_RV_PROXY_INIT_SEND_LEN 55 | |
321 #define AIM_RV_PROXY_INIT_RECV_LEN 57 | |
322 #define AIM_RV_PROXY_ACK_LEN 18 | |
323 #define AIM_RV_PROXY_READY_LEN 12 | |
324 #define AIM_RV_PROXY_HDR_LEN 12 /* Bytes in just the header alone */ | |
325 | |
326 /* Default values for unknown/unused values in rendezvous proxy negotiation packets */ | |
327 #define AIM_RV_PROXY_SERVER_FLAGS 0x0220 /* Default flags sent by proxy server */ | |
328 #define AIM_RV_PROXY_CLIENT_FLAGS 0x0000 /* Default flags sent by client */ | |
329 #define AIM_RV_PROXY_UNKNOWNA_DFLT 0x00000000 /* Default value for an unknown block */ | |
330 #define AIM_RV_PROXY_SERVER_URL "ars.oscar.aol.com" | |
331 #define AIM_RV_PROXY_CONNECT_PORT 5190 /* The port we should always connect to */ | |
332 | |
333 /* What is the purpose of this transfer? (Who will end up with a new file?) | |
334 * These values are used in oft_info->send_or_recv */ | |
335 #define AIM_XFER_SEND 0x0001 | |
336 #define AIM_XFER_RECV 0x0002 | |
337 | |
338 /* Via what method is the data getting routed? | |
339 * These values are used in oft_info->method */ | |
340 #define AIM_XFER_DIRECT 0x0001 /* Direct connection; receiver connects to sender */ | |
341 #define AIM_XFER_REDIR 0x0002 /* Redirected connection; sender connects to receiver */ | |
342 #define AIM_XFER_PROXY 0x0003 /* Proxied connection */ | |
343 | |
344 /* Who requested the proxy? | |
345 * The difference between a stage 2 and stage 3 proxied transfer is that the receiver does the | |
346 * initial login for a stage 2, but the sender must do it for a stage 3. | |
347 * These values are used in oft_info->stage */ | |
348 #define AIM_XFER_PROXY_NONE 0x0001 | |
349 #define AIM_XFER_PROXY_STG1 0x0002 /* Sender requested a proxy be used (stage1) */ | |
350 #define AIM_XFER_PROXY_STG2 0x0003 /* Receiver requested a proxy be used (stage2) */ | |
351 #define AIM_XFER_PROXY_STG3 0x0004 /* Receiver requested a proxy be used (stage3) */ | |
352 | |
2086 | 353 /* |
354 * Subtypes, we need these for OFT stuff. | |
355 */ | |
4901 | 356 #define AIM_CONN_SUBTYPE_OFT_DIRECTIM 0x0001 |
357 #define AIM_CONN_SUBTYPE_OFT_GETFILE 0x0002 | |
358 #define AIM_CONN_SUBTYPE_OFT_SENDFILE 0x0003 | |
359 #define AIM_CONN_SUBTYPE_OFT_BUDDYICON 0x0004 | |
11369 | 360 #define AIM_CONN_SUBTYPE_OFT_VOICE 0x0005 |
2086 | 361 |
362 /* | |
363 * Status values returned from aim_conn_new(). ORed together. | |
364 */ | |
4901 | 365 #define AIM_CONN_STATUS_READY 0x0001 |
366 #define AIM_CONN_STATUS_INTERNALERR 0x0002 | |
367 #define AIM_CONN_STATUS_RESOLVERR 0x0040 | |
368 #define AIM_CONN_STATUS_CONNERR 0x0080 | |
369 #define AIM_CONN_STATUS_INPROGRESS 0x0100 | |
2086 | 370 |
4901 | 371 #define AIM_FRAMETYPE_FLAP 0x0000 |
372 #define AIM_FRAMETYPE_OFT 0x0001 | |
2086 | 373 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
374 typedef struct aim_conn_s { |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
375 int fd; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
376 fu16_t type; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
377 fu16_t subtype; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
378 flap_seqnum_t seqnum; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
379 fu32_t status; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
380 void *priv; /* misc data the client may want to store */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
381 void *internal; /* internal conn-specific libfaim data */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
382 time_t lastactivity; /* time of last transmit */ |
11369 | 383 int forcedlatency; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
384 void *handlerlist; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
385 void *sessv; /* pointer to parent session */ |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
386 void *inside; /* only accessible from inside libfaim */ |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
387 struct aim_conn_s *next; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
388 } aim_conn_t; |
2086 | 389 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
390 /* |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
391 * Byte Stream type. Sort of. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
392 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
393 * Use of this type serves a couple purposes: |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
394 * - Buffer/buflen pairs are passed all around everywhere. This turns |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
395 * that into one value, as well as abstracting it slightly. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
396 * - Through the abstraction, it is possible to enable bounds checking |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
397 * for robustness at the cost of performance. But a clean failure on |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
398 * weird packets is much better than a segfault. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
399 * - I like having variables named "bs". |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
400 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
401 * Don't touch the insides of this struct. Or I'll have to kill you. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
402 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
403 */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
404 typedef struct aim_bstream_s { |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
405 fu8_t *data; |
3033 | 406 fu32_t len; |
407 fu32_t offset; | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
408 } aim_bstream_t; |
2086 | 409 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
410 typedef struct aim_frame_s { |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
411 fu8_t hdrtype; /* defines which piece of the union to use */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
412 union { |
11369 | 413 struct { |
7806 | 414 fu8_t channel; |
10021 | 415 flap_seqnum_t seqnum; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
416 } flap; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
417 struct { |
7806 | 418 fu8_t magic[4]; /* ODC2 or OFT2 */ |
3952 | 419 fu16_t hdrlen; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
420 fu16_t type; |
3952 | 421 } rend; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
422 } hdr; |
7806 | 423 aim_bstream_t data; /* payload stream */ |
424 aim_conn_t *conn; /* the connection it came in on/is going out on */ | |
425 fu8_t handled; /* 0 = new, !0 = been handled */ | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
426 struct aim_frame_s *next; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
427 } aim_frame_t; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
428 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
429 typedef struct aim_msgcookie_s { |
11399 | 430 guchar cookie[8]; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
431 int type; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
432 void *data; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
433 time_t addtime; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
434 struct aim_msgcookie_s *next; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
435 } aim_msgcookie_t; |
2086 | 436 |
437 /* | |
11399 | 438 * AIM Session: The main client-data interface. |
2086 | 439 * |
440 */ | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
441 typedef struct aim_session_s { |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
442 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
443 /* ---- Client Accessible ------------------------ */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
444 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
445 /* Our screen name. */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
446 char sn[MAXSNLEN+1]; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
447 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
448 /* |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
449 * Pointer to anything the client wants to |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
450 * explicitly associate with this session. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
451 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
452 * This is for use in the callbacks mainly. In any |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
453 * callback, you can access this with sess->aux_data. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
454 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
455 */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
456 void *aux_data; |
2086 | 457 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
458 /* ---- Internal Use Only ------------------------ */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
459 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
460 /* Connection information */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
461 aim_conn_t *connlist; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
462 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
463 /* |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
464 * Transmit/receive queues. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
465 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
466 * These are only used when you don't use your own lowlevel |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
467 * I/O. I don't suggest that you use libfaim's internal I/O. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
468 * Its really bad and the API/event model is quirky at best. |
11369 | 469 * |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
470 */ |
8982 | 471 aim_frame_t *queue_outgoing; |
10021 | 472 aim_frame_t *queue_incoming; |
2086 | 473 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
474 /* |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
475 * Tx Enqueuing function. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
476 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
477 * This is how you override the transmit direction of libfaim's |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
478 * internal I/O. This function will be called whenever it needs |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
479 * to send something. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
480 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
481 */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
482 int (*tx_enqueue)(struct aim_session_s *, aim_frame_t *); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
483 |
4901 | 484 void *modlistv; |
2086 | 485 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
486 struct { |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
487 char server[128]; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
488 char username[128]; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
489 char password[128]; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
490 } socksproxy; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
491 |
10035 | 492 fu8_t nonblocking; |
2086 | 493 |
4901 | 494 /* |
11154 | 495 * Outstanding snac handling |
4901 | 496 * |
497 * XXX: Should these be per-connection? -mid | |
498 */ | |
499 void *snac_hash[FAIM_SNAC_HASH_SIZE]; | |
500 aim_snacid_t snacid_next; | |
501 | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
502 aim_msgcookie_t *msgcookies; |
4624 | 503 struct aim_icq_info *icq_info; |
4826 | 504 struct aim_oft_info *oft_info; |
4901 | 505 struct aim_authresp_info *authinfo; |
7045 | 506 struct aim_emailinfo *emailinfo; |
507 | |
508 struct { | |
509 struct aim_userinfo_s *userinfo; | |
7466 | 510 struct userinfo_node *torequest; |
511 struct userinfo_node *requested; | |
7045 | 512 int waiting_for_response; |
513 } locate; | |
2086 | 514 |
4901 | 515 /* Server-stored information (ssi) */ |
516 struct { | |
517 int received_data; | |
518 fu16_t numitems; | |
519 struct aim_ssi_item *official; | |
520 struct aim_ssi_item *local; | |
521 struct aim_ssi_tmp *pending; | |
522 time_t timestamp; | |
523 int waiting_for_ack; | |
524 } ssi; | |
525 } aim_session_t; | |
2086 | 526 |
2507
1069b0940237
[gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2421
diff
changeset
|
527 /* Valid for calling aim_icq_setstatus() and for aim_userinfo_t->icqinfo.status */ |
11369 | 528 #define AIM_ICQ_STATE_NORMAL 0x00000000 |
529 #define AIM_ICQ_STATE_AWAY 0x00000001 | |
530 #define AIM_ICQ_STATE_DND 0x00000002 | |
531 #define AIM_ICQ_STATE_OUT 0x00000004 | |
532 #define AIM_ICQ_STATE_BUSY 0x00000010 | |
533 #define AIM_ICQ_STATE_CHAT 0x00000020 | |
534 #define AIM_ICQ_STATE_INVISIBLE 0x00000100 | |
535 #define AIM_ICQ_STATE_WEBAWARE 0x00010000 | |
536 #define AIM_ICQ_STATE_HIDEIP 0x00020000 | |
537 #define AIM_ICQ_STATE_BIRTHDAY 0x00080000 | |
4342 | 538 #define AIM_ICQ_STATE_DIRECTDISABLED 0x00100000 |
11369 | 539 #define AIM_ICQ_STATE_ICQHOMEPAGE 0x00200000 |
4342 | 540 #define AIM_ICQ_STATE_DIRECTREQUIREAUTH 0x10000000 |
541 #define AIM_ICQ_STATE_DIRECTCONTACTLIST 0x20000000 | |
2507
1069b0940237
[gaim-migrate @ 2520]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2421
diff
changeset
|
542 |
2086 | 543 /* |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
544 * Get command from connections |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
545 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
546 * aim_get_commmand() is the libfaim lowlevel I/O in the receive direction. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
547 * XXX Make this easily overridable. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
548 * |
2086 | 549 */ |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
550 faim_export int aim_get_command(aim_session_t *, aim_conn_t *); |
2086 | 551 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
552 /* |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
553 * Dispatch commands that are in the rx queue. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
554 */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
555 faim_export void aim_rxdispatch(aim_session_t *); |
2086 | 556 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
557 faim_export int aim_debugconn_sendconnect(aim_session_t *sess, aim_conn_t *conn); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
558 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
559 faim_export int aim_logoff(aim_session_t *); |
2086 | 560 |
10344 | 561 #if !defined(FAIM_INTERNAL) |
2086 | 562 /* the library should never call aim_conn_kill */ |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
563 faim_export void aim_conn_kill(aim_session_t *sess, aim_conn_t **deadconn); |
2086 | 564 #endif |
565 | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
566 typedef int (*aim_rxcallback_t)(aim_session_t *, aim_frame_t *, ...); |
2086 | 567 |
4901 | 568 |
569 /* auth.c */ | |
2704 | 570 struct aim_clientrelease { |
571 char *name; | |
572 fu32_t build; | |
573 char *url; | |
574 char *info; | |
575 }; | |
576 | |
577 struct aim_authresp_info { | |
578 char *sn; | |
579 fu16_t errorcode; | |
580 char *errorurl; | |
581 fu16_t regstatus; | |
582 char *email; | |
583 char *bosip; | |
4293 | 584 fu16_t cookielen; |
2704 | 585 fu8_t *cookie; |
3912 | 586 char *chpassurl; |
2704 | 587 struct aim_clientrelease latestrelease; |
588 struct aim_clientrelease latestbeta; | |
589 }; | |
590 | |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
591 /* Callback data for redirect. */ |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
592 struct aim_redirect_data { |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
593 fu16_t group; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
594 const char *ip; |
4293 | 595 fu16_t cookielen; |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
596 const fu8_t *cookie; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
597 struct { /* group == AIM_CONN_TYPE_CHAT */ |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
598 fu16_t exchange; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
599 const char *room; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
600 fu16_t instance; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
601 } chat; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
602 }; |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
603 |
2672 | 604 faim_export int aim_clientready(aim_session_t *sess, aim_conn_t *conn); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
605 faim_export int aim_sendflapver(aim_session_t *sess, aim_conn_t *conn); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
606 faim_export int aim_request_login(aim_session_t *sess, aim_conn_t *conn, const char *sn); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
607 faim_export int aim_send_login(aim_session_t *, aim_conn_t *, const char *, const char *, struct client_info_s *, const char *key); |
10464 | 608 /* 0x000b */ faim_export int aim_auth_securid_send(aim_session_t *sess, const char *securid); |
609 | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
610 faim_export void aim_purge_rxqueue(aim_session_t *); |
4333 | 611 faim_export void aim_cleansnacs(aim_session_t *, int maxage); |
2086 | 612 |
613 #define AIM_TX_QUEUED 0 /* default */ | |
614 #define AIM_TX_IMMEDIATE 1 | |
615 #define AIM_TX_USER 2 | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
616 faim_export int aim_tx_setenqueue(aim_session_t *sess, int what, int (*func)(aim_session_t *, aim_frame_t *)); |
2086 | 617 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
618 faim_export int aim_tx_flushqueue(aim_session_t *); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
619 faim_export void aim_tx_purgequeue(aim_session_t *); |
2086 | 620 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
621 faim_export int aim_conn_setlatency(aim_conn_t *conn, int newval); |
2086 | 622 |
5927 | 623 faim_export int aim_conn_addhandler(aim_session_t *, aim_conn_t *conn, fu16_t family, fu16_t type, aim_rxcallback_t newhandler, fu16_t flags); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
624 faim_export int aim_clearhandlers(aim_conn_t *conn); |
2086 | 625 |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
626 faim_export aim_conn_t *aim_conn_findbygroup(aim_session_t *sess, fu16_t group); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
627 faim_export aim_session_t *aim_conn_getsess(aim_conn_t *conn); |
10271 | 628 faim_export void aim_conn_close(aim_conn_t *deadconn); |
11162 | 629 faim_export aim_conn_t *aim_newconn(aim_session_t *, int type); |
5927 | 630 faim_export int aim_conn_in_sess(aim_session_t *sess, aim_conn_t *conn); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
631 faim_export int aim_conn_isready(aim_conn_t *); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
632 faim_export int aim_conn_setstatus(aim_conn_t *, int); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
633 faim_export int aim_conn_completeconnect(aim_session_t *sess, aim_conn_t *conn); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
634 faim_export int aim_conn_isconnecting(aim_conn_t *conn); |
2086 | 635 |
11253 | 636 faim_export void aim_session_init(aim_session_t *, fu8_t nonblocking); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
637 faim_export void aim_session_kill(aim_session_t *); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
638 faim_export aim_conn_t *aim_getconn_type(aim_session_t *, int type); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
639 faim_export aim_conn_t *aim_getconn_type_all(aim_session_t *, int type); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
640 faim_export aim_conn_t *aim_getconn_fd(aim_session_t *, int fd); |
2086 | 641 |
7285 | 642 /* 0x0001 - service.c */ |
12349 | 643 faim_export int aim_srv_setstatusmsg(aim_session_t *sess, const char *msg); |
7474 | 644 faim_export int aim_srv_setidle(aim_session_t *sess, fu32_t idletime); |
5917 | 645 |
3912 | 646 /* misc.c */ |
2086 | 647 |
648 #define AIM_VISIBILITYCHANGE_PERMITADD 0x05 | |
649 #define AIM_VISIBILITYCHANGE_PERMITREMOVE 0x06 | |
650 #define AIM_VISIBILITYCHANGE_DENYADD 0x07 | |
651 #define AIM_VISIBILITYCHANGE_DENYREMOVE 0x08 | |
652 | |
653 #define AIM_PRIVFLAGS_ALLOWIDLE 0x01 | |
654 #define AIM_PRIVFLAGS_ALLOWMEMBERSINCE 0x02 | |
655 | |
656 #define AIM_WARN_ANON 0x01 | |
657 | |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
658 faim_export int aim_sendpauseack(aim_session_t *sess, aim_conn_t *conn); |
2703
441b84ab7f4e
[gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2675
diff
changeset
|
659 faim_export int aim_nop(aim_session_t *, aim_conn_t *); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
660 faim_export int aim_flap_nop(aim_session_t *sess, aim_conn_t *conn); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
661 faim_export int aim_bos_changevisibility(aim_session_t *, aim_conn_t *, int, const char *); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
662 faim_export int aim_bos_setgroupperm(aim_session_t *, aim_conn_t *, fu32_t mask); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
663 faim_export int aim_bos_setprivacyflags(aim_session_t *, aim_conn_t *, fu32_t); |
2703
441b84ab7f4e
[gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2675
diff
changeset
|
664 faim_export int aim_reqpersonalinfo(aim_session_t *, aim_conn_t *); |
441b84ab7f4e
[gaim-migrate @ 2716]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2675
diff
changeset
|
665 faim_export int aim_reqservice(aim_session_t *, aim_conn_t *, fu16_t); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
666 faim_export int aim_bos_reqrights(aim_session_t *, aim_conn_t *); |
4901 | 667 faim_export int aim_setextstatus(aim_session_t *sess, fu32_t status); |
2086 | 668 |
669 #define AIM_CLIENTTYPE_UNKNOWN 0x0000 | |
670 #define AIM_CLIENTTYPE_MC 0x0001 | |
671 #define AIM_CLIENTTYPE_WINAIM 0x0002 | |
672 #define AIM_CLIENTTYPE_WINAIM41 0x0003 | |
673 #define AIM_CLIENTTYPE_AOL_TOC 0x0004 | |
5800 | 674 faim_export fu16_t aim_im_fingerprint(const fu8_t *msghdr, int len); |
2086 | 675 |
676 #define AIM_RATE_CODE_CHANGE 0x0001 | |
677 #define AIM_RATE_CODE_WARNING 0x0002 | |
678 #define AIM_RATE_CODE_LIMIT 0x0003 | |
679 #define AIM_RATE_CODE_CLEARLIMIT 0x0004 | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
680 faim_export int aim_ads_requestads(aim_session_t *sess, aim_conn_t *conn); |
2086 | 681 |
4617 | 682 |
683 | |
3912 | 684 /* im.c */ |
4901 | 685 #define AIM_OFT_SUBTYPE_SEND_FILE 0x0001 |
686 #define AIM_OFT_SUBTYPE_SEND_DIR 0x0002 | |
687 #define AIM_OFT_SUBTYPE_GET_FILE 0x0011 | |
688 #define AIM_OPT_SUBTYPE_GET_LIST 0x0012 | |
689 | |
690 #define AIM_TRANSFER_DENY_NOTSUPPORTED 0x0000 | |
691 #define AIM_TRANSFER_DENY_DECLINE 0x0001 | |
692 #define AIM_TRANSFER_DENY_NOTACCEPTING 0x0002 | |
693 | |
4617 | 694 #define AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED 0x00000001 |
695 #define AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED 0x00000002 | |
696 | |
697 /* This is what the server will give you if you don't set them yourself. */ | |
698 #define AIM_IMPARAM_DEFAULTS { \ | |
699 0, \ | |
700 AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED, \ | |
701 512, /* !! Note how small this is. */ \ | |
702 (99.9)*10, (99.9)*10, \ | |
703 1000 /* !! And how large this is. */ \ | |
704 } | |
2086 | 705 |
4617 | 706 /* This is what most AIM versions use. */ |
707 #define AIM_IMPARAM_REASONABLE { \ | |
708 0, \ | |
709 AIM_IMPARAM_FLAG_CHANMSGS_ALLOWED | AIM_IMPARAM_FLAG_MISSEDCALLS_ENABLED, \ | |
710 8000, \ | |
711 (99.9)*10, (99.9)*10, \ | |
712 0 \ | |
713 } | |
714 | |
715 struct aim_icbmparameters { | |
716 fu16_t maxchan; | |
717 fu32_t flags; /* AIM_IMPARAM_FLAG_ */ | |
718 fu16_t maxmsglen; /* message size that you will accept */ | |
719 fu16_t maxsenderwarn; /* this and below are *10 (999=99.9%) */ | |
720 fu16_t maxrecverwarn; | |
721 fu32_t minmsginterval; /* in milliseconds? */ | |
2086 | 722 }; |
723 | |
724 struct aim_chat_roominfo { | |
5556 | 725 fu16_t exchange; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
726 char *name; |
5556 | 727 fu16_t instance; |
2086 | 728 }; |
729 | |
9806 | 730 #define AIM_IMFLAGS_AWAY 0x0001 /* mark as an autoreply */ |
731 #define AIM_IMFLAGS_ACK 0x0002 /* request a receipt notice */ | |
732 #define AIM_IMFLAGS_BUDDYREQ 0x0010 /* buddy icon requested */ | |
733 #define AIM_IMFLAGS_HASICON 0x0020 /* already has icon */ | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
734 #define AIM_IMFLAGS_SUBENC_MACINTOSH 0x0040 /* damn that Steve Jobs! */ |
11369 | 735 #define AIM_IMFLAGS_CUSTOMFEATURES 0x0080 /* features field present */ |
9806 | 736 #define AIM_IMFLAGS_EXTDATA 0x0100 |
737 #define AIM_IMFLAGS_X 0x0200 | |
738 #define AIM_IMFLAGS_MULTIPART 0x0400 /* ->mpmsg section valid */ | |
739 #define AIM_IMFLAGS_OFFLINE 0x0800 /* send to offline user */ | |
740 #define AIM_IMFLAGS_TYPINGNOT 0x1000 /* typing notification */ | |
741 | |
9826 | 742 #define AIM_CHARSET_ASCII 0x0000 |
743 #define AIM_CHARSET_UNICODE 0x0002 /* UCS-2BE */ | |
744 #define AIM_CHARSET_CUSTOM 0x0003 | |
2086 | 745 |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
746 /* |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
747 * Multipart message structures. |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
748 */ |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
749 typedef struct aim_mpmsg_section_s { |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
750 fu16_t charset; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
751 fu16_t charsubset; |
11159 | 752 gchar *data; |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
753 fu16_t datalen; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
754 struct aim_mpmsg_section_s *next; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
755 } aim_mpmsg_section_t; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
756 |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
757 typedef struct aim_mpmsg_s { |
10595 | 758 unsigned int numparts; |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
759 aim_mpmsg_section_t *parts; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
760 } aim_mpmsg_t; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
761 |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
762 faim_export int aim_mpmsg_init(aim_session_t *sess, aim_mpmsg_t *mpm); |
11159 | 763 faim_export int aim_mpmsg_addraw(aim_session_t *sess, aim_mpmsg_t *mpm, fu16_t charset, fu16_t charsubset, const gchar *data, fu16_t datalen); |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
764 faim_export int aim_mpmsg_addascii(aim_session_t *sess, aim_mpmsg_t *mpm, const char *ascii); |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
765 faim_export int aim_mpmsg_addunicode(aim_session_t *sess, aim_mpmsg_t *mpm, const fu16_t *unicode, fu16_t unicodelen); |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
766 faim_export void aim_mpmsg_free(aim_session_t *sess, aim_mpmsg_t *mpm); |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
767 |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
768 /* |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
769 * Arguments to aim_send_im_ext(). |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
770 * |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
771 * This is really complicated. But immensely versatile. |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
772 * |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
773 */ |
2086 | 774 struct aim_sendimext_args { |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
775 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
776 /* These are _required_ */ |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
777 const char *destsn; |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
778 fu32_t flags; /* often 0 */ |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
779 |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
780 /* Only required if not using multipart messages */ |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
781 const char *msg; |
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
782 int msglen; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
783 |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
784 /* Required if ->msg is not provided */ |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
785 aim_mpmsg_t *mpmsg; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
786 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
787 /* Only used if AIM_IMFLAGS_HASICON is set */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
788 fu32_t iconlen; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
789 time_t iconstamp; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
790 fu32_t iconsum; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
791 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
792 /* Only used if AIM_IMFLAGS_CUSTOMFEATURES is set */ |
10595 | 793 fu16_t featureslen; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
794 fu8_t *features; |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
795 |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
796 /* Only used if AIM_IMFLAGS_CUSTOMCHARSET is set and mpmsg not used */ |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
797 fu16_t charset; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
798 fu16_t charsubset; |
2086 | 799 }; |
800 | |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
801 /* |
2866
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
802 * Arguments to aim_send_rtfmsg(). |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
803 */ |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
804 struct aim_sendrtfmsg_args { |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
805 const char *destsn; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
806 fu32_t fgcolor; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
807 fu32_t bgcolor; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
808 const char *rtfmsg; /* must be in RTF */ |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
809 }; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
810 |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
811 /* |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
812 * This information is provided in the Incoming ICBM callback for |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
813 * Channel 1 ICBM's. |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
814 * |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
815 * Note that although CUSTOMFEATURES and CUSTOMCHARSET say they |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
816 * are optional, both are always set by the current libfaim code. |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
817 * That may or may not change in the future. It is mainly for |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
818 * consistency with aim_sendimext_args. |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
819 * |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
820 * Multipart messages require some explanation. If you want to use them, |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
821 * I suggest you read all the comments in im.c. |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
822 * |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
823 */ |
2086 | 824 struct aim_incomingim_ch1_args { |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
825 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
826 /* Always provided */ |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
827 aim_mpmsg_t mpmsg; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
828 fu32_t icbmflags; /* some flags apply only to ->msg, not all mpmsg */ |
11369 | 829 |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
830 /* Only provided if message has a human-readable section */ |
11159 | 831 gchar *msg; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
832 int msglen; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
833 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
834 /* Only provided if AIM_IMFLAGS_HASICON is set */ |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
835 time_t iconstamp; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
836 fu32_t iconlen; |
2626
93f9bbd62630
[gaim-migrate @ 2639]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2507
diff
changeset
|
837 fu16_t iconsum; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
838 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
839 /* Only provided if AIM_IMFLAGS_CUSTOMFEATURES is set */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
840 fu8_t *features; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
841 fu8_t featureslen; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
842 |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
843 /* Only provided if AIM_IMFLAGS_EXTDATA is set */ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
844 fu8_t extdatalen; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
845 fu8_t *extdata; |
2270
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
846 |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
847 /* Only used if AIM_IMFLAGS_CUSTOMCHARSET is set */ |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
848 fu16_t charset; |
d82efea341ef
[gaim-migrate @ 2280]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2246
diff
changeset
|
849 fu16_t charsubset; |
2086 | 850 }; |
851 | |
2869 | 852 /* Valid values for channel 2 args->status */ |
4901 | 853 #define AIM_RENDEZVOUS_PROPOSE 0x0000 |
854 #define AIM_RENDEZVOUS_CANCEL 0x0001 | |
855 #define AIM_RENDEZVOUS_ACCEPT 0x0002 | |
2869 | 856 |
2086 | 857 struct aim_incomingim_ch2_args { |
4617 | 858 fu16_t status; |
11399 | 859 guchar cookie[8]; |
6197 | 860 int reqclass; |
4898 | 861 const char *proxyip; |
2869 | 862 const char *clientip; |
863 const char *verifiedip; | |
864 fu16_t port; | |
4617 | 865 fu16_t errorcode; |
2869 | 866 const char *msg; /* invite message or file description */ |
9933 | 867 fu16_t msglen; |
2869 | 868 const char *encoding; |
869 const char *language; | |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
870 union { |
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
871 struct { |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
872 fu32_t checksum; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
873 fu32_t length; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
874 time_t timestamp; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
875 fu8_t *icon; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
876 } icon; |
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
877 struct { |
2869 | 878 struct aim_chat_roominfo roominfo; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
879 } chat; |
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
880 struct { |
8708 | 881 fu16_t msgtype; |
2866
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
882 fu32_t fgcolor; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
883 fu32_t bgcolor; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
884 const char *rtfmsg; |
6d62d4520460
[gaim-migrate @ 2879]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2821
diff
changeset
|
885 } rtfmsg; |
3630 | 886 struct { |
3771 | 887 fu16_t subtype; |
3630 | 888 fu16_t totfiles; |
889 fu32_t totsize; | |
890 char *filename; | |
11369 | 891 /* reqnum: 0x0001 usually; 0x0002 = reply request for stage 2 proxy transfer */ |
892 fu16_t reqnum; | |
893 fu8_t use_proxy; /* Did the user request that we use a rv proxy? */ | |
3630 | 894 } sendfile; |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
895 } info; |
2869 | 896 void *destructor; /* used internally only */ |
2086 | 897 }; |
898 | |
3141 | 899 /* Valid values for channel 4 args->type */ |
4901 | 900 #define AIM_ICQMSG_AUTHREQUEST 0x0006 |
901 #define AIM_ICQMSG_AUTHDENIED 0x0007 | |
902 #define AIM_ICQMSG_AUTHGRANTED 0x0008 | |
3141 | 903 |
904 struct aim_incomingim_ch4_args { | |
905 fu32_t uin; /* Of the sender of the ICBM */ | |
4173 | 906 fu8_t type; |
907 fu8_t flags; | |
11159 | 908 gchar *msg; /* Reason for auth request, deny, or accept */ |
4076 | 909 int msglen; |
3141 | 910 }; |
911 | |
4617 | 912 /* SNAC sending functions */ |
913 /* 0x0002 */ faim_export int aim_im_setparams(aim_session_t *sess, struct aim_icbmparameters *params); | |
914 /* 0x0004 */ faim_export int aim_im_reqparams(aim_session_t *sess); | |
915 /* 0x0006 */ faim_export int aim_im_sendch1_ext(aim_session_t *sess, struct aim_sendimext_args *args); | |
5556 | 916 /* 0x0006 */ faim_export int aim_im_sendch1(aim_session_t *, const char *destsn, fu16_t flags, const char *msg); |
8225 | 917 /* 0x0006 */ faim_export int aim_im_sendch2_chatinvite(aim_session_t *sess, const char *sn, const char *msg, fu16_t exchange, const char *roomname, fu16_t instance); |
4617 | 918 /* 0x0006 */ faim_export int aim_im_sendch2_icon(aim_session_t *sess, const char *sn, const fu8_t *icon, int iconlen, time_t stamp, fu16_t iconsum); |
919 /* 0x0006 */ faim_export int aim_im_sendch2_rtfmsg(aim_session_t *sess, struct aim_sendrtfmsg_args *args); | |
11399 | 920 /* 0x0006 */ faim_export int aim_im_sendch2_odcrequest(aim_session_t *sess, guchar *cookie, gboolean usecookie, const char *sn, const fu8_t *ip, fu16_t port); |
5146 | 921 /* 0x0006 */ faim_export int aim_im_sendch2_sendfile_ask(aim_session_t *sess, struct aim_oft_info *oft_info); |
922 /* 0x0006 */ faim_export int aim_im_sendch2_sendfile_accept(aim_session_t *sess, struct aim_oft_info *info); | |
923 /* 0x0006 */ faim_export int aim_im_sendch2_sendfile_cancel(aim_session_t *sess, struct aim_oft_info *oft_info); | |
4617 | 924 /* 0x0006 */ faim_export int aim_im_sendch2_geticqaway(aim_session_t *sess, const char *sn, int type); |
11000 | 925 /* 0x0006 */ faim_export int aim_im_sendch4(aim_session_t *sess, const char *sn, fu16_t type, const char *message); |
4617 | 926 /* 0x0008 */ faim_export int aim_im_warn(aim_session_t *sess, aim_conn_t *conn, const char *destsn, fu32_t flags); |
11399 | 927 /* 0x000b */ faim_export int aim_im_denytransfer(aim_session_t *sess, const char *sender, const guchar *cookie, fu16_t code); |
6059 | 928 /* 0x0014 */ faim_export int aim_im_sendmtn(aim_session_t *sess, fu16_t type1, const char *sn, fu16_t type2); |
11401 | 929 faim_export void aim_icbm_makecookie(guchar* cookie); |
4617 | 930 |
931 | |
932 /* ft.c */ | |
933 struct aim_fileheader_t { | |
934 #if 0 | |
11369 | 935 char magic[4]; /* 0 */ |
936 fu16_t hdrlen; /* 4 */ | |
937 fu16_t hdrtype; /* 6 */ | |
4617 | 938 #endif |
11399 | 939 guchar bcookie[8]; /* 8 */ |
11369 | 940 fu16_t encrypt; /* 16 */ |
941 fu16_t compress; /* 18 */ | |
942 fu16_t totfiles; /* 20 */ | |
943 fu16_t filesleft; /* 22 */ | |
944 fu16_t totparts; /* 24 */ | |
945 fu16_t partsleft; /* 26 */ | |
946 fu32_t totsize; /* 28 */ | |
947 fu32_t size; /* 32 */ | |
948 fu32_t modtime; /* 36 */ | |
949 fu32_t checksum; /* 40 */ | |
950 fu32_t rfrcsum; /* 44 */ | |
951 fu32_t rfsize; /* 48 */ | |
952 fu32_t cretime; /* 52 */ | |
953 fu32_t rfcsum; /* 56 */ | |
954 fu32_t nrecvd; /* 60 */ | |
955 fu32_t recvcsum; /* 64 */ | |
11399 | 956 char idstring[32]; /* 68 */ |
11369 | 957 fu8_t flags; /* 100 */ |
958 fu8_t lnameoffset; /* 101 */ | |
959 fu8_t lsizeoffset; /* 102 */ | |
960 char dummy[69]; /* 103 */ | |
961 char macfileinfo[16]; /* 172 */ | |
962 fu16_t nencode; /* 188 */ | |
963 fu16_t nlanguage; /* 190 */ | |
964 char name[64]; /* 192 */ | |
965 /* 256 */ | |
966 }; | |
967 | |
968 struct aim_rv_proxy_info { | |
969 fu16_t packet_ver; | |
970 fu16_t cmd_type; | |
971 fu16_t flags; | |
972 char* ip; /* IP address sent along with this packet */ | |
973 fu16_t port; /* This is NOT the port we should use to connect. Always connect to 5190 */ | |
11399 | 974 guchar cookie[8]; |
11369 | 975 fu32_t unknownA; |
976 fu16_t err_code; /* Valid only for cmd_type of AIM_RV_PROXY_ERROR */ | |
977 aim_conn_t *conn; | |
978 aim_session_t *sess; | |
4617 | 979 }; |
3595 | 980 |
4826 | 981 struct aim_oft_info { |
11399 | 982 guchar cookie[8]; |
5146 | 983 char *sn; |
984 char *proxyip; | |
985 char *clientip; | |
986 char *verifiedip; | |
987 fu16_t port; | |
11399 | 988 |
11369 | 989 int send_or_recv; /* Send or receive */ |
990 int method; /* What method is being used to transfer this file? DIRECT, REDIR, or PROXY */ | |
991 int stage; /* At what stage was a proxy requested? NONE, STG1, STG2*/ | |
992 int xfer_reffed; /* There are many timers, but we should only ref the xfer once */ | |
993 fu32_t res_bytes; /* The bytes already received for resuming a transfer */ | |
11399 | 994 |
5146 | 995 aim_conn_t *conn; |
996 aim_session_t *sess; | |
11214 | 997 int success; /* Was the connection successful? Used for timing out the transfer. */ |
4832 | 998 struct aim_fileheader_t fh; |
4826 | 999 struct aim_oft_info *next; |
11369 | 1000 struct aim_rv_proxy_info *proxy_info; |
4617 | 1001 }; |
1002 | |
4763 | 1003 faim_export fu32_t aim_oft_checksum_chunk(const fu8_t *buffer, int bufferlen, fu32_t prevcheck); |
4650 | 1004 faim_export fu32_t aim_oft_checksum_file(char *filename); |
4617 | 1005 faim_export int aim_handlerendconnect(aim_session_t *sess, aim_conn_t *cur); |
1006 faim_export int aim_odc_send_typing(aim_session_t *sess, aim_conn_t *conn, int typing); | |
4870 | 1007 faim_export int aim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *msg, int len, int encoding, int isawaymsg); |
4617 | 1008 faim_export const char *aim_odc_getsn(aim_conn_t *conn); |
11159 | 1009 faim_export const guchar *aim_odc_getcookie(aim_conn_t *conn); |
4617 | 1010 faim_export aim_conn_t *aim_odc_getconn(aim_session_t *sess, const char *sn); |
8982 | 1011 faim_export aim_conn_t *aim_odc_initiate(aim_session_t *sess, const char *sn, int listenfd, |
11399 | 1012 const fu8_t *localip, fu16_t port, const guchar *mycookie); |
1013 faim_export aim_conn_t *aim_odc_connect(aim_session_t *sess, const char *sn, const char *addr, const guchar *cookie); | |
5146 | 1014 |
11399 | 1015 faim_export struct aim_oft_info *aim_oft_createinfo(aim_session_t *sess, const guchar *cookie, const char *sn, |
11369 | 1016 const char *ip, fu16_t port, fu32_t size, fu32_t modtime, char *filename, int send_or_recv, |
1017 int method, int stage); | |
5146 | 1018 faim_export int aim_oft_destroyinfo(struct aim_oft_info *oft_info); |
11399 | 1019 faim_export struct aim_rv_proxy_info *aim_rv_proxy_createinfo(aim_session_t *sess, const guchar *cookie, fu16_t port); |
8240 | 1020 faim_export int aim_sendfile_listen(aim_session_t *sess, struct aim_oft_info *oft_info, int listenfd); |
5146 | 1021 faim_export int aim_oft_sendheader(aim_session_t *sess, fu16_t type, struct aim_oft_info *oft_info); |
4617 | 1022 |
11369 | 1023 faim_export int aim_rv_proxy_init_recv(struct aim_rv_proxy_info *proxy_info); |
1024 faim_export int aim_rv_proxy_init_send(struct aim_rv_proxy_info *proxy_info); | |
4617 | 1025 |
11369 | 1026 faim_export int aim_sendfile_listen(aim_session_t *sess, struct aim_oft_info *oft_info, int listenfd); |
1027 faim_export int aim_oft_sendheader(aim_session_t *sess, fu16_t type, struct aim_oft_info *oft_info); | |
1028 faim_internal struct aim_rv_proxy_info *aim_rv_proxy_read(aim_session_t *sess, aim_conn_t *conn); | |
2086 | 1029 |
7011 | 1030 /* 0x0002 - locate.c */ |
4901 | 1031 /* |
1032 * AIM User Info, Standard Form. | |
1033 */ | |
7011 | 1034 #define AIM_FLAG_UNCONFIRMED 0x0001 /* "damned transients" */ |
4901 | 1035 #define AIM_FLAG_ADMINISTRATOR 0x0002 |
7011 | 1036 #define AIM_FLAG_AOL 0x0004 |
1037 #define AIM_FLAG_OSCAR_PAY 0x0008 | |
1038 #define AIM_FLAG_FREE 0x0010 | |
1039 #define AIM_FLAG_AWAY 0x0020 | |
1040 #define AIM_FLAG_ICQ 0x0040 | |
1041 #define AIM_FLAG_WIRELESS 0x0080 | |
1042 #define AIM_FLAG_UNKNOWN100 0x0100 | |
1043 #define AIM_FLAG_UNKNOWN200 0x0200 | |
1044 #define AIM_FLAG_ACTIVEBUDDY 0x0400 | |
1045 #define AIM_FLAG_UNKNOWN800 0x0800 | |
1046 #define AIM_FLAG_ABINTERNAL 0x1000 | |
1047 #define AIM_FLAG_ALLUSERS 0x001f | |
4901 | 1048 |
5836 | 1049 #define AIM_USERINFO_PRESENT_FLAGS 0x00000001 |
1050 #define AIM_USERINFO_PRESENT_MEMBERSINCE 0x00000002 | |
1051 #define AIM_USERINFO_PRESENT_ONLINESINCE 0x00000004 | |
1052 #define AIM_USERINFO_PRESENT_IDLE 0x00000008 | |
1053 #define AIM_USERINFO_PRESENT_ICQEXTSTATUS 0x00000010 | |
1054 #define AIM_USERINFO_PRESENT_ICQIPADDR 0x00000020 | |
1055 #define AIM_USERINFO_PRESENT_ICQDATA 0x00000040 | |
1056 #define AIM_USERINFO_PRESENT_CAPABILITIES 0x00000080 | |
1057 #define AIM_USERINFO_PRESENT_SESSIONLEN 0x00000100 | |
1058 #define AIM_USERINFO_PRESENT_CREATETIME 0x00000200 | |
4901 | 1059 |
7045 | 1060 struct userinfo_node { |
1061 char *sn; | |
1062 struct userinfo_node *next; | |
1063 }; | |
1064 | |
7011 | 1065 typedef struct aim_userinfo_s { |
1066 char *sn; | |
4901 | 1067 fu16_t warnlevel; /* evil percent * 10 (999 = 99.9%) */ |
1068 fu16_t idletime; /* in seconds */ | |
1069 fu16_t flags; | |
1070 fu32_t createtime; /* time_t */ | |
1071 fu32_t membersince; /* time_t */ | |
1072 fu32_t onlinesince; /* time_t */ | |
1073 fu32_t sessionlen; /* in seconds */ | |
1074 fu32_t capabilities; | |
1075 struct { | |
1076 fu32_t status; | |
1077 fu32_t ipaddr; | |
1078 fu8_t crap[0x25]; /* until we figure it out... */ | |
1079 } icqinfo; | |
1080 fu32_t present; | |
7011 | 1081 |
11024 | 1082 fu8_t iconcsumtype; |
4901 | 1083 fu16_t iconcsumlen; |
5836 | 1084 fu8_t *iconcsum; |
7011 | 1085 |
1086 char *info; | |
1087 char *info_encoding; | |
1088 fu16_t info_len; | |
4901 | 1089 |
12349 | 1090 char *status; |
1091 char *status_encoding; | |
1092 fu16_t status_len; | |
7011 | 1093 |
1094 char *away; | |
1095 char *away_encoding; | |
1096 fu16_t away_len; | |
1097 | |
1098 struct aim_userinfo_s *next; | |
1099 } aim_userinfo_t; | |
4901 | 1100 |
7025 | 1101 #define AIM_CAPS_BUDDYICON 0x00000001 |
8092 | 1102 #define AIM_CAPS_TALK 0x00000002 |
7025 | 1103 #define AIM_CAPS_DIRECTIM 0x00000004 |
1104 #define AIM_CAPS_CHAT 0x00000008 | |
1105 #define AIM_CAPS_GETFILE 0x00000010 | |
1106 #define AIM_CAPS_SENDFILE 0x00000020 | |
1107 #define AIM_CAPS_GAMES 0x00000040 | |
8092 | 1108 #define AIM_CAPS_ADDINS 0x00000080 |
4650 | 1109 #define AIM_CAPS_SENDBUDDYLIST 0x00000100 |
7025 | 1110 #define AIM_CAPS_GAMES2 0x00000200 |
7141 | 1111 #define AIM_CAPS_ICQ_DIRECT 0x00000400 |
7025 | 1112 #define AIM_CAPS_APINFO 0x00000800 |
1113 #define AIM_CAPS_ICQRTF 0x00001000 | |
1114 #define AIM_CAPS_EMPTY 0x00002000 | |
4650 | 1115 #define AIM_CAPS_ICQSERVERRELAY 0x00004000 |
7025 | 1116 #define AIM_CAPS_ICQUTF8OLD 0x00008000 |
4650 | 1117 #define AIM_CAPS_TRILLIANCRYPT 0x00010000 |
7025 | 1118 #define AIM_CAPS_ICQUTF8 0x00020000 |
4811 | 1119 #define AIM_CAPS_INTEROPERATE 0x00040000 |
7025 | 1120 #define AIM_CAPS_ICHAT 0x00080000 |
1121 #define AIM_CAPS_HIPTOP 0x00100000 | |
1122 #define AIM_CAPS_SECUREIM 0x00200000 | |
1123 #define AIM_CAPS_SMS 0x00400000 | |
7091 | 1124 #define AIM_CAPS_GENERICUNKNOWN 0x00800000 |
7582 | 1125 #define AIM_CAPS_VIDEO 0x01000000 |
7945 | 1126 #define AIM_CAPS_ICHATAV 0x02000000 |
8092 | 1127 #define AIM_CAPS_LIVEVIDEO 0x04000000 |
1128 #define AIM_CAPS_CAMERA 0x08000000 | |
1129 #define AIM_CAPS_LAST 0x10000000 | |
2086 | 1130 |
1131 #define AIM_SENDMEMBLOCK_FLAG_ISREQUEST 0 | |
1132 #define AIM_SENDMEMBLOCK_FLAG_ISHASH 1 | |
1133 | |
5556 | 1134 faim_export int aim_sendmemblock(aim_session_t *sess, aim_conn_t *conn, fu32_t offset, fu32_t len, const fu8_t *buf, fu8_t flag); |
2086 | 1135 |
1136 struct aim_invite_priv { | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1137 char *sn; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1138 char *roomname; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1139 fu16_t exchange; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1140 fu16_t instance; |
2086 | 1141 }; |
1142 | |
1143 #define AIM_COOKIETYPE_UNKNOWN 0x00 | |
1144 #define AIM_COOKIETYPE_ICBM 0x01 | |
1145 #define AIM_COOKIETYPE_ADS 0x02 | |
1146 #define AIM_COOKIETYPE_BOS 0x03 | |
1147 #define AIM_COOKIETYPE_IM 0x04 | |
1148 #define AIM_COOKIETYPE_CHAT 0x05 | |
1149 #define AIM_COOKIETYPE_CHATNAV 0x06 | |
1150 #define AIM_COOKIETYPE_INVITE 0x07 | |
1151 /* we'll move OFT up a bit to give breathing room. not like it really | |
1152 * matters. */ | |
1153 #define AIM_COOKIETYPE_OFTIM 0x10 | |
1154 #define AIM_COOKIETYPE_OFTGET 0x11 | |
1155 #define AIM_COOKIETYPE_OFTSEND 0x12 | |
1156 #define AIM_COOKIETYPE_OFTVOICE 0x13 | |
1157 #define AIM_COOKIETYPE_OFTIMAGE 0x14 | |
1158 #define AIM_COOKIETYPE_OFTICON 0x15 | |
1159 | |
7045 | 1160 faim_export aim_userinfo_t *aim_locate_finduserinfo(aim_session_t *sess, const char *sn); |
8341 | 1161 faim_export void aim_locate_dorequest(aim_session_t *sess); |
7011 | 1162 |
1163 /* 0x0002 */ faim_export int aim_locate_reqrights(aim_session_t *sess); | |
11369 | 1164 /* 0x0004 */ faim_export int aim_locate_setcaps(aim_session_t *sess, fu32_t caps); |
11159 | 1165 /* 0x0004 */ faim_export int aim_locate_setprofile(aim_session_t *sess, const char *profile_encoding, const gchar *profile, const int profile_len, const char *awaymsg_encoding, const gchar *awaymsg, const int awaymsg_len); |
7011 | 1166 /* 0x0005 */ faim_export int aim_locate_getinfo(aim_session_t *sess, const char *, fu16_t); |
1167 /* 0x0009 */ faim_export int aim_locate_setdirinfo(aim_session_t *sess, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, fu16_t privacy); | |
1168 /* 0x000b */ faim_export int aim_locate_000b(aim_session_t *sess, const char *sn); | |
1169 /* 0x000f */ faim_export int aim_locate_setinterests(aim_session_t *sess, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, fu16_t privacy); | |
1170 /* 0x0015 */ faim_export int aim_locate_getinfoshort(aim_session_t *sess, const char *sn, fu32_t flags); | |
2086 | 1171 |
2167
edf8c5a70e5b
[gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2122
diff
changeset
|
1172 |
2086 | 1173 |
4901 | 1174 /* 0x0003 - buddylist.c */ |
7285 | 1175 /* 0x0002 */ faim_export int aim_buddylist_reqrights(aim_session_t *, aim_conn_t *); |
1176 /* 0x0004 */ faim_export int aim_buddylist_set(aim_session_t *, aim_conn_t *, const char *); | |
1177 /* 0x0004 */ faim_export int aim_buddylist_addbuddy(aim_session_t *, aim_conn_t *, const char *); | |
1178 /* 0x0005 */ faim_export int aim_buddylist_removebuddy(aim_session_t *, aim_conn_t *, const char *); | |
1179 /* 0x000b */ faim_export int aim_buddylist_oncoming(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *info); | |
1180 /* 0x000c */ faim_export int aim_buddylist_offgoing(aim_session_t *sess, aim_conn_t *conn, const char *sn); | |
2086 | 1181 |
4617 | 1182 |
1183 | |
4901 | 1184 /* 0x000a - search.c */ |
6879 | 1185 faim_export int aim_search_address(aim_session_t *, aim_conn_t *, const char *); |
2086 | 1186 |
4617 | 1187 |
1188 | |
4901 | 1189 /* 0x000d - chatnav.c */ |
1190 /* 0x000e - chat.c */ | |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1191 /* These apply to exchanges as well. */ |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1192 #define AIM_CHATROOM_FLAG_EVILABLE 0x0001 |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1193 #define AIM_CHATROOM_FLAG_NAV_ONLY 0x0002 |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1194 #define AIM_CHATROOM_FLAG_INSTANCING_ALLOWED 0x0004 |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1195 #define AIM_CHATROOM_FLAG_OCCUPANT_PEEK_ALLOWED 0x0008 |
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1196 |
2086 | 1197 struct aim_chat_exchangeinfo { |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1198 fu16_t number; |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1199 fu16_t flags; |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1200 char *name; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1201 char *charset1; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1202 char *lang1; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1203 char *charset2; |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1204 char *lang2; |
2086 | 1205 }; |
1206 | |
1207 #define AIM_CHATFLAGS_NOREFLECT 0x0001 | |
1208 #define AIM_CHATFLAGS_AWAY 0x0002 | |
11159 | 1209 faim_export int aim_chat_send_im(aim_session_t *sess, aim_conn_t *conn, fu16_t flags, const gchar *msg, int msglen, const char *encoding, const char *language); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1210 faim_export int aim_chat_join(aim_session_t *sess, aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance); |
2821
9467e4ee81be
[gaim-migrate @ 2834]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2764
diff
changeset
|
1211 faim_export int aim_chat_attachname(aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance); |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1212 faim_export char *aim_chat_getname(aim_conn_t *conn); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1213 faim_export aim_conn_t *aim_chat_getconn(aim_session_t *, const char *name); |
2086 | 1214 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1215 faim_export int aim_chatnav_reqrights(aim_session_t *sess, aim_conn_t *conn); |
2086 | 1216 |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1217 faim_export int aim_chatnav_createroom(aim_session_t *sess, aim_conn_t *conn, const char *name, fu16_t exchange); |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1218 faim_export int aim_chat_leaveroom(aim_session_t *sess, const char *name); |
2086 | 1219 |
2672 | 1220 |
4230 | 1221 |
6879 | 1222 /* 0x000f - odir.c */ |
1223 struct aim_odir { | |
4901 | 1224 char *first; |
1225 char *last; | |
1226 char *middle; | |
1227 char *maiden; | |
1228 char *email; | |
1229 char *country; | |
1230 char *state; | |
1231 char *city; | |
1232 char *sn; | |
1233 char *interest; | |
1234 char *nick; | |
1235 char *zip; | |
1236 char *region; | |
1237 char *address; | |
6879 | 1238 struct aim_odir *next; |
4901 | 1239 }; |
1240 | |
6879 | 1241 faim_export int aim_odir_email(aim_session_t *, const char *, const char *); |
1242 faim_export int aim_odir_name(aim_session_t *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *, const char *); | |
1243 faim_export int aim_odir_interest(aim_session_t *, const char *, const char *); | |
4901 | 1244 |
1245 | |
1246 | |
1247 /* 0x0010 - icon.c */ | |
6879 | 1248 faim_export int aim_bart_upload(aim_session_t *sess, const fu8_t *icon, fu16_t iconlen); |
11024 | 1249 faim_export int aim_bart_request(aim_session_t *sess, const char *sn, fu8_t iconcsumtype, const fu8_t *iconstr, fu16_t iconstrlen); |
4901 | 1250 |
1251 | |
1252 | |
1253 /* 0x0013 - ssi.c */ | |
4889 | 1254 #define AIM_SSI_TYPE_BUDDY 0x0000 |
1255 #define AIM_SSI_TYPE_GROUP 0x0001 | |
1256 #define AIM_SSI_TYPE_PERMIT 0x0002 | |
1257 #define AIM_SSI_TYPE_DENY 0x0003 | |
1258 #define AIM_SSI_TYPE_PDINFO 0x0004 | |
1259 #define AIM_SSI_TYPE_PRESENCEPREFS 0x0005 | |
1260 #define AIM_SSI_TYPE_ICONINFO 0x0014 | |
2672 | 1261 |
4889 | 1262 #define AIM_SSI_ACK_SUCCESS 0x0000 |
1263 #define AIM_SSI_ACK_ITEMNOTFOUND 0x0002 | |
1264 #define AIM_SSI_ACK_IDNUMINUSE 0x000a | |
1265 #define AIM_SSI_ACK_ATMAX 0x000c | |
1266 #define AIM_SSI_ACK_INVALIDNAME 0x000d | |
1267 #define AIM_SSI_ACK_AUTHREQUIRED 0x000e | |
4230 | 1268 |
2672 | 1269 struct aim_ssi_item { |
1270 char *name; | |
1271 fu16_t gid; | |
1272 fu16_t bid; | |
1273 fu16_t type; | |
4230 | 1274 struct aim_tlvlist_s *data; |
2672 | 1275 struct aim_ssi_item *next; |
1276 }; | |
1277 | |
4230 | 1278 struct aim_ssi_tmp { |
1279 fu16_t action; | |
1280 fu16_t ack; | |
1281 char *name; | |
1282 struct aim_ssi_item *item; | |
1283 struct aim_ssi_tmp *next; | |
1284 }; | |
1285 | |
3109 | 1286 /* These build the actual SNACs and queue them to be sent */ |
4889 | 1287 /* 0x0002 */ faim_export int aim_ssi_reqrights(aim_session_t *sess); |
6350 | 1288 /* 0x0004 */ faim_export int aim_ssi_reqdata(aim_session_t *sess); |
1289 /* 0x0005 */ faim_export int aim_ssi_reqifchanged(aim_session_t *sess, time_t localstamp, fu16_t localrev); | |
4642 | 1290 /* 0x0007 */ faim_export int aim_ssi_enable(aim_session_t *sess); |
4889 | 1291 /* 0x0008 */ faim_export int aim_ssi_addmoddel(aim_session_t *sess); |
1292 /* 0x0011 */ faim_export int aim_ssi_modbegin(aim_session_t *sess); | |
1293 /* 0x0012 */ faim_export int aim_ssi_modend(aim_session_t *sess); | |
1294 /* 0x0014 */ faim_export int aim_ssi_sendauth(aim_session_t *sess, char *sn, char *msg); | |
1295 /* 0x0018 */ faim_export int aim_ssi_sendauthrequest(aim_session_t *sess, char *sn, char *msg); | |
1296 /* 0x001a */ faim_export int aim_ssi_sendauthreply(aim_session_t *sess, char *sn, fu8_t reply, char *msg); | |
2672 | 1297 |
4230 | 1298 /* Client functions for retrieving SSI data */ |
3210 | 1299 faim_export struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, fu16_t gid, fu16_t bid); |
3466 | 1300 faim_export struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, fu16_t type); |
4230 | 1301 faim_export struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn); |
1302 faim_export char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn); | |
3210 | 1303 faim_export int aim_ssi_getpermdeny(struct aim_ssi_item *list); |
1304 faim_export fu32_t aim_ssi_getpresence(struct aim_ssi_item *list); | |
4238 | 1305 faim_export char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn); |
7172 | 1306 faim_export char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn); |
4243 | 1307 faim_export int aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn); |
4230 | 1308 |
1309 /* Client functions for changing SSI data */ | |
4889 | 1310 faim_export int aim_ssi_addbuddy(aim_session_t *sess, const char *name, const char *group, const char *alias, const char *comment, const char *smsnum, int needauth); |
1311 faim_export int aim_ssi_addpermit(aim_session_t *sess, const char *name); | |
1312 faim_export int aim_ssi_adddeny(aim_session_t *sess, const char *name); | |
1313 faim_export int aim_ssi_delbuddy(aim_session_t *sess, const char *name, const char *group); | |
1314 faim_export int aim_ssi_delpermit(aim_session_t *sess, const char *name); | |
1315 faim_export int aim_ssi_deldeny(aim_session_t *sess, const char *name); | |
1316 faim_export int aim_ssi_movebuddy(aim_session_t *sess, const char *oldgn, const char *newgn, const char *sn); | |
1317 faim_export int aim_ssi_aliasbuddy(aim_session_t *sess, const char *gn, const char *sn, const char *alias); | |
7172 | 1318 faim_export int aim_ssi_editcomment(aim_session_t *sess, const char *gn, const char *sn, const char *alias); |
4889 | 1319 faim_export int aim_ssi_rename_group(aim_session_t *sess, const char *oldgn, const char *newgn); |
1320 faim_export int aim_ssi_cleanlist(aim_session_t *sess); | |
1321 faim_export int aim_ssi_deletelist(aim_session_t *sess); | |
1322 faim_export int aim_ssi_setpermdeny(aim_session_t *sess, fu8_t permdeny, fu32_t vismask); | |
1323 faim_export int aim_ssi_setpresence(aim_session_t *sess, fu32_t presence); | |
1324 faim_export int aim_ssi_seticon(aim_session_t *sess, fu8_t *iconsum, fu16_t iconsumlen); | |
7313 | 1325 faim_export int aim_ssi_delicon(aim_session_t *sess); |
2991 | 1326 |
4230 | 1327 |
1328 | |
4901 | 1329 /* 0x0015 - icq.c */ |
4624 | 1330 #define AIM_ICQ_INFO_SIMPLE 0x001 |
1331 #define AIM_ICQ_INFO_SUMMARY 0x002 | |
1332 #define AIM_ICQ_INFO_EMAIL 0x004 | |
1333 #define AIM_ICQ_INFO_PERSONAL 0x008 | |
1334 #define AIM_ICQ_INFO_ADDITIONAL 0x010 | |
1335 #define AIM_ICQ_INFO_WORK 0x020 | |
1336 #define AIM_ICQ_INFO_INTERESTS 0x040 | |
1337 #define AIM_ICQ_INFO_ORGS 0x080 | |
1338 #define AIM_ICQ_INFO_UNKNOWN 0x100 | |
1339 #define AIM_ICQ_INFO_HAVEALL 0x1ff | |
1340 | |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1341 struct aim_icq_offlinemsg { |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1342 fu32_t sender; |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1343 fu16_t year; |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1344 fu8_t month, day, hour, minute; |
4173 | 1345 fu8_t type; |
1346 fu8_t flags; | |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1347 char *msg; |
4076 | 1348 int msglen; |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1349 }; |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1350 |
4151 | 1351 struct aim_icq_info { |
4624 | 1352 fu16_t reqid; |
1353 | |
1354 /* simple */ | |
2742
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1355 fu32_t uin; |
4624 | 1356 |
1357 /* general and "home" information (0x00c8) */ | |
2742
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1358 char *nick; |
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1359 char *first; |
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1360 char *last; |
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1361 char *email; |
4151 | 1362 char *homecity; |
1363 char *homestate; | |
4624 | 1364 char *homephone; |
1365 char *homefax; | |
4151 | 1366 char *homeaddr; |
4624 | 1367 char *mobile; |
4151 | 1368 char *homezip; |
1369 fu16_t homecountry; | |
4624 | 1370 /* fu8_t timezone; |
1371 fu8_t hideemail; */ | |
1372 | |
1373 /* personal (0x00dc) */ | |
1374 fu8_t age; | |
1375 fu8_t unknown; | |
1376 fu8_t gender; | |
1377 char *personalwebpage; | |
1378 fu16_t birthyear; | |
1379 fu8_t birthmonth; | |
1380 fu8_t birthday; | |
1381 fu8_t language1; | |
1382 fu8_t language2; | |
1383 fu8_t language3; | |
1384 | |
1385 /* work (0x00d2) */ | |
4151 | 1386 char *workcity; |
1387 char *workstate; | |
4624 | 1388 char *workphone; |
1389 char *workfax; | |
4151 | 1390 char *workaddr; |
1391 char *workzip; | |
1392 fu16_t workcountry; | |
1393 char *workcompany; | |
1394 char *workdivision; | |
1395 char *workposition; | |
1396 char *workwebpage; | |
4624 | 1397 |
1398 /* additional personal information (0x00e6) */ | |
1399 char *info; | |
1400 | |
1401 /* email (0x00eb) */ | |
1402 fu16_t numaddresses; | |
4625 | 1403 char **email2; |
4624 | 1404 |
1405 /* we keep track of these in a linked list because we're 1337 */ | |
1406 struct aim_icq_info *next; | |
2742
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1407 }; |
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1408 |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1409 faim_export int aim_icq_reqofflinemsgs(aim_session_t *sess); |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1410 faim_export int aim_icq_ackofflinemsgs(aim_session_t *sess); |
10570 | 1411 faim_export int aim_icq_setsecurity(aim_session_t *sess, const int auth, const int web, const int hide); |
1412 faim_export int aim_icq_setauthsetting(aim_session_t *sess, int auth_required); | |
4617 | 1413 faim_export int aim_icq_changepasswd(aim_session_t *sess, const char *passwd); |
2742
6f527cbd899d
[gaim-migrate @ 2755]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2734
diff
changeset
|
1414 faim_export int aim_icq_getsimpleinfo(aim_session_t *sess, const char *uin); |
4759 | 1415 faim_export int aim_icq_getalias(aim_session_t *sess, const char *uin); |
4151 | 1416 faim_export int aim_icq_getallinfo(aim_session_t *sess, const char *uin); |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1417 |
4617 | 1418 |
1419 | |
4901 | 1420 /* 0x0017 - auth.c */ |
1421 faim_export int aim_sendcookie(aim_session_t *, aim_conn_t *, const fu16_t length, const fu8_t *); | |
1422 faim_export int aim_admin_changepasswd(aim_session_t *, aim_conn_t *, const char *newpw, const char *curpw); | |
1423 faim_export int aim_admin_reqconfirm(aim_session_t *sess, aim_conn_t *conn); | |
1424 faim_export int aim_admin_getinfo(aim_session_t *sess, aim_conn_t *conn, fu16_t info); | |
1425 faim_export int aim_admin_setemail(aim_session_t *sess, aim_conn_t *conn, const char *newemail); | |
1426 faim_export int aim_admin_setnick(aim_session_t *sess, aim_conn_t *conn, const char *newnick); | |
1427 | |
1428 | |
1429 | |
1430 /* 0x0018 - email.c */ | |
3694 | 1431 struct aim_emailinfo { |
1432 fu8_t *cookie16; | |
1433 fu8_t *cookie8; | |
1434 char *url; | |
1435 fu16_t nummsgs; | |
1436 fu8_t unread; | |
1437 char *domain; | |
1438 fu16_t flag; | |
1439 struct aim_emailinfo *next; | |
1440 }; | |
1441 | |
7282 | 1442 faim_export int aim_email_sendcookies(aim_session_t *sess); |
1443 faim_export int aim_email_activate(aim_session_t *sess); | |
3694 | 1444 |
4617 | 1445 |
1446 | |
7167 | 1447 #if defined(FAIM_INTERNAL) || defined(FAIM_NEED_TLV) |
4901 | 1448 /* tlv.c - TLV handling */ |
7167 | 1449 |
1450 /* TLV structure */ | |
4901 | 1451 typedef struct aim_tlv_s { |
1452 fu16_t type; | |
1453 fu16_t length; | |
1454 fu8_t *value; | |
1455 } aim_tlv_t; | |
1456 | |
7167 | 1457 /* TLV List structure */ |
4901 | 1458 typedef struct aim_tlvlist_s { |
1459 aim_tlv_t *tlv; | |
1460 struct aim_tlvlist_s *next; | |
1461 } aim_tlvlist_t; | |
1462 | |
7167 | 1463 /* TLV handling functions */ |
1464 faim_internal aim_tlv_t *aim_tlv_gettlv(aim_tlvlist_t *list, fu16_t type, const int nth); | |
9933 | 1465 faim_internal int aim_tlv_getlength(aim_tlvlist_t *list, fu16_t type, const int nth); |
7167 | 1466 faim_internal char *aim_tlv_getstr(aim_tlvlist_t *list, const fu16_t type, const int nth); |
1467 faim_internal fu8_t aim_tlv_get8(aim_tlvlist_t *list, const fu16_t type, const int nth); | |
1468 faim_internal fu16_t aim_tlv_get16(aim_tlvlist_t *list, const fu16_t type, const int nth); | |
1469 faim_internal fu32_t aim_tlv_get32(aim_tlvlist_t *list, const fu16_t type, const int nth); | |
4901 | 1470 |
7167 | 1471 /* TLV list handling functions */ |
1472 faim_internal aim_tlvlist_t *aim_tlvlist_read(aim_bstream_t *bs); | |
1473 faim_internal aim_tlvlist_t *aim_tlvlist_readnum(aim_bstream_t *bs, fu16_t num); | |
1474 faim_internal aim_tlvlist_t *aim_tlvlist_readlen(aim_bstream_t *bs, fu16_t len); | |
1475 faim_internal aim_tlvlist_t *aim_tlvlist_copy(aim_tlvlist_t *orig); | |
4901 | 1476 |
7167 | 1477 faim_internal int aim_tlvlist_count(aim_tlvlist_t **list); |
1478 faim_internal int aim_tlvlist_size(aim_tlvlist_t **list); | |
6101 | 1479 faim_internal int aim_tlvlist_cmp(aim_tlvlist_t *one, aim_tlvlist_t *two); |
7167 | 1480 faim_internal int aim_tlvlist_write(aim_bstream_t *bs, aim_tlvlist_t **list); |
1481 faim_internal void aim_tlvlist_free(aim_tlvlist_t **list); | |
7166 | 1482 |
7167 | 1483 faim_internal int aim_tlvlist_add_raw(aim_tlvlist_t **list, const fu16_t type, const fu16_t length, const fu8_t *value); |
1484 faim_internal int aim_tlvlist_add_noval(aim_tlvlist_t **list, const fu16_t type); | |
1485 faim_internal int aim_tlvlist_add_8(aim_tlvlist_t **list, const fu16_t type, const fu8_t value); | |
1486 faim_internal int aim_tlvlist_add_16(aim_tlvlist_t **list, const fu16_t type, const fu16_t value); | |
1487 faim_internal int aim_tlvlist_add_32(aim_tlvlist_t **list, const fu16_t type, const fu32_t value); | |
10991 | 1488 faim_internal int aim_tlvlist_add_str(aim_tlvlist_t **list, const fu16_t type, const char *value); |
7167 | 1489 faim_internal int aim_tlvlist_add_caps(aim_tlvlist_t **list, const fu16_t type, const fu32_t caps); |
1490 faim_internal int aim_tlvlist_add_userinfo(aim_tlvlist_t **list, fu16_t type, aim_userinfo_t *userinfo); | |
8225 | 1491 faim_internal int aim_tlvlist_add_chatroom(aim_tlvlist_t **list, fu16_t type, fu16_t exchange, const char *roomname, fu16_t instance); |
7167 | 1492 faim_internal int aim_tlvlist_add_frozentlvlist(aim_tlvlist_t **list, fu16_t type, aim_tlvlist_t **tl); |
7166 | 1493 |
1494 faim_internal int aim_tlvlist_replace_raw(aim_tlvlist_t **list, const fu16_t type, const fu16_t lenth, const fu8_t *value); | |
10993 | 1495 faim_internal int aim_tlvlist_replace_str(aim_tlvlist_t **list, const fu16_t type, const char *str); |
7166 | 1496 faim_internal int aim_tlvlist_replace_noval(aim_tlvlist_t **list, const fu16_t type); |
1497 faim_internal int aim_tlvlist_replace_8(aim_tlvlist_t **list, const fu16_t type, const fu8_t value); | |
1498 faim_internal int aim_tlvlist_replace_16(aim_tlvlist_t **list, const fu16_t type, const fu16_t value); | |
1499 faim_internal int aim_tlvlist_replace_32(aim_tlvlist_t **list, const fu16_t type, const fu32_t value); | |
1500 | |
1501 faim_internal void aim_tlvlist_remove(aim_tlvlist_t **list, const fu16_t type); | |
4901 | 1502 #endif /* FAIM_INTERNAL */ |
1503 | |
1504 | |
1505 | |
3912 | 1506 /* util.c */ |
2086 | 1507 /* |
1508 * These are really ugly. You'd think this was LISP. I wish it was. | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1509 * |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1510 * XXX With the advent of bstream's, these should be removed to enforce |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1511 * their use. |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1512 * |
2086 | 1513 */ |
5927 | 1514 #define aimutil_put8(buf, data) ((*(buf) = (fu8_t)(data)&0xff),1) |
2086 | 1515 #define aimutil_get8(buf) ((*(buf))&0xff) |
1516 #define aimutil_put16(buf, data) ( \ | |
5927 | 1517 (*(buf) = (fu8_t)((data)>>8)&0xff), \ |
1518 (*((buf)+1) = (fu8_t)(data)&0xff), \ | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1519 2) |
2086 | 1520 #define aimutil_get16(buf) ((((*(buf))<<8)&0xff00) + ((*((buf)+1)) & 0xff)) |
1521 #define aimutil_put32(buf, data) ( \ | |
5927 | 1522 (*((buf)) = (fu8_t)((data)>>24)&0xff), \ |
1523 (*((buf)+1) = (fu8_t)((data)>>16)&0xff), \ | |
1524 (*((buf)+2) = (fu8_t)((data)>>8)&0xff), \ | |
1525 (*((buf)+3) = (fu8_t)(data)&0xff), \ | |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1526 4) |
2086 | 1527 #define aimutil_get32(buf) ((((*(buf))<<24)&0xff000000) + \ |
2246
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1528 (((*((buf)+1))<<16)&0x00ff0000) + \ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1529 (((*((buf)+2))<< 8)&0x0000ff00) + \ |
933346315b9b
[gaim-migrate @ 2256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2196
diff
changeset
|
1530 (((*((buf)+3) )&0x000000ff))) |
2086 | 1531 |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1532 /* Little-endian versions (damn ICQ) */ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1533 #define aimutil_putle8(buf, data) ( \ |
5556 | 1534 (*(buf) = (fu8_t)(data) & 0xff), \ |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1535 1) |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1536 #define aimutil_getle8(buf) ( \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1537 (*(buf)) & 0xff \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1538 ) |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1539 #define aimutil_putle16(buf, data) ( \ |
5556 | 1540 (*((buf)+0) = (fu8_t)((data) >> 0) & 0xff), \ |
1541 (*((buf)+1) = (fu8_t)((data) >> 8) & 0xff), \ | |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1542 2) |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1543 #define aimutil_getle16(buf) ( \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1544 (((*((buf)+0)) << 0) & 0x00ff) + \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1545 (((*((buf)+1)) << 8) & 0xff00) \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1546 ) |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1547 #define aimutil_putle32(buf, data) ( \ |
5556 | 1548 (*((buf)+0) = (fu8_t)((data) >> 0) & 0xff), \ |
1549 (*((buf)+1) = (fu8_t)((data) >> 8) & 0xff), \ | |
1550 (*((buf)+2) = (fu8_t)((data) >> 16) & 0xff), \ | |
1551 (*((buf)+3) = (fu8_t)((data) >> 24) & 0xff), \ | |
2706
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1552 4) |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1553 #define aimutil_getle32(buf) ( \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1554 (((*((buf)+0)) << 0) & 0x000000ff) + \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1555 (((*((buf)+1)) << 8) & 0x0000ff00) + \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1556 (((*((buf)+2)) << 16) & 0x00ff0000) + \ |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1557 (((*((buf)+3)) << 24) & 0xff000000)) |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1558 |
e841b14b5b89
[gaim-migrate @ 2719]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2704
diff
changeset
|
1559 |
5927 | 1560 faim_export int aimutil_putstr(char *, const char *, int); |
4617 | 1561 faim_export fu16_t aimutil_iconsum(const fu8_t *buf, int buflen); |
6323 | 1562 faim_export int aimutil_tokslen(char *toSearch, int theindex, char dl); |
2086 | 1563 faim_export int aimutil_itemcnt(char *toSearch, char dl); |
6323 | 1564 faim_export char *aimutil_itemindex(char *toSearch, int theindex, char dl); |
2086 | 1565 |
8092 | 1566 faim_export int aim_snvalid(const char *sn); |
9975 | 1567 faim_export int aim_sn_is_icq(const char *sn); |
2086 | 1568 faim_export int aim_snlen(const char *sn); |
1569 faim_export int aim_sncmp(const char *sn1, const char *sn2); | |
1570 | |
1571 #include <aim_internal.h> | |
1572 | |
6322 | 1573 #ifdef __cplusplus |
1574 } | |
1575 #endif | |
1576 | |
2086 | 1577 #endif /* __AIM_H__ */ |