comparison src/protocols/msn/msn.c @ 2213:a226ebf4be47

[gaim-migrate @ 2223] hi committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 05 Sep 2001 18:34:34 +0000
parents 3a6fd1e8f00a
children 20a4d5da0b95
comparison
equal deleted inserted replaced
2212:c9a4063171e9 2213:a226ebf4be47
802 802
803 serv_got_update(gc, user, 1, 0, 0, 0, status, 0); 803 serv_got_update(gc, user, 1, 0, 0, 0, status, 0);
804 } else if (!g_strncasecmp(buf, "OUT", 3)) { 804 } else if (!g_strncasecmp(buf, "OUT", 3)) {
805 } else if (!g_strncasecmp(buf, "PRP", 3)) { 805 } else if (!g_strncasecmp(buf, "PRP", 3)) {
806 } else if (!g_strncasecmp(buf, "QRY", 3)) { 806 } else if (!g_strncasecmp(buf, "QRY", 3)) {
807 } else if (!g_strncasecmp(buf, "REA", 3)) {
808 char *friend, *tmp = buf;
809
810 GET_NEXT(tmp);
811 GET_NEXT(tmp);
812 GET_NEXT(tmp);
813 GET_NEXT(tmp);
814 friend = tmp;
815
816 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend);
807 } else if (!g_strncasecmp(buf, "REM", 3)) { 817 } else if (!g_strncasecmp(buf, "REM", 3)) {
808 } else if (!g_strncasecmp(buf, "RNG", 3)) { 818 } else if (!g_strncasecmp(buf, "RNG", 3)) {
809 struct msn_switchboard *ms; 819 struct msn_switchboard *ms;
810 char *sessid, *ssaddr, *auth, *user; 820 char *sessid, *ssaddr, *auth, *user;
811 int port, i = 0; 821 int port, i = 0;
985 GET_NEXT(tmp); 995 GET_NEXT(tmp);
986 resp = tmp; 996 resp = tmp;
987 GET_NEXT(tmp); 997 GET_NEXT(tmp);
988 GET_NEXT(tmp); 998 GET_NEXT(tmp);
989 friend = tmp; 999 friend = tmp;
990 1000 GET_NEXT(tmp);
991 debug_printf("resp: %s; friend: %s\n", resp, friend);
992 1001
993 /* so here, we're either getting the challenge or the OK */ 1002 /* so here, we're either getting the challenge or the OK */
994 if (strstr(buf, "OK")) { 1003 if (!g_strcasecmp(resp, "OK")) {
995 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend); 1004 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", friend);
996 1005
997 g_snprintf(buf, sizeof(buf), "SYN %d 0\n", ++md->trId); 1006 g_snprintf(buf, sizeof(buf), "SYN %d 0\n", ++md->trId);
998 if (msn_write(md->fd, buf, strlen(buf)) < 0) { 1007 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
999 hide_login_progress(gc, "Unable to write"); 1008 hide_login_progress(gc, "Unable to write");
1018 account_online(gc); 1027 account_online(gc);
1019 serv_finish_login(gc); 1028 serv_finish_login(gc);
1020 1029
1021 gaim_input_remove(md->inpa); 1030 gaim_input_remove(md->inpa);
1022 md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_callback, gc); 1031 md->inpa = gaim_input_add(md->fd, GAIM_INPUT_READ, msn_callback, gc);
1023 } else if (strstr(buf, "MD5")) { 1032 } else if (!g_strcasecmp(resp, "MD5")) {
1024 char *challenge = buf;
1025 char buf2[MSN_BUF_LEN]; 1033 char buf2[MSN_BUF_LEN];
1026 md5_state_t st; 1034 md5_state_t st;
1027 md5_byte_t di[16]; 1035 md5_byte_t di[16];
1028 int spaces = 4;
1029 int i; 1036 int i;
1030 1037
1031 while (spaces) { 1038 g_snprintf(buf2, sizeof(buf2), "%s%s", friend, gc->password);
1032 if (isspace(*challenge)) {
1033 spaces--;
1034 while (isspace(challenge[1]))
1035 challenge++;
1036 }
1037 challenge++;
1038 }
1039
1040 g_snprintf(buf2, sizeof(buf2), "%s%s", challenge, gc->password);
1041 1039
1042 md5_init(&st); 1040 md5_init(&st);
1043 md5_append(&st, (const md5_byte_t *)buf2, strlen(buf2)); 1041 md5_append(&st, (const md5_byte_t *)buf2, strlen(buf2));
1044 md5_finish(&st, di); 1042 md5_finish(&st, di);
1045 1043
1391 if (msn_write(md->fd, buf, strlen(buf)) < 0) { 1389 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
1392 hide_login_progress(gc, "Write error"); 1390 hide_login_progress(gc, "Write error");
1393 signoff(gc); 1391 signoff(gc);
1394 return; 1392 return;
1395 } 1393 }
1394 }
1395
1396 static void msn_act_id(gpointer data, char *entry)
1397 {
1398 struct gaim_connection *gc = data;
1399 struct msn_data *md = gc->proto_data;
1400 char buf[MSN_BUF_LEN];
1401
1402 g_snprintf(buf, sizeof(buf), "REA %d %s %s\n", ++md->trId, gc->username, entry);
1403 if (msn_write(md->fd, buf, strlen(buf)) < 0) {
1404 hide_login_progress(gc, "Write error");
1405 signoff(gc);
1406 return;
1407 }
1408 }
1409
1410 static void msn_do_action(struct gaim_connection *gc, char *act)
1411 {
1412 if (!strcmp(act, "Set Friendly Name")) {
1413 do_prompt_dialog("Set Friendly Name:", gc, msn_act_id, NULL);
1414 }
1415 }
1416
1417 static GList *msn_actions()
1418 {
1419 GList *m = NULL;
1420
1421 m = g_list_append(m, "Set Friendly Name");
1422
1423 return m;
1396 } 1424 }
1397 1425
1398 static struct prpl *my_protocol = NULL; 1426 static struct prpl *my_protocol = NULL;
1399 1427
1400 void msn_init(struct prpl *ret) 1428 void msn_init(struct prpl *ret)
1414 ret->remove_buddy = msn_rem_buddy; 1442 ret->remove_buddy = msn_rem_buddy;
1415 ret->chat_send = msn_chat_send; 1443 ret->chat_send = msn_chat_send;
1416 ret->chat_invite = msn_chat_invite; 1444 ret->chat_invite = msn_chat_invite;
1417 ret->chat_leave = msn_chat_leave; 1445 ret->chat_leave = msn_chat_leave;
1418 ret->normalize = msn_normalize; 1446 ret->normalize = msn_normalize;
1447 ret->do_action = msn_do_action;
1448 ret->actions = msn_actions;
1419 1449
1420 my_protocol = ret; 1450 my_protocol = ret;
1421 } 1451 }
1422 1452
1423 #ifndef STATIC 1453 #ifndef STATIC