| 242 /* Parse the challenge data. */ |
243 /* Parse the challenge data. */ |
| 243 |
244 |
| 244 elems = g_strsplit(cmd->params[3], ",", 0); |
245 elems = g_strsplit(cmd->params[3], ",", 0); |
| 245 |
246 |
| 246 for (cur = elems; *cur != NULL; cur++){ |
247 for (cur = elems; *cur != NULL; cur++){ |
| 247 tokens = g_strsplit(*cur, "=", 2); |
248 tokens = g_strsplit(*cur, "=", 2); |
| |
249 // gaim_debug_info("MaYuan","challenge %p,key:%s,value:%s\n", |
| |
250 // session->nexus->challenge_data,tokens[0],tokens[1]); |
| |
251 if(tokens[0]&&tokens[1]) |
| 248 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); |
252 g_hash_table_insert(session->nexus->challenge_data, tokens[0], tokens[1]); |
| 249 /* Don't free each of the tokens, only the array. */ |
253 /* Don't free each of the tokens, only the array. */ |
| 250 g_free(tokens); |
254 g_free(tokens); |
| 251 } |
255 } |
| 252 |
256 |
| 253 g_strfreev(elems); |
257 g_strfreev(elems); |
| 254 |
258 |
| 255 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_START); |
259 msn_session_set_login_step(session, MSN_LOGIN_STEP_AUTH_START); |
| 294 session = cmdproc->session; |
298 session = cmdproc->session; |
| 295 account = session->account; |
299 account = session->account; |
| 296 |
300 |
| 297 g_snprintf(proto_str, sizeof(proto_str), "MSNP%d", session->protocol_ver); |
301 g_snprintf(proto_str, sizeof(proto_str), "MSNP%d", session->protocol_ver); |
| 298 |
302 |
| 299 for (i = 1; i < cmd->param_count; i++){ |
303 for (i = 1; i < cmd->param_count -1; i++){ |
| 300 // gaim_debug_info("MaYuan","%s\,proto_str:%s\n",cmd->params[i],proto_str); |
304 gaim_debug_info("MaYuan","%s\,proto_str:%s\n",cmd->params[i],proto_str); |
| 301 if (!strcmp(cmd->params[i], proto_str)) { |
305 if (strcmp(cmd->params[i], proto_str) >= 0) { |
| 302 protocol_supported = TRUE; |
306 protocol_supported = TRUE; |
| 303 break; |
307 break; |
| 304 } |
308 } |
| 305 } |
309 } |
| 306 |
310 |
| 414 g_snprintf(buf + (i*2), 3, "%02x", digest[i]); |
420 g_snprintf(buf + (i*2), 3, "%02x", digest[i]); |
| 415 } |
421 } |
| 416 #else |
422 #else |
| 417 msn_handle_chl(cmd->params[1], buf); |
423 msn_handle_chl(cmd->params[1], buf); |
| 418 #endif |
424 #endif |
| 419 gaim_debug_info("MaYuan","<<challenge:{%s}:{%s}\n",cmd->params[1],buf); |
425 // gaim_debug_info("MaYuan","<<challenge:{%s}:{%s}\n",cmd->params[1],buf); |
| 420 trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID); |
426 trans = msn_transaction_new(cmdproc, "QRY", "%s 32", MSNP13_WLM_PRODUCT_ID); |
| 421 |
427 |
| 422 msn_transaction_set_payload(trans, buf, 32); |
428 msn_transaction_set_payload(trans, buf, 32); |
| 423 |
429 |
| 424 msn_cmdproc_send_trans(cmdproc, trans); |
430 msn_cmdproc_send_trans(cmdproc, trans); |
| 480 xmlnode_set_attrib(c_node,"n",email); |
487 xmlnode_set_attrib(c_node,"n",email); |
| 481 |
488 |
| 482 list_op = g_strdup_printf("%d",user->list_op); |
489 list_op = g_strdup_printf("%d",user->list_op); |
| 483 gaim_debug_info("MaYuan","list_op:%d\n",user->list_op); |
490 gaim_debug_info("MaYuan","list_op:%d\n",user->list_op); |
| 484 xmlnode_set_attrib(c_node,"l",list_op); |
491 xmlnode_set_attrib(c_node,"l",list_op); |
| 485 #if 1 |
492 #if 0 |
| 486 type = g_strdup_printf("%d",user->type); |
493 type = g_strdup_printf("%d",user->type); |
| 487 xmlnode_set_attrib(c_node,"t",type); |
494 xmlnode_set_attrib(c_node,"t",type); |
| 488 #else |
495 #else |
| 489 xmlnode_set_attrib(c_node,"t","1"); |
496 type = g_strdup_printf("1"); |
| |
497 xmlnode_set_attrib(c_node,"t",type); |
| 490 #endif |
498 #endif |
| 491 xmlnode_insert_child(d_node, c_node); |
499 xmlnode_insert_child(d_node, c_node); |
| 492 |
500 |
| 493 g_free(list_op); |
501 g_free(list_op); |
| 494 g_free(type); |
502 g_free(type); |
| 495 } |
503 } |
| 496 |
504 |
| 497 payload = xmlnode_to_str(adl_node,payload_len); |
505 payload = xmlnode_to_str(adl_node,&payload_len); |
| 498 |
506 |
| 499 gaim_debug_info("MaYuan","ADL{%s}\n",payload); |
507 gaim_debug_info("MaYuan","ADL{%s}\n",payload); |
| 500 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); |
508 trans = msn_transaction_new(cmdproc, "ADL","%d",strlen(payload)); |
| 501 |
509 |
| 502 msn_transaction_set_payload(trans, payload, strlen(payload)); |
510 msn_transaction_set_payload(trans, payload, strlen(payload)); |
| 503 |
511 |
| 504 msn_cmdproc_send_trans(cmdproc, trans); |
512 msn_cmdproc_send_trans(cmdproc, trans); |
| 505 } |
513 } |
| 506 |
514 |
| 507 static void |
515 static void |
| |
516 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| |
517 { |
| |
518 gaim_debug_info("MaYuan","Process BLP\n"); |
| |
519 } |
| |
520 |
| |
521 static void |
| 508 adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
522 adl_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| 509 { |
523 { |
| 510 |
524 gaim_debug_info("MaYuan","Process ADL\n"); |
| 511 } |
525 } |
| 512 |
526 |
| 513 static void |
527 static void |
| 514 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
528 rml_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| 515 { |
529 { |
| 1201 gaim_debug_info("MaYuan","Processing GCF... \n"); |
1214 gaim_debug_info("MaYuan","Processing GCF... \n"); |
| 1202 if(cmd->payload_len == 0){ |
1215 if(cmd->payload_len == 0){ |
| 1203 return; |
1216 return; |
| 1204 } |
1217 } |
| 1205 /*get the payload content*/ |
1218 /*get the payload content*/ |
| |
1219 gaim_debug_info("MaYuan","GCF{%s}\n",cmd->payload); |
| 1206 } |
1220 } |
| 1207 |
1221 |
| 1208 static void |
1222 static void |
| 1209 sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
1223 sbs_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| 1210 { |
1224 { |
| 1211 gaim_debug_info("MaYuan","Processing SBS... \n"); |
1225 gaim_debug_info("MaYuan","Processing SBS... \n"); |
| 1212 if(cmd->payload_len == 0){ |
1226 if(cmd->payload_len == 0){ |
| 1213 return; |
1227 return; |
| 1214 } |
1228 } |
| 1215 /*get the payload content*/ |
1229 /*get the payload content*/ |
| |
1230 } |
| |
1231 |
| |
1232 static void |
| |
1233 ubx_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| |
1234 { |
| |
1235 gaim_debug_info("MaYuan","UBX... \n"); |
| |
1236 } |
| |
1237 |
| |
1238 static void |
| |
1239 uux_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) |
| |
1240 { |
| |
1241 gaim_debug_info("MaYuan","UUX... \n"); |
| 1216 } |
1242 } |
| 1217 |
1243 |
| 1218 /************************************************************************** |
1244 /************************************************************************** |
| 1219 * Message Types |
1245 * Message Types |
| 1220 **************************************************************************/ |
1246 **************************************************************************/ |
| 1436 } |
1462 } |
| 1437 |
1463 |
| 1438 void |
1464 void |
| 1439 msn_notification_add_buddy(MsnNotification *notification, const char *list, |
1465 msn_notification_add_buddy(MsnNotification *notification, const char *list, |
| 1440 const char *who, const char *store_name, |
1466 const char *who, const char *store_name, |
| 1441 int group_id) |
1467 const char *group_id) |
| 1442 { |
1468 { |
| 1443 MsnCmdProc *cmdproc; |
1469 MsnCmdProc *cmdproc; |
| 1444 cmdproc = notification->servconn->cmdproc; |
1470 cmdproc = notification->servconn->cmdproc; |
| 1445 |
1471 |
| 1446 if (group_id < 0 && !strcmp(list, "FL")) |
1472 if (group_id != NULL && !strcmp(list, "FL")) |
| 1447 group_id = 0; |
1473 |
| 1448 |
1474 if (group_id >= 0){ |
| 1449 if (group_id >= 0) |
|
| 1450 { |
|
| 1451 msn_cmdproc_send(cmdproc, "ADD", "%s %s %s %d", |
1475 msn_cmdproc_send(cmdproc, "ADD", "%s %s %s %d", |
| 1452 list, who, store_name, group_id); |
1476 list, who, store_name, group_id); |
| 1453 } |
1477 }else{ |
| 1454 else |
|
| 1455 { |
|
| 1456 msn_cmdproc_send(cmdproc, "ADD", "%s %s %s", list, who, store_name); |
1478 msn_cmdproc_send(cmdproc, "ADD", "%s %s %s", list, who, store_name); |
| 1457 } |
1479 } |
| 1458 } |
1480 } |
| 1459 |
1481 |
| 1460 void |
1482 void |
| 1461 msn_notification_rem_buddy(MsnNotification *notification, const char *list, |
1483 msn_notification_rem_buddy(MsnNotification *notification, const char *list, |
| 1462 const char *who, int group_id) |
1484 const char *who, const char *group_id) |
| 1463 { |
1485 { |
| 1464 MsnCmdProc *cmdproc; |
1486 MsnCmdProc *cmdproc; |
| 1465 cmdproc = notification->servconn->cmdproc; |
1487 cmdproc = notification->servconn->cmdproc; |
| 1466 |
1488 |
| 1467 if (group_id >= 0) |
1489 if (group_id != NULL){ |
| 1468 { |
|
| 1469 msn_cmdproc_send(cmdproc, "REM", "%s %s %d", list, who, group_id); |
1490 msn_cmdproc_send(cmdproc, "REM", "%s %s %d", list, who, group_id); |
| 1470 } |
1491 }else{ |
| 1471 else |
|
| 1472 { |
|
| 1473 msn_cmdproc_send(cmdproc, "REM", "%s %s", list, who); |
1492 msn_cmdproc_send(cmdproc, "REM", "%s %s", list, who); |
| 1474 } |
1493 } |
| 1475 } |
1494 } |
| 1476 |
1495 |
| 1477 /************************************************************************** |
1496 /************************************************************************** |
| 1487 |
1506 |
| 1488 /* Synchronous */ |
1507 /* Synchronous */ |
| 1489 msn_table_add_cmd(cbs_table, "CHG", "CHG", NULL); |
1508 msn_table_add_cmd(cbs_table, "CHG", "CHG", NULL); |
| 1490 msn_table_add_cmd(cbs_table, "CHG", "ILN", iln_cmd); |
1509 msn_table_add_cmd(cbs_table, "CHG", "ILN", iln_cmd); |
| 1491 msn_table_add_cmd(cbs_table, "ADD", "ADD", add_cmd); |
1510 msn_table_add_cmd(cbs_table, "ADD", "ADD", add_cmd); |
| 1492 msn_table_add_cmd(cbs_table, "ADD", "ILN", iln_cmd); |
1511 msn_table_add_cmd(cbs_table, "ADL", "ILN", iln_cmd); |
| 1493 msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd); |
1512 msn_table_add_cmd(cbs_table, "REM", "REM", rem_cmd); |
| 1494 msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); |
1513 msn_table_add_cmd(cbs_table, "USR", "USR", usr_cmd); |
| 1495 msn_table_add_cmd(cbs_table, "USR", "XFR", xfr_cmd); |
1514 msn_table_add_cmd(cbs_table, "USR", "XFR", xfr_cmd); |
| 1496 msn_table_add_cmd(cbs_table, "USR", "GCF", gcf_cmd); |
1515 msn_table_add_cmd(cbs_table, "USR", "GCF", gcf_cmd); |
| 1497 msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd); |
1516 msn_table_add_cmd(cbs_table, "SYN", "SYN", syn_cmd); |
| 1498 msn_table_add_cmd(cbs_table, "CVR", "CVR", cvr_cmd); |
1517 msn_table_add_cmd(cbs_table, "CVR", "CVR", cvr_cmd); |
| 1499 msn_table_add_cmd(cbs_table, "VER", "VER", ver_cmd); |
1518 msn_table_add_cmd(cbs_table, "VER", "VER", ver_cmd); |
| 1500 msn_table_add_cmd(cbs_table, "REA", "REA", rea_cmd); |
1519 msn_table_add_cmd(cbs_table, "REA", "REA", rea_cmd); |
| 1501 msn_table_add_cmd(cbs_table, "PRP", "PRP", prp_cmd); |
1520 msn_table_add_cmd(cbs_table, "PRP", "PRP", prp_cmd); |
| 1502 /* msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd); */ |
1521 msn_table_add_cmd(cbs_table, "BLP", "BLP", blp_cmd); |
| 1503 msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL); |
1522 // msn_table_add_cmd(cbs_table, "BLP", "BLP", NULL); |
| 1504 msn_table_add_cmd(cbs_table, "REG", "REG", reg_cmd); |
1523 msn_table_add_cmd(cbs_table, "REG", "REG", reg_cmd); |
| 1505 msn_table_add_cmd(cbs_table, "ADG", "ADG", adg_cmd); |
1524 msn_table_add_cmd(cbs_table, "ADG", "ADG", adg_cmd); |
| 1506 msn_table_add_cmd(cbs_table, "RMG", "RMG", rmg_cmd); |
1525 msn_table_add_cmd(cbs_table, "RMG", "RMG", rmg_cmd); |
| 1507 msn_table_add_cmd(cbs_table, "XFR", "XFR", xfr_cmd); |
1526 msn_table_add_cmd(cbs_table, "XFR", "XFR", xfr_cmd); |
| 1508 |
1527 |
| 1513 msn_table_add_cmd(cbs_table, NULL, "SBS", sbs_cmd); |
1532 msn_table_add_cmd(cbs_table, NULL, "SBS", sbs_cmd); |
| 1514 msn_table_add_cmd(cbs_table, NULL, "NOT", not_cmd); |
1533 msn_table_add_cmd(cbs_table, NULL, "NOT", not_cmd); |
| 1515 |
1534 |
| 1516 msn_table_add_cmd(cbs_table, NULL, "CHL", chl_cmd); |
1535 msn_table_add_cmd(cbs_table, NULL, "CHL", chl_cmd); |
| 1517 msn_table_add_cmd(cbs_table, NULL, "REM", rem_cmd); |
1536 msn_table_add_cmd(cbs_table, NULL, "REM", rem_cmd); |
| 1518 msn_table_add_cmd(cbs_table, NULL, "ADD", add_cmd); |
1537 msn_table_add_cmd(cbs_table, NULL, "ADL", adl_cmd); |
| 1519 |
1538 |
| 1520 msn_table_add_cmd(cbs_table, NULL, "QRY", NULL); |
1539 msn_table_add_cmd(cbs_table, NULL, "QRY", NULL); |
| 1521 msn_table_add_cmd(cbs_table, NULL, "QNG", NULL); |
1540 msn_table_add_cmd(cbs_table, NULL, "QNG", NULL); |
| 1522 msn_table_add_cmd(cbs_table, NULL, "FLN", fln_cmd); |
1541 msn_table_add_cmd(cbs_table, NULL, "FLN", fln_cmd); |
| 1523 msn_table_add_cmd(cbs_table, NULL, "NLN", nln_cmd); |
1542 msn_table_add_cmd(cbs_table, NULL, "NLN", nln_cmd); |
| 1524 msn_table_add_cmd(cbs_table, NULL, "ILN", iln_cmd); |
1543 msn_table_add_cmd(cbs_table, NULL, "ILN", iln_cmd); |
| 1525 msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); |
1544 msn_table_add_cmd(cbs_table, NULL, "OUT", out_cmd); |
| 1526 msn_table_add_cmd(cbs_table, NULL, "RNG", rng_cmd); |
1545 msn_table_add_cmd(cbs_table, NULL, "RNG", rng_cmd); |
| |
1546 |
| |
1547 msn_table_add_cmd(cbs_table, NULL, "UBX", ubx_cmd); |
| |
1548 msn_table_add_cmd(cbs_table, NULL, "UUX", uux_cmd); |
| 1527 |
1549 |
| 1528 msn_table_add_cmd(cbs_table, NULL, "URL", url_cmd); |
1550 msn_table_add_cmd(cbs_table, NULL, "URL", url_cmd); |
| 1529 |
1551 |
| 1530 msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd); |
1552 msn_table_add_cmd(cbs_table, "fallback", "XFR", xfr_cmd); |
| 1531 |
1553 |