src/protocols/oscar/auth.c

Sat, 08 Dec 2001 09:48:52 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Sat, 08 Dec 2001 09:48:52 +0000
changeset 2856
046ed5e89321
parent 2821
f1ab7f03bdad
child 3068
21355882d65c
permissions
-rw-r--r--

[gaim-migrate @ 2869]
rewrote the html parser in gtkimhtml. yes, that's really all i did. the reason for the massive change is because i added a length argument, which then needed to be propogated down to everything that would ever receive anything that would get drawn to the window.

the new parser isn't any faster. that wasn't my goal. it's much more understandable now (hopefully, anyway).

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
2 * Deals with the authorizer (group 0x0017=23, and old-style non-SNAC login).
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
3 *
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 #define FAIM_INTERNAL
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 #include <aim.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
9 #include "md5.h"
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
10
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
11 static int aim_encode_password(const char *password, unsigned char *encoded);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
12
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
13 /*
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
14 * This just pushes the passed cookie onto the passed connection, without
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
15 * the SNAC header or any of that.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
16 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
17 * Very commonly used, as every connection except auth will require this to
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
18 * be the first thing you send.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
19 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
20 */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
21 faim_export int aim_sendcookie(aim_session_t *sess, aim_conn_t *conn, const fu8_t *chipsahoy)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
23 aim_frame_t *fr;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
24 aim_tlvlist_t *tl = NULL;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
25
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
26 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x0001, 4+2+2+AIM_COOKIELEN)))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
27 return -ENOMEM;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
29 aimbs_put32(&fr->data, 0x00000001);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
30 aim_addtlvtochain_raw(&tl, 0x0006, AIM_COOKIELEN, chipsahoy);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
31 aim_writetlvchain(&fr->data, &tl);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
32 aim_freetlvchain(&tl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
34 aim_tx_enqueue(sess, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
36 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 /*
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
40 * Normally the FLAP version is sent as the first few bytes of the cookie,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
41 * meaning you generally never call this.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
42 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
43 * But there are times when something might want it seperate. Specifically,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
44 * libfaim sends this internally when doing SNAC login.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
45 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
46 */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
47 faim_export int aim_sendflapver(aim_session_t *sess, aim_conn_t *conn)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
48 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
49 aim_frame_t *fr;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
50
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
51 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x01, 4)))
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
52 return -ENOMEM;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
53
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
54 aimbs_put32(&fr->data, 0x00000001);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
55
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
56 aim_tx_enqueue(sess, fr);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
57
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
58 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
59 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
60
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
61 /*
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
62 * This is a bit confusing.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
63 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
64 * Normal SNAC login goes like this:
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
65 * - connect
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
66 * - server sends flap version
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
67 * - client sends flap version
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
68 * - client sends screen name (17/6)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
69 * - server sends hash key (17/7)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
70 * - client sends auth request (17/2 -- aim_send_login)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
71 * - server yells
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
72 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
73 * XOR login (for ICQ) goes like this:
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
74 * - connect
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
75 * - server sends flap version
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
76 * - client sends auth request which contains flap version (aim_send_login)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
77 * - server yells
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
78 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
79 * For the client API, we make them implement the most complicated version,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
80 * and for the simpler version, we fake it and make it look like the more
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
81 * complicated process.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
82 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
83 * This is done by giving the client a faked key, just so we can convince
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
84 * them to call aim_send_login right away, which will detect the session
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
85 * flag that says this is XOR login and ignore the key, sending an ICQ
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
86 * login request instead of the normal SNAC one.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
87 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
88 * As soon as AOL makes ICQ log in the same way as AIM, this is /gone/.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
89 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
90 * XXX This may cause problems if the client relies on callbacks only
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
91 * being called from the context of aim_rxdispatch()...
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
92 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
93 */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
94 static int goddamnicq(aim_session_t *sess, aim_conn_t *conn, const char *sn)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
95 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
96 aim_frame_t fr;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
97 aim_rxcallback_t userfunc;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
98
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
99 sess->flags &= ~AIM_SESS_FLAGS_SNACLOGIN;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
100 sess->flags |= AIM_SESS_FLAGS_XORLOGIN;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
101
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
102 fr.conn = conn;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
103
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
104 if ((userfunc = aim_callhandler(sess, conn, 0x0017, 0x0007)))
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
105 userfunc(sess, &fr, "");
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
106
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
107 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
108 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
109
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
110 /*
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
111 * In AIM 3.5 protocol, the first stage of login is to request login from the
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
112 * Authorizer, passing it the screen name for verification. If the name is
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
113 * invalid, a 0017/0003 is spit back, with the standard error contents. If
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
114 * valid, a 0017/0007 comes back, which is the signal to send it the main
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
115 * login command (0017/0002).
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
116 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
117 */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
118 faim_export int aim_request_login(aim_session_t *sess, aim_conn_t *conn, const char *sn)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
119 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
120 aim_frame_t *fr;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
121 aim_snacid_t snacid;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
122 aim_tlvlist_t *tl = NULL;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
123
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
124 if (!sess || !conn || !sn)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
125 return -EINVAL;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
126
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
127 if ((sn[0] >= '0') && (sn[0] <= '9'))
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
128 return goddamnicq(sess, conn, sn);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
129
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
130 sess->flags |= AIM_SESS_FLAGS_SNACLOGIN;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
131
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
132 aim_sendflapver(sess, conn);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
133
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
134 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+2+2+strlen(sn))))
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
135 return -ENOMEM;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
136
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
137 snacid = aim_cachesnac(sess, 0x0017, 0x0006, 0x0000, NULL, 0);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
138 aim_putsnac(&fr->data, 0x0017, 0x0006, 0x0000, snacid);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
139
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
140 aim_addtlvtochain_raw(&tl, 0x0001, strlen(sn), sn);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
141 aim_writetlvchain(&fr->data, &tl);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
142 aim_freetlvchain(&tl);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
143
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
144 aim_tx_enqueue(sess, fr);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
145
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
146 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
147 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
148
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
149 /*
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
150 * Part two of the ICQ hack. Note the ignoring of the key and clientinfo.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
151 */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
152 static int goddamnicq2(aim_session_t *sess, aim_conn_t *conn, const char *sn, const char *password)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
153 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
154 static const char clientstr[] = {"ICQ Inc. - Product of ICQ (TM) 2000b.4.65.1.3281.85"};
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
155 static const char lang[] = {"en"};
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
156 static const char country[] = {"us"};
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
157 aim_frame_t *fr;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
158 aim_tlvlist_t *tl = NULL;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
159 char *password_encoded;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
160
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
161 if (!(password_encoded = (char *) malloc(strlen(password))))
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
162 return -ENOMEM;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
163
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
164 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x01, 1152))) {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
165 free(password_encoded);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
166 return -ENOMEM;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
167 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
168
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
169 aim_encode_password(password, password_encoded);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
170
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
171 aimbs_put32(&fr->data, 0x00000001);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
172 aim_addtlvtochain_raw(&tl, 0x0001, strlen(sn), sn);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
173 aim_addtlvtochain_raw(&tl, 0x0002, strlen(password), password_encoded);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
174 aim_addtlvtochain_raw(&tl, 0x0003, strlen(clientstr), clientstr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
175 aim_addtlvtochain16(&tl, 0x0016, 0x010a); /* cliend ID */
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
176 aim_addtlvtochain16(&tl, 0x0017, 0x0004); /* major version */
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
177 aim_addtlvtochain16(&tl, 0x0018, 0x0041); /* minor version */
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
178 aim_addtlvtochain16(&tl, 0x0019, 0x0001); /* point version */
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
179 aim_addtlvtochain16(&tl, 0x001a, 0x0cd1); /* build */
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
180 aim_addtlvtochain32(&tl, 0x0014, 0x00000055); /* distribution chan */
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
181 aim_addtlvtochain_raw(&tl, 0x000f, strlen(lang), lang);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
182 aim_addtlvtochain_raw(&tl, 0x000e, strlen(country), country);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
183
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
184 aim_writetlvchain(&fr->data, &tl);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
185
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
186 free(password_encoded);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
187 aim_freetlvchain(&tl);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
188
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
189 aim_tx_enqueue(sess, fr);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
190
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
191 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
192 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
193
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
194 /*
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
195 * send_login(int socket, char *sn, char *password)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
196 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
197 * This is the initial login request packet.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
198 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
199 * NOTE!! If you want/need to make use of the aim_sendmemblock() function,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
200 * then the client information you send here must exactly match the
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
201 * executable that you're pulling the data from.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
202 *
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
203 * WinAIM 4.8.2540
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
204 * clientstring = "AOL Instant Messenger (SM), version 4.8.2540/WIN32"
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
205 * clientid = 0x0109
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
206 * major = 0x0004
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
207 * minor = 0x0008
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
208 * point = 0x0000
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
209 * build = 0x09ec
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
210 * t(0x0014) = 0x000000af
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
211 * t(0x004a) = 0x01
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
212 *
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
213 * WinAIM 4.3.2188:
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
214 * clientstring = "AOL Instant Messenger (SM), version 4.3.2188/WIN32"
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
215 * clientid = 0x0109
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
216 * major = 0x0400
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
217 * minor = 0x0003
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
218 * point = 0x0000
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
219 * build = 0x088c
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
220 * unknown = 0x00000086
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
221 * lang = "en"
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
222 * country = "us"
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
223 * unknown4a = 0x01
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
224 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
225 * Latest WinAIM that libfaim can emulate without server-side buddylists:
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
226 * clientstring = "AOL Instant Messenger (SM), version 4.1.2010/WIN32"
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
227 * clientid = 0x0004
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
228 * major = 0x0004
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
229 * minor = 0x0001
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
230 * point = 0x0000
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
231 * build = 0x07da
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
232 * unknown= 0x0000004b
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
233 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
234 * WinAIM 3.5.1670:
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
235 * clientstring = "AOL Instant Messenger (SM), version 3.5.1670/WIN32"
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
236 * clientid = 0x0004
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
237 * major = 0x0003
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
238 * minor = 0x0005
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
239 * point = 0x0000
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
240 * build = 0x0686
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
241 * unknown =0x0000002a
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
242 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
243 * Java AIM 1.1.19:
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
244 * clientstring = "AOL Instant Messenger (TM) version 1.1.19 for Java built 03/24/98, freeMem 215871 totalMem 1048567, i686, Linus, #2 SMP Sun Feb 11 03:41:17 UTC 2001 2.4.1-ac9, IBM Corporation, 1.1.8, 45.3, Tue Mar 27 12:09:17 PST 2001"
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
245 * clientid = 0x0001
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
246 * major = 0x0001
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
247 * minor = 0x0001
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
248 * point = (not sent)
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
249 * build = 0x0013
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
250 * unknown= (not sent)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
251 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
252 * AIM for Linux 1.1.112:
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
253 * clientstring = "AOL Instant Messenger (SM)"
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
254 * clientid = 0x1d09
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
255 * major = 0x0001
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
256 * minor = 0x0001
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
257 * point = 0x0001
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
258 * build = 0x0070
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
259 * unknown= 0x0000008b
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
260 * serverstore = 0x01
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
261 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
262 */
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
263 faim_export int aim_send_login(aim_session_t *sess, aim_conn_t *conn, const char *sn, const char *password, struct client_info_s *ci, const char *key)
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
264 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
265 aim_frame_t *fr;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
266 aim_tlvlist_t *tl = NULL;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
267 fu8_t digest[16];
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
268 aim_snacid_t snacid;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
269
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
270 if (!ci || !sn || !password)
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
271 return -EINVAL;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
272
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
273 /*
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
274 * What the XORLOGIN flag _really_ means is that its an ICQ login,
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
275 * which is really stupid and painful, so its not done here.
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
276 *
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
277 */
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
278 if (sess->flags & AIM_SESS_FLAGS_XORLOGIN)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
279 return goddamnicq2(sess, conn, sn, password);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
280
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
281
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
282 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 1152)))
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
283 return -ENOMEM;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
284
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
285 snacid = aim_cachesnac(sess, 0x0017, 0x0002, 0x0000, NULL, 0);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
286 aim_putsnac(&fr->data, 0x0017, 0x0002, 0x0000, snacid);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
287
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
288 aim_addtlvtochain_raw(&tl, 0x0001, strlen(sn), sn);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
289
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
290 aim_encode_password_md5(password, key, digest);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
291 aim_addtlvtochain_raw(&tl, 0x0025, 16, digest);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
292
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
293 if (ci->clientstring)
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
294 aim_addtlvtochain_raw(&tl, 0x0003, strlen(ci->clientstring), ci->clientstring);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
295 aim_addtlvtochain16(&tl, 0x0016, (fu16_t)ci->clientid);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
296 aim_addtlvtochain16(&tl, 0x0017, (fu16_t)ci->major);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
297 aim_addtlvtochain16(&tl, 0x0018, (fu16_t)ci->minor);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
298 aim_addtlvtochain16(&tl, 0x0019, (fu16_t)ci->point);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
299 aim_addtlvtochain16(&tl, 0x001a, (fu16_t)ci->build);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
300 aim_addtlvtochain_raw(&tl, 0x000e, strlen(ci->country), ci->country);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
301 aim_addtlvtochain_raw(&tl, 0x000f, strlen(ci->lang), ci->lang);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
302
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
303 /*
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
304 * If set, old-fashioned buddy lists will not work. You will need
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
305 * to use SSI.
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
306 */
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
307 if (0)
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
308 aim_addtlvtochain8(&tl, 0x004a, 0x01);
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
309
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
310 aim_writetlvchain(&fr->data, &tl);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
311
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
312 aim_freetlvchain(&tl);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
313
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
314 aim_tx_enqueue(sess, fr);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
315
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
316 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
317 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
318
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
319 faim_export int aim_encode_password_md5(const char *password, const char *key, fu8_t *digest)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
320 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
321 md5_state_t state;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
322
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
323 md5_init(&state);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
324 md5_append(&state, (const md5_byte_t *)key, strlen(key));
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
325 md5_append(&state, (const md5_byte_t *)password, strlen(password));
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
326 md5_append(&state, (const md5_byte_t *)AIM_MD5_STRING, strlen(AIM_MD5_STRING));
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
327 md5_finish(&state, (md5_byte_t *)digest);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
328
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
329 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
330 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
331
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
332 /**
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
333 * aim_encode_password - Encode a password using old XOR method
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
334 * @password: incoming password
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
335 * @encoded: buffer to put encoded password
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
336 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
337 * This takes a const pointer to a (null terminated) string
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
338 * containing the unencoded password. It also gets passed
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
339 * an already allocated buffer to store the encoded password.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
340 * This buffer should be the exact length of the password without
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
341 * the null. The encoded password buffer /is not %NULL terminated/.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
342 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
343 * The encoding_table seems to be a fixed set of values. We'll
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
344 * hope it doesn't change over time!
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
345 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
346 * This is only used for the XOR method, not the better MD5 method.
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
347 *
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
348 */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
349 static int aim_encode_password(const char *password, fu8_t *encoded)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
350 {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
351 fu8_t encoding_table[] = {
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
352 #if 0 /* old v1 table */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
353 0xf3, 0xb3, 0x6c, 0x99,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
354 0x95, 0x3f, 0xac, 0xb6,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
355 0xc5, 0xfa, 0x6b, 0x63,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
356 0x69, 0x6c, 0xc3, 0x9f
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
357 #else /* v2.1 table, also works for ICQ */
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
358 0xf3, 0x26, 0x81, 0xc4,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
359 0x39, 0x86, 0xdb, 0x92,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
360 0x71, 0xa3, 0xb9, 0xe6,
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
361 0x53, 0x7a, 0x95, 0x7c
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
362 #endif
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
363 };
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
364 int i;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
365
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
366 for (i = 0; i < strlen(password); i++)
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
367 encoded[i] = (password[i] ^ encoding_table[i]);
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
368
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
369 return 0;
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
370 }
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
371
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
372 /*
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
373 * This is sent back as a general response to the login command.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
374 * It can be either an error or a success, depending on the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
375 * precense of certain TLVs.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
376 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
377 * The client should check the value passed as errorcode. If
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
378 * its nonzero, there was an error.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
379 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
380 */
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
381 static int parse(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
382 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
383 aim_tlvlist_t *tlvlist;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
384 aim_rxcallback_t userfunc;
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
385 struct aim_authresp_info info;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
386 int ret = 0;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
387
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
388 memset(&info, 0, sizeof(info));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
389
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
390 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
391 * Read block of TLVs. All further data is derived
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
392 * from what is parsed here.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
393 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
394 tlvlist = aim_readtlvchain(bs);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
396 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
397 * No matter what, we should have a screen name.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
398 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
399 memset(sess->sn, 0, sizeof(sess->sn));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
400 if (aim_gettlv(tlvlist, 0x0001, 1)) {
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
401 info.sn = aim_gettlv_str(tlvlist, 0x0001, 1);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
402 strncpy(sess->sn, info.sn, sizeof(sess->sn));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
403 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
404
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
405 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
406 * Check for an error code. If so, we should also
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
407 * have an error url.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
408 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
409 if (aim_gettlv(tlvlist, 0x0008, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
410 info.errorcode = aim_gettlv16(tlvlist, 0x0008, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
411 if (aim_gettlv(tlvlist, 0x0004, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
412 info.errorurl = aim_gettlv_str(tlvlist, 0x0004, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
414 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
415 * BOS server address.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
416 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
417 if (aim_gettlv(tlvlist, 0x0005, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
418 info.bosip = aim_gettlv_str(tlvlist, 0x0005, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
419
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
420 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
421 * Authorization cookie.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
422 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
423 if (aim_gettlv(tlvlist, 0x0006, 1)) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
424 aim_tlv_t *tmptlv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
425
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
426 tmptlv = aim_gettlv(tlvlist, 0x0006, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
428 info.cookie = tmptlv->value;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
429 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
430
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
431 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
432 * The email address attached to this account
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
433 * Not available for ICQ logins.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
434 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
435 if (aim_gettlv(tlvlist, 0x0011, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
436 info.email = aim_gettlv_str(tlvlist, 0x0011, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
438 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
439 * The registration status. (Not real sure what it means.)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
440 * Not available for ICQ logins.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
441 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
442 * 1 = No disclosure
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
443 * 2 = Limited disclosure
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
444 * 3 = Full disclosure
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
445 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
446 * This has to do with whether your email address is available
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
447 * to other users or not. AFAIK, this feature is no longer used.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
448 *
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
449 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
450 if (aim_gettlv(tlvlist, 0x0013, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
451 info.regstatus = aim_gettlv16(tlvlist, 0x0013, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
452
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
453 if (aim_gettlv(tlvlist, 0x0040, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
454 info.latestbeta.build = aim_gettlv32(tlvlist, 0x0040, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
455 if (aim_gettlv(tlvlist, 0x0041, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
456 info.latestbeta.url = aim_gettlv_str(tlvlist, 0x0041, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
457 if (aim_gettlv(tlvlist, 0x0042, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
458 info.latestbeta.info = aim_gettlv_str(tlvlist, 0x0042, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
459 if (aim_gettlv(tlvlist, 0x0043, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
460 info.latestbeta.name = aim_gettlv_str(tlvlist, 0x0043, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
461 if (aim_gettlv(tlvlist, 0x0048, 1))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
462 ; /* no idea what this is */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
463
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
464 if (aim_gettlv(tlvlist, 0x0044, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
465 info.latestrelease.build = aim_gettlv32(tlvlist, 0x0044, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
466 if (aim_gettlv(tlvlist, 0x0045, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
467 info.latestrelease.url = aim_gettlv_str(tlvlist, 0x0045, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
468 if (aim_gettlv(tlvlist, 0x0046, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
469 info.latestrelease.info = aim_gettlv_str(tlvlist, 0x0046, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
470 if (aim_gettlv(tlvlist, 0x0047, 1))
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
471 info.latestrelease.name = aim_gettlv_str(tlvlist, 0x0047, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
472 if (aim_gettlv(tlvlist, 0x0049, 1))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
473 ; /* no idea what this is */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
476 if ((userfunc = aim_callhandler(sess, rx->conn, snac ? snac->family : 0x0017, snac ? snac->subtype : 0x0003)))
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
477 ret = userfunc(sess, rx, &info);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
479 free(info.sn);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
480 free(info.bosip);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
481 free(info.errorurl);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
482 free(info.email);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
483 free(info.latestrelease.name);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
484 free(info.latestrelease.url);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
485 free(info.latestrelease.info);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
486 free(info.latestbeta.name);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
487 free(info.latestbeta.url);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
488 free(info.latestbeta.info);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
489
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
490 aim_freetlvchain(&tlvlist);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
491
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
492 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
493 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 * Middle handler for 0017/0007 SNACs. Contains the auth key prefixed
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 * by only its length in a two byte word.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 * Calls the client, which should then use the value to call aim_send_login.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 */
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
502 static int keyparse(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503 {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
504 int keylen, ret = 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
505 aim_rxcallback_t userfunc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
506 char *keystr;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
508 keylen = aimbs_get16(bs);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
509 keystr = aimbs_getstr(bs, keylen);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
511 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
512 ret = userfunc(sess, rx, keystr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
514 free(keystr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
515
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
516 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
517 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
519 static int snachandler(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
522 if (snac->subtype == 0x0003)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
523 return parse(sess, mod, rx, snac, bs);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
524 else if (snac->subtype == 0x0007)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
525 return keyparse(sess, mod, rx, snac, bs);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
526
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
527 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
528 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
529
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
530 faim_internal int auth_modfirst(aim_session_t *sess, aim_module_t *mod)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
533 mod->family = 0x0017;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
534 mod->version = 0x0000;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
535 mod->flags = 0;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
536 strncpy(mod->name, "auth", sizeof(mod->name));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
537 mod->snachandler = snachandler;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
539 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
540 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
541

mercurial