comparison src/protocols/gg/gg.c @ 5603:ea09a005a10d

[gaim-migrate @ 6007] this compiles, should work ok committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Sat, 31 May 2003 15:06:17 +0000
parents 7805a9a2c6ba
children 4fa8ca4f4259
comparison
equal deleted inserted replaced
5602:67900446fab9 5603:ea09a005a10d
1 /* 1 /*
2 * gaim - Gadu-Gadu Protocol Plugin 2 * gaim - Gadu-Gadu Protocol Plugin
3 * $Id: gg.c 6001 2003-05-31 14:29:44Z lschiere $ 3 * $Id: gg.c 6007 2003-05-31 15:06:17Z faceprint $
4 * 4 *
5 * Copyright (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL> 5 * Copyright (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 8 * it under the terms of the GNU General Public License as published by
54 #include "win32dep.h" 54 #include "win32dep.h"
55 #endif 55 #endif
56 56
57 #define USEROPT_NICK 0 57 #define USEROPT_NICK 0
58 58
59 #define GG_CONNECT_STEPS 5
60
59 #define AGG_BUF_LEN 1024 61 #define AGG_BUF_LEN 1024
60 62
61 #define AGG_GENDER_NONE -1 63 #define AGG_GENDER_NONE -1
62 64
63 #define AGG_PUBDIR_USERLIST_EXPORT_FORM "/appsvc/fmcontactsput.asp" 65 #define AGG_PUBDIR_USERLIST_EXPORT_FORM "/appsvc/fmcontactsput.asp"
176 default: 178 default:
177 g_snprintf(msg, sizeof(msg), _("Unknown Error Code.")); 179 g_snprintf(msg, sizeof(msg), _("Unknown Error Code."));
178 break; 180 break;
179 } 181 }
180 182
181 hide_login_progress(gc, msg); 183 gaim_connection_error(gc, msg);
182 184
183 return msg; 185 return msg;
184 } 186 }
185 187
186 static void agg_set_away(GaimConnection *gc, char *state, char *msg) 188 static void agg_set_away(GaimConnection *gc, char *state, char *msg)
298 300
299 if (gd->sess->fd != source) 301 if (gd->sess->fd != source)
300 gd->sess->fd = source; 302 gd->sess->fd = source;
301 303
302 if (source == 0) { 304 if (source == 0) {
303 hide_login_progress(gc, _("Could not connect")); 305 gaim_connection_error(gc, _("Could not connect"));
304 signoff(gc);
305 return; 306 return;
306 } 307 }
307 308
308 if (!(e = gg_watch_fd(gd->sess))) { 309 if (!(e = gg_watch_fd(gd->sess))) {
309 debug_printf("main_callback: gg_watch_fd failed - CRITICAL!\n"); 310 debug_printf("main_callback: gg_watch_fd failed - CRITICAL!\n");
310 hide_login_progress(gc, _("Unable to read socket")); 311 gaim_connection_error(gc, _("Unable to read socket"));
311 signoff(gc);
312 return; 312 return;
313 } 313 }
314 314
315 switch (e->type) { 315 switch (e->type) {
316 case GG_EVENT_NONE: 316 case GG_EVENT_NONE:
321 break; 321 break;
322 case GG_EVENT_CONN_FAILED: 322 case GG_EVENT_CONN_FAILED:
323 if (gc->inpa) 323 if (gc->inpa)
324 gaim_input_remove(gc->inpa); 324 gaim_input_remove(gc->inpa);
325 handle_errcode(gc, e->event.failure); 325 handle_errcode(gc, e->event.failure);
326 signoff(gc);
327 break; 326 break;
328 case GG_EVENT_MSG: 327 case GG_EVENT_MSG:
329 { 328 {
330 gchar *imsg; 329 gchar *imsg;
331 gchar user[20]; 330 gchar user[20];
413 if (!g_slist_find(connections, gc)) { 412 if (!g_slist_find(connections, gc)) {
414 close(source); 413 close(source);
415 return; 414 return;
416 } 415 }
417 debug_printf("Found GG connection\n"); 416 debug_printf("Found GG connection\n");
418 417
419 if (source == 0) { 418 if (source == 0) {
420 hide_login_progress(gc, _("Unable to connect.")); 419 gaim_connection_error(gc, _("Unable to connect."));
421 signoff(gc);
422 return; 420 return;
423 } 421 }
424 422
425 gd->sess->fd = source; 423 gd->sess->fd = source;
426 424
431 debug_printf("Adding watch on fd\n"); 429 debug_printf("Adding watch on fd\n");
432 } 430 }
433 debug_printf("Checking State.\n"); 431 debug_printf("Checking State.\n");
434 switch (gd->sess->state) { 432 switch (gd->sess->state) {
435 case GG_STATE_READING_DATA: 433 case GG_STATE_READING_DATA:
436 set_login_progress(gc, 2, _("Reading data")); 434 gaim_connection_update_progress(gc, _("Reading data"), 2, GG_CONNECT_STEPS);
437 break; 435 break;
438 case GG_STATE_CONNECTING_GG: 436 case GG_STATE_CONNECTING_GG:
439 set_login_progress(gc, 3, _("Balancer handshake")); 437 gaim_connection_update_progress(gc, _("Balancer handshake"), 3, GG_CONNECT_STEPS);
440 break; 438 break;
441 case GG_STATE_READING_KEY: 439 case GG_STATE_READING_KEY:
442 set_login_progress(gc, 4, _("Reading server key")); 440 gaim_connection_update_progress(gc, _("Reading server key"), 4, GG_CONNECT_STEPS);
443 break; 441 break;
444 case GG_STATE_READING_REPLY: 442 case GG_STATE_READING_REPLY:
445 set_login_progress(gc, 5, _("Exchanging key hash")); 443 gaim_connection_update_progress(gc, _("Exchanging key hash"), 5, GG_CONNECT_STEPS);
446 break; 444 break;
447 default: 445 default:
448 debug_printf("No State found\n"); 446 debug_printf("No State found\n");
449 break; 447 break;
450 } 448 }
451 debug_printf("gg_watch_fd\n"); 449 debug_printf("gg_watch_fd\n");
452 if (!(e = gg_watch_fd(gd->sess))) { 450 if (!(e = gg_watch_fd(gd->sess))) {
453 debug_printf("login_callback: gg_watch_fd failed - CRITICAL!\n"); 451 debug_printf("login_callback: gg_watch_fd failed - CRITICAL!\n");
454 hide_login_progress(gc, _("Critical error in GG library\n")); 452 gaim_connection_error(gc, _("Critical error in GG library\n"));
455 signoff(gc);
456 return; 453 return;
457 } 454 }
458 455
459 /* If we are GG_STATE_CONNECTING_GG then we still need to connect, as 456 /* If we are GG_STATE_CONNECTING_GG then we still need to connect, as
460 we could not use proxy_connect in libgg.c */ 457 we could not use proxy_connect in libgg.c */
469 466
470 ip.s_addr = gd->sess->server_ip; 467 ip.s_addr = gd->sess->server_ip;
471 468
472 if (proxy_connect(gc->account, inet_ntoa(ip), gd->sess->port, login_callback, gc) < 0) { 469 if (proxy_connect(gc->account, inet_ntoa(ip), gd->sess->port, login_callback, gc) < 0) {
473 g_snprintf(buf, sizeof(buf), _("Connect to %s failed"), inet_ntoa(ip)); 470 g_snprintf(buf, sizeof(buf), _("Connect to %s failed"), inet_ntoa(ip));
474 hide_login_progress(gc, buf); 471 gaim_connection_error(gc, buf);
475 signoff(gc);
476 return; 472 return;
477 } 473 }
478 break; 474 break;
479 } 475 }
480 case GG_STATE_READING_KEY: 476 case GG_STATE_READING_KEY:
503 break; 499 break;
504 case GG_EVENT_CONN_FAILED: 500 case GG_EVENT_CONN_FAILED:
505 gaim_input_remove(gc->inpa); 501 gaim_input_remove(gc->inpa);
506 gc->inpa = 0; 502 gc->inpa = 0;
507 handle_errcode(gc, e->event.failure); 503 handle_errcode(gc, e->event.failure);
508 signoff(gc);
509 break; 504 break;
510 default: 505 default:
511 debug_printf("no gg_event\n"); 506 debug_printf("no gg_event\n");
512 break; 507 break;
513 } 508 }
517 512
518 static void agg_keepalive(GaimConnection *gc) 513 static void agg_keepalive(GaimConnection *gc)
519 { 514 {
520 struct agg_data *gd = (struct agg_data *)gc->proto_data; 515 struct agg_data *gd = (struct agg_data *)gc->proto_data;
521 if (gg_ping(gd->sess) < 0) { 516 if (gg_ping(gd->sess) < 0) {
522 hide_login_progress(gc, _("Unable to ping server")); 517 gaim_connection_error(gc, _("Unable to ping server"));
523 signoff(gc);
524 return; 518 return;
525 } 519 }
526 } 520 }
527 521
528 static void agg_login(GaimAccount *account) 522 static void agg_login(GaimAccount *account)
535 gc->checkbox = _("Send as message"); 529 gc->checkbox = _("Send as message");
536 #endif 530 #endif
537 531
538 gd->sess = g_new0(struct gg_session, 1); 532 gd->sess = g_new0(struct gg_session, 1);
539 533
540 gaim_connection_set_display_name(account, gaim_account_get_string("nick")); 534 gaim_connection_set_display_name(gc, gaim_account_get_string(account, "nick", ""));
541 535
542 set_login_progress(gc, 1, _("Looking up GG server")); 536 gaim_connection_update_progress(gc, _("Looking up GG server"), 1, GG_CONNECT_STEPS);
543 537
544 if (invalid_uin(account->username)) { 538 if (invalid_uin(account->username)) {
545 hide_login_progress(gc, _("Invalid Gadu-Gadu UIN specified")); 539 gaim_connection_error(gc, _("Invalid Gadu-Gadu UIN specified"));
546 signoff(gc);
547 return; 540 return;
548 } 541 }
549 542
550 gc->inpa = 0; 543 gc->inpa = 0;
551 544
565 gd->sess->state = GG_STATE_CONNECTING; 558 gd->sess->state = GG_STATE_CONNECTING;
566 gd->sess->check = GG_CHECK_WRITE; 559 gd->sess->check = GG_CHECK_WRITE;
567 gd->sess->async = 1; 560 gd->sess->async = 1;
568 if (proxy_connect(account, GG_APPMSG_HOST, GG_APPMSG_PORT, login_callback, gc) < 0) { 561 if (proxy_connect(account, GG_APPMSG_HOST, GG_APPMSG_PORT, login_callback, gc) < 0) {
569 g_snprintf(buf, sizeof(buf), _("Connect to %s failed"), GG_APPMSG_HOST); 562 g_snprintf(buf, sizeof(buf), _("Connect to %s failed"), GG_APPMSG_HOST);
570 hide_login_progress(gc, buf); 563 gaim_connection_error(gc, buf);
571 signoff(gc);
572 return; 564 return;
573 } 565 }
574 } 566 }
575 567
576 static void agg_close(GaimConnection *gc) 568 static void agg_close(GaimConnection *gc)
989 } 981 }
990 982
991 static void import_buddies_server(GaimConnection *gc) 983 static void import_buddies_server(GaimConnection *gc)
992 { 984 {
993 struct agg_http *hi = g_new0(struct agg_http, 1); 985 struct agg_http *hi = g_new0(struct agg_http, 1);
994 gchar *u = gg_urlencode(gc->username); 986 gchar *u = gg_urlencode(gaim_account_get_username(gc->account));
995 gchar *p = gg_urlencode(gc->password); 987 gchar *p = gg_urlencode(gaim_account_get_password(gc->account));
996 988
997 hi->gc = gc; 989 hi->gc = gc;
998 hi->type = AGG_HTTP_USERLIST_IMPORT; 990 hi->type = AGG_HTTP_USERLIST_IMPORT;
999 hi->form = AGG_PUBDIR_USERLIST_IMPORT_FORM; 991 hi->form = AGG_PUBDIR_USERLIST_IMPORT_FORM;
1000 hi->host = GG_PUBDIR_HOST; 992 hi->host = GG_PUBDIR_HOST;
1016 1008
1017 static void export_buddies_server(GaimConnection *gc) 1009 static void export_buddies_server(GaimConnection *gc)
1018 { 1010 {
1019 struct agg_http *he = g_new0(struct agg_http, 1); 1011 struct agg_http *he = g_new0(struct agg_http, 1);
1020 gchar *ptr; 1012 gchar *ptr;
1021 gchar *u = gg_urlencode(gc->username); 1013 gchar *u = gg_urlencode(gaim_account_get_username(gc->account));
1022 gchar *p = gg_urlencode(gc->password); 1014 gchar *p = gg_urlencode(gaim_account_get_password(gc->account));
1023 1015
1024 GaimBlistNode *gnode, *bnode; 1016 GaimBlistNode *gnode, *bnode;
1025 1017
1026 he->gc = gc; 1018 he->gc = gc;
1027 he->type = AGG_HTTP_USERLIST_EXPORT; 1019 he->type = AGG_HTTP_USERLIST_EXPORT;
1085 } 1077 }
1086 1078
1087 static void delete_buddies_server(GaimConnection *gc) 1079 static void delete_buddies_server(GaimConnection *gc)
1088 { 1080 {
1089 struct agg_http *he = g_new0(struct agg_http, 1); 1081 struct agg_http *he = g_new0(struct agg_http, 1);
1090 gchar *u = gg_urlencode(gc->username); 1082 gchar *u = gg_urlencode(gaim_account_get_username(gc->account));
1091 gchar *p = gg_urlencode(gc->password); 1083 gchar *p = gg_urlencode(gaim_account_get_password(gc->account));
1092 1084
1093 he->gc = gc; 1085 he->gc = gc;
1094 he->type = AGG_HTTP_USERLIST_DELETE; 1086 he->type = AGG_HTTP_USERLIST_DELETE;
1095 he->form = AGG_PUBDIR_USERLIST_EXPORT_FORM; 1087 he->form = AGG_PUBDIR_USERLIST_EXPORT_FORM;
1096 he->host = GG_PUBDIR_HOST; 1088 he->host = GG_PUBDIR_HOST;
1158 } 1150 }
1159 1151
1160 static void agg_change_passwd(GaimConnection *gc, const char *old, const char *new) 1152 static void agg_change_passwd(GaimConnection *gc, const char *old, const char *new)
1161 { 1153 {
1162 struct agg_http *hpass = g_new0(struct agg_http, 1); 1154 struct agg_http *hpass = g_new0(struct agg_http, 1);
1163 gchar *u = gg_urlencode(gc->username); 1155 gchar *u = gg_urlencode(gaim_account_get_username(gc->account));
1164 gchar *p = gg_urlencode(gc->password); 1156 gchar *p = gg_urlencode(gaim_account_get_password(gc->account));
1165 gchar *enew = gg_urlencode(new); 1157 gchar *enew = gg_urlencode(new);
1166 gchar *eold = gg_urlencode(old); 1158 gchar *eold = gg_urlencode(old);
1167 1159
1168 hpass->gc = gc; 1160 hpass->gc = gc;
1169 hpass->type = AGG_HTTP_PASSWORD_CHANGE; 1161 hpass->type = AGG_HTTP_PASSWORD_CHANGE;