| 141 frame = flap_frame_new(od, 0x01, 1152); |
141 frame = flap_frame_new(od, 0x01, 1152); |
| 142 |
142 |
| 143 aim_encode_password(password, password_encoded); |
143 aim_encode_password(password, password_encoded); |
| 144 |
144 |
| 145 byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */ |
145 byte_stream_put32(&frame->data, 0x00000001); /* FLAP Version */ |
| 146 aim_tlvlist_add_str(&tl, 0x0001, sn); |
146 aim_tlvlist_add_str(&tlvlist, 0x0001, sn); |
| 147 aim_tlvlist_add_raw(&tl, 0x0002, passwdlen, password_encoded); |
147 aim_tlvlist_add_raw(&tlvlist, 0x0002, passwdlen, password_encoded); |
| 148 |
148 |
| 149 if (ci->clientstring) |
149 if (ci->clientstring) |
| 150 aim_tlvlist_add_str(&tl, 0x0003, ci->clientstring); |
150 aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring); |
| 151 aim_tlvlist_add_16(&tl, 0x0016, (guint16)ci->clientid); |
151 aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid); |
| 152 aim_tlvlist_add_16(&tl, 0x0017, (guint16)ci->major); |
152 aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); |
| 153 aim_tlvlist_add_16(&tl, 0x0018, (guint16)ci->minor); |
153 aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); |
| 154 aim_tlvlist_add_16(&tl, 0x0019, (guint16)ci->point); |
154 aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point); |
| 155 aim_tlvlist_add_16(&tl, 0x001a, (guint16)ci->build); |
155 aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build); |
| 156 aim_tlvlist_add_32(&tl, 0x0014, (guint32)ci->distrib); /* distribution chan */ |
156 aim_tlvlist_add_32(&tlvlist, 0x0014, (guint32)ci->distrib); /* distribution chan */ |
| 157 aim_tlvlist_add_str(&tl, 0x000f, ci->lang); |
157 aim_tlvlist_add_str(&tlvlist, 0x000f, ci->lang); |
| 158 aim_tlvlist_add_str(&tl, 0x000e, ci->country); |
158 aim_tlvlist_add_str(&tlvlist, 0x000e, ci->country); |
| 159 |
159 |
| 160 aim_tlvlist_write(&frame->data, &tl); |
160 aim_tlvlist_write(&frame->data, &tlvlist); |
| 161 |
161 |
| 162 g_free(password_encoded); |
162 g_free(password_encoded); |
| 163 aim_tlvlist_free(&tl); |
163 aim_tlvlist_free(tlvlist); |
| 164 |
164 |
| 165 flap_connection_send(conn, frame); |
165 flap_connection_send(conn, frame); |
| 166 |
166 |
| 167 return 0; |
167 return 0; |
| 168 } |
168 } |
| 218 frame = flap_frame_new(od, 0x02, 1152); |
218 frame = flap_frame_new(od, 0x02, 1152); |
| 219 |
219 |
| 220 snacid = aim_cachesnac(od, 0x0017, 0x0002, 0x0000, NULL, 0); |
220 snacid = aim_cachesnac(od, 0x0017, 0x0002, 0x0000, NULL, 0); |
| 221 aim_putsnac(&frame->data, 0x0017, 0x0002, 0x0000, snacid); |
221 aim_putsnac(&frame->data, 0x0017, 0x0002, 0x0000, snacid); |
| 222 |
222 |
| 223 aim_tlvlist_add_str(&tl, 0x0001, sn); |
223 aim_tlvlist_add_str(&tlvlist, 0x0001, sn); |
| 224 |
224 |
| 225 /* Truncate ICQ and AOL passwords, if necessary */ |
225 /* Truncate ICQ and AOL passwords, if necessary */ |
| 226 password_len = strlen(password); |
226 password_len = strlen(password); |
| 227 if (isdigit(sn[0]) && (password_len > MAXICQPASSLEN)) |
227 if (isdigit(sn[0]) && (password_len > MAXICQPASSLEN)) |
| 228 password_len = MAXICQPASSLEN; |
228 password_len = MAXICQPASSLEN; |
| 229 else if (truncate_pass && password_len > 8) |
229 else if (truncate_pass && password_len > 8) |
| 230 password_len = 8; |
230 password_len = 8; |
| 231 |
231 |
| 232 aim_encode_password_md5(password, password_len, key, digest); |
232 aim_encode_password_md5(password, password_len, key, digest); |
| 233 |
233 |
| 234 aim_tlvlist_add_raw(&tl, 0x0025, 16, digest); |
234 aim_tlvlist_add_raw(&tlvlist, 0x0025, 16, digest); |
| 235 |
235 |
| 236 #ifndef USE_OLD_MD5 |
236 #ifndef USE_OLD_MD5 |
| 237 aim_tlvlist_add_noval(&tl, 0x004c); |
237 aim_tlvlist_add_noval(&tlvlist, 0x004c); |
| 238 #endif |
238 #endif |
| 239 |
239 |
| 240 if (ci->clientstring) |
240 if (ci->clientstring) |
| 241 aim_tlvlist_add_str(&tl, 0x0003, ci->clientstring); |
241 aim_tlvlist_add_str(&tlvlist, 0x0003, ci->clientstring); |
| 242 aim_tlvlist_add_16(&tl, 0x0016, (guint16)ci->clientid); |
242 aim_tlvlist_add_16(&tlvlist, 0x0016, (guint16)ci->clientid); |
| 243 aim_tlvlist_add_16(&tl, 0x0017, (guint16)ci->major); |
243 aim_tlvlist_add_16(&tlvlist, 0x0017, (guint16)ci->major); |
| 244 aim_tlvlist_add_16(&tl, 0x0018, (guint16)ci->minor); |
244 aim_tlvlist_add_16(&tlvlist, 0x0018, (guint16)ci->minor); |
| 245 aim_tlvlist_add_16(&tl, 0x0019, (guint16)ci->point); |
245 aim_tlvlist_add_16(&tlvlist, 0x0019, (guint16)ci->point); |
| 246 aim_tlvlist_add_16(&tl, 0x001a, (guint16)ci->build); |
246 aim_tlvlist_add_16(&tlvlist, 0x001a, (guint16)ci->build); |
| 247 aim_tlvlist_add_32(&tl, 0x0014, (guint32)ci->distrib); |
247 aim_tlvlist_add_32(&tlvlist, 0x0014, (guint32)ci->distrib); |
| 248 aim_tlvlist_add_str(&tl, 0x000f, ci->lang); |
248 aim_tlvlist_add_str(&tlvlist, 0x000f, ci->lang); |
| 249 aim_tlvlist_add_str(&tl, 0x000e, ci->country); |
249 aim_tlvlist_add_str(&tlvlist, 0x000e, ci->country); |
| 250 |
250 |
| 251 /* |
251 /* |
| 252 * If set, old-fashioned buddy lists will not work. You will need |
252 * If set, old-fashioned buddy lists will not work. You will need |
| 253 * to use SSI. |
253 * to use SSI. |
| 254 */ |
254 */ |
| 255 aim_tlvlist_add_8(&tl, 0x004a, 0x01); |
255 aim_tlvlist_add_8(&tlvlist, 0x004a, 0x01); |
| 256 |
256 |
| 257 aim_tlvlist_write(&frame->data, &tl); |
257 aim_tlvlist_write(&frame->data, &tlvlist); |
| 258 |
258 |
| 259 aim_tlvlist_free(&tl); |
259 aim_tlvlist_free(tlvlist); |
| 260 |
260 |
| 261 flap_connection_send(conn, frame); |
261 flap_connection_send(conn, frame); |
| 262 |
262 |
| 263 return 0; |
263 return 0; |
| 264 } |
264 } |
| 484 frame = flap_frame_new(od, 0x02, 10+2+2+strlen(sn)+8); |
484 frame = flap_frame_new(od, 0x02, 10+2+2+strlen(sn)+8); |
| 485 |
485 |
| 486 snacid = aim_cachesnac(od, 0x0017, 0x0006, 0x0000, NULL, 0); |
486 snacid = aim_cachesnac(od, 0x0017, 0x0006, 0x0000, NULL, 0); |
| 487 aim_putsnac(&frame->data, 0x0017, 0x0006, 0x0000, snacid); |
487 aim_putsnac(&frame->data, 0x0017, 0x0006, 0x0000, snacid); |
| 488 |
488 |
| 489 aim_tlvlist_add_str(&tl, 0x0001, sn); |
489 aim_tlvlist_add_str(&tlvlist, 0x0001, sn); |
| 490 |
490 |
| 491 /* Tell the server we support SecurID logins. */ |
491 /* Tell the server we support SecurID logins. */ |
| 492 aim_tlvlist_add_noval(&tl, 0x004b); |
492 aim_tlvlist_add_noval(&tlvlist, 0x004b); |
| 493 |
493 |
| 494 /* Unknown. Sent in recent WinAIM clients.*/ |
494 /* Unknown. Sent in recent WinAIM clients.*/ |
| 495 aim_tlvlist_add_noval(&tl, 0x005a); |
495 aim_tlvlist_add_noval(&tlvlist, 0x005a); |
| 496 |
496 |
| 497 aim_tlvlist_write(&frame->data, &tl); |
497 aim_tlvlist_write(&frame->data, &tlvlist); |
| 498 aim_tlvlist_free(&tl); |
498 aim_tlvlist_free(tlvlist); |
| 499 |
499 |
| 500 flap_connection_send(conn, frame); |
500 flap_connection_send(conn, frame); |
| 501 |
501 |
| 502 return 0; |
502 return 0; |
| 503 } |
503 } |