libpurple/protocols/yahoo/yahoo.c

Tue, 27 May 2008 06:27:46 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Tue, 27 May 2008 06:27:46 +0000
branch
vv
changeset 23707
480f94157418
parent 23278
95d55dc412c0
parent 22648
e286d795c5f9
child 23740
e63886b13597
permissions
-rw-r--r--

propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
to branch 'im.pidgin.pidgin.vv' (head 1049b744d8c8ceabaa3758f6dac78ed12a4a7e8e)

2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2 * purple
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8045
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 8045
diff changeset
6 * source distribution.
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * (at your option) any later version.
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * GNU General Public License for more details.
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19850
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 *
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 */
9369
6c8dc8a5311c [gaim-migrate @ 10177]
Sean Egan <seanegan@pidgin.im>
parents: 9329
diff changeset
23
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
24 #include "internal.h"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
26 #include "account.h"
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5590
diff changeset
27 #include "accountopt.h"
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
28 #include "blist.h"
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
29 #include "cipher.h"
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
30 #include "cmds.h"
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
31 #include "core.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
32 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
33 #include "notify.h"
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
34 #include "privacy.h"
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 #include "prpl.h"
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 #include "proxy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
37 #include "request.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
38 #include "server.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
39 #include "util.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9927
diff changeset
40 #include "version.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
41
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
42 #include "yahoo.h"
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
43 #include "yahoochat.h"
19058
9facc10e1c01 Yahoo server-side aliases patch from John Moody. Fixes #1653 Thanks!
Sean Egan <seanegan@pidgin.im>
parents: 19053
diff changeset
44 #include "yahoo_aliases.h"
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
45 #include "yahoo_auth.h"
12417
ad19b5a4b41d [gaim-migrate @ 14724]
Richard Laager <rlaager@pidgin.im>
parents: 12378
diff changeset
46 #include "yahoo_crypt.h"
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
47 #include "yahoo_doodle.h"
12417
ad19b5a4b41d [gaim-migrate @ 14724]
Richard Laager <rlaager@pidgin.im>
parents: 12378
diff changeset
48 #include "yahoo_filexfer.h"
ad19b5a4b41d [gaim-migrate @ 14724]
Richard Laager <rlaager@pidgin.im>
parents: 12378
diff changeset
49 #include "yahoo_friend.h"
ad19b5a4b41d [gaim-migrate @ 14724]
Richard Laager <rlaager@pidgin.im>
parents: 12378
diff changeset
50 #include "yahoo_packet.h"
ad19b5a4b41d [gaim-migrate @ 14724]
Richard Laager <rlaager@pidgin.im>
parents: 12378
diff changeset
51 #include "yahoo_picture.h"
ad19b5a4b41d [gaim-migrate @ 14724]
Richard Laager <rlaager@pidgin.im>
parents: 12378
diff changeset
52 #include "ycht.h"
2795
b2e15894ab75 [gaim-migrate @ 2808]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2786
diff changeset
53
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
54 /* #define YAHOO_DEBUG */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
56 /* #define TRY_WEBMESSENGER_LOGIN 0 */
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
57
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
58 static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *, PurpleGroup *);
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
59 #ifdef TRY_WEBMESSENGER_LOGIN
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
60 static void yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, size_t len, const gchar *error_message);
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
61 #endif
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
62 static void yahoo_set_status(PurpleAccount *account, PurpleStatus *status);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
63
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
64 static void yahoo_update_status(PurpleConnection *gc, const char *name, YahooFriend *f)
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
65 {
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
66 char *status = NULL;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
67
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
68 if (!gc || !name || !f || !purple_find_buddy(purple_connection_get_account(gc), name))
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
69 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
70
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
71 if (f->status == YAHOO_STATUS_OFFLINE)
11250
f541803353ed [gaim-migrate @ 13419]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11188
diff changeset
72 {
f541803353ed [gaim-migrate @ 13419]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11188
diff changeset
73 return;
f541803353ed [gaim-migrate @ 13419]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11188
diff changeset
74 }
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
75
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
76 switch (f->status) {
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
77 case YAHOO_STATUS_AVAILABLE:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
78 status = YAHOO_STATUS_TYPE_AVAILABLE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
79 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
80 case YAHOO_STATUS_BRB:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
81 status = YAHOO_STATUS_TYPE_BRB;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
82 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
83 case YAHOO_STATUS_BUSY:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
84 status = YAHOO_STATUS_TYPE_BUSY;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
85 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
86 case YAHOO_STATUS_NOTATHOME:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
87 status = YAHOO_STATUS_TYPE_NOTATHOME;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
88 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
89 case YAHOO_STATUS_NOTATDESK:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
90 status = YAHOO_STATUS_TYPE_NOTATDESK;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
91 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
92 case YAHOO_STATUS_NOTINOFFICE:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
93 status = YAHOO_STATUS_TYPE_NOTINOFFICE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
94 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
95 case YAHOO_STATUS_ONPHONE:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
96 status = YAHOO_STATUS_TYPE_ONPHONE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
97 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
98 case YAHOO_STATUS_ONVACATION:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
99 status = YAHOO_STATUS_TYPE_ONVACATION;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
100 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
101 case YAHOO_STATUS_OUTTOLUNCH:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
102 status = YAHOO_STATUS_TYPE_OUTTOLUNCH;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
103 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
104 case YAHOO_STATUS_STEPPEDOUT:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
105 status = YAHOO_STATUS_TYPE_STEPPEDOUT;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
106 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
107 case YAHOO_STATUS_INVISIBLE: /* this should never happen? */
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
108 status = YAHOO_STATUS_TYPE_INVISIBLE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
109 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
110 case YAHOO_STATUS_CUSTOM:
13688
240e5b90adb4 [gaim-migrate @ 16089]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13559
diff changeset
111 case YAHOO_STATUS_IDLE:
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
112 if (!f->away)
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
113 status = YAHOO_STATUS_TYPE_AVAILABLE;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
114 else
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
115 status = YAHOO_STATUS_TYPE_AWAY;
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
116 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
117 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
118 purple_debug_warning("yahoo", "Warning, unknown status %d\n", f->status);
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
119 break;
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
120 }
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
121
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
122 if (status) {
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
123 if (f->status == YAHOO_STATUS_CUSTOM)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
124 purple_prpl_got_user_status(purple_connection_get_account(gc), name, status, "message",
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
125 yahoo_friend_get_status_message(f), NULL);
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
126 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
127 purple_prpl_got_user_status(purple_connection_get_account(gc), name, status, NULL);
9983
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
128 }
912b3ca807b4 [gaim-migrate @ 10894]
Tim Ringenbach <marv@pidgin.im>
parents: 9979
diff changeset
129
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
130 if (f->idle != 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
131 purple_prpl_got_user_idle(purple_connection_get_account(gc), name, TRUE, f->idle);
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
132 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
133 purple_prpl_got_user_idle(purple_connection_get_account(gc), name, FALSE, 0);
15589
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
134
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
135 if (f->sms)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
136 purple_prpl_got_user_status(purple_connection_get_account(gc), name, YAHOO_STATUS_TYPE_MOBILE, NULL);
15589
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
137 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
138 purple_prpl_got_user_status_deactive(purple_connection_get_account(gc), name, YAHOO_STATUS_TYPE_MOBILE);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
139 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
140
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
141 static void yahoo_process_status(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
143 PurpleAccount *account = purple_connection_get_account(gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 GSList *l = pkt->hash;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
146 YahooFriend *f = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 char *name = NULL;
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
148 gboolean unicode = FALSE;
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
149 char *message = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
150
7892
227c27d0183d [gaim-migrate @ 8552]
Daniel Atallah <datallah@pidgin.im>
parents: 7883
diff changeset
151 if (pkt->service == YAHOO_SERVICE_LOGOFF && pkt->status == -1) {
20658
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 19918
diff changeset
152 if (!purple_account_get_remember_password(account))
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 19918
diff changeset
153 purple_account_set_password(account, NULL);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
154 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NAME_IN_USE,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
155 _("You have signed on from another location."));
7892
227c27d0183d [gaim-migrate @ 8552]
Daniel Atallah <datallah@pidgin.im>
parents: 7883
diff changeset
156 return;
227c27d0183d [gaim-migrate @ 8552]
Daniel Atallah <datallah@pidgin.im>
parents: 7883
diff changeset
157 }
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
158
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 switch (pair->key) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 case 0: /* we won't actually do anything with this */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165 case 1: /* we don't get the full buddy list here. */
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
166 if (!yd->logged_in) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
167 purple_connection_set_display_name(gc, pair->value);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
168 purple_connection_set_state(gc, PURPLE_CONNECTED);
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
169 yd->logged_in = TRUE;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
170 if (yd->picture_upload_todo) {
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
171 yahoo_buddy_icon_upload(gc, yd->picture_upload_todo);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
172 yd->picture_upload_todo = NULL;
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
173 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
174 yahoo_set_status(account, purple_account_get_active_status(account));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
175
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
176 /* this requests the list. i have a feeling that this is very evil
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
177 *
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
178 * scs.yahoo.com sends you the list before this packet without it being
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
179 * requested
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
180 *
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
181 * do_import(gc, NULL);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
182 * newpkt = yahoo_packet_new(YAHOO_SERVICE_LIST, YAHOO_STATUS_OFFLINE, 0);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
183 * yahoo_packet_send_and_free(newpkt, yd);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
184 */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
185
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
186 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188 case 8: /* how many online buddies we have */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
189 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190 case 7: /* the current buddy */
19609
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
191 /* update the previous buddy before changing the variables */
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
192 if (f) {
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
193 if (message)
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
194 yahoo_friend_set_status_message(f, yahoo_string_decode(gc, message, unicode));
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
195 if (name)
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
196 yahoo_update_status(gc, name, f);
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
197 }
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
198 name = message = NULL;
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
199 f = NULL;
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
200 if (pair->value && g_utf8_validate(pair->value, -1, NULL)) {
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
201 name = pair->value;
9886
ea7433072a8f [gaim-migrate @ 10771]
Tim Ringenbach <marv@pidgin.im>
parents: 9835
diff changeset
202 f = yahoo_friend_find_or_new(gc, name);
9888
162a02f2ac9d [gaim-migrate @ 10773]
Dave Bell
parents: 9886
diff changeset
203 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
204 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
205 case 10: /* state */
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
206 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
207 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
208
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
209 f->status = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
210 if ((f->status >= YAHOO_STATUS_BRB) && (f->status <= YAHOO_STATUS_STEPPEDOUT))
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
211 f->away = 1;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
212 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
213 f->away = 0;
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
214
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
215 if (f->status == YAHOO_STATUS_IDLE) {
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
216 /* Idle may have already been set in a more precise way in case 137 */
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
217 if (f->idle == 0)
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
218 f->idle = time(NULL);
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
219 } else
6804
8247ddcbdf53 [gaim-migrate @ 7344]
Tim Ringenbach <marv@pidgin.im>
parents: 6796
diff changeset
220 f->idle = 0;
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
221
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
222 if (f->status != YAHOO_STATUS_CUSTOM)
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
223 yahoo_friend_set_status_message(f, NULL);
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
224
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
225 f->sms = 0;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
226 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
227 case 19: /* custom message */
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
228 if (f)
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
229 message = pair->value;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
230 break;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
231 case 11: /* this is the buddy's session id */
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
232 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
233 case 17: /* in chat? */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
234 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
235 case 47: /* is custom status away or not? 2=idle*/
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
236 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
237 break;
8441
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
238
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
239 /* I have no idea what it means when this is
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
240 * set when someone's available, but it doesn't
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
241 * mean idle. */
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
242 if (f->status == YAHOO_STATUS_AVAILABLE)
94a84c00e8e0 [gaim-migrate @ 9171]
Tim Ringenbach <marv@pidgin.im>
parents: 8383
diff changeset
243 break;
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
244
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
245 f->away = strtol(pair->value, NULL, 10);
10141
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
246 if (f->away == 2) {
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
247 /* Idle may have already been set in a more precise way in case 137 */
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
248 if (f->idle == 0)
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
249 f->idle = time(NULL);
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
250 }
3db22fc14161 [gaim-migrate @ 11212]
Evan Schoenberg <evands@pidgin.im>
parents: 10126
diff changeset
251
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
252 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
253 case 138: /* either we're not idle, or we are but won't say how long */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
254 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
255 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
256
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
257 if (f->idle)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
258 f->idle = -1;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
259 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
260 case 137: /* usually idle time in seconds, sometimes login time */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
261 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
262 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
263
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
264 if (f->status != YAHOO_STATUS_AVAILABLE)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
265 f->idle = time(NULL) - strtol(pair->value, NULL, 10);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
266 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
267 case 13: /* bitmask, bit 0 = pager, bit 1 = chat, bit 2 = game */
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
268 if (strtol(pair->value, NULL, 10) == 0) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
269 if (f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
270 f->status = YAHOO_STATUS_OFFLINE;
15589
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
271 if (name) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
272 purple_prpl_got_user_status(account, name, "offline", NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
273 purple_prpl_got_user_status_deactive(account, name, YAHOO_STATUS_TYPE_MOBILE);
15589
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
274 }
2807
fe1ea0453890 [gaim-migrate @ 2820]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2805
diff changeset
275 break;
2805
31c7645db097 [gaim-migrate @ 2818]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2795
diff changeset
276 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
277 break;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
278 case 60: /* SMS */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
279 if (f) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
280 f->sms = strtol(pair->value, NULL, 10);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
281 yahoo_update_status(gc, name, f);
2771
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
282 }
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
283 break;
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
284 case 197: /* Avatars */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
285 {
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
286 guchar *decoded;
11127
5e539d9d26a4 [gaim-migrate @ 13183]
Mark Doliner <markdoliner@pidgin.im>
parents: 11111
diff changeset
287 char *tmp;
5e539d9d26a4 [gaim-migrate @ 13183]
Mark Doliner <markdoliner@pidgin.im>
parents: 11111
diff changeset
288 gsize len;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
289
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
290 if (pair->value) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
291 decoded = purple_base64_decode(pair->value, &len);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
292 if (len) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
293 tmp = purple_str_binary_to_ascii(decoded, len);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
294 purple_debug_info("yahoo", "Got key 197, value = %s\n", tmp);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
295 g_free(tmp);
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
296 }
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
297 g_free(decoded);
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
298 }
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
299 break;
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
300 }
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
301 case 192: /* Pictures, aka Buddy Icons, checksum */
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
302 {
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16007
diff changeset
303 /* FIXME: Please, if you know this protocol,
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16007
diff changeset
304 * FIXME: fix up the strtol() stuff if possible. */
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
305 int cksum = strtol(pair->value, NULL, 10);
16606
b31fca4f6f60 Thanks to Bleeter, yahoo will not crash for non-existent buddyicons anymore.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16545
diff changeset
306 const char *locksum = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
307 PurpleBuddy *b;
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
308
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
309 if (!name)
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
310 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
311
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
312 b = purple_find_buddy(gc->account, name);
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
313
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
314 if (!cksum || (cksum == -1)) {
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
315 if (f)
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
316 yahoo_friend_set_buddy_icon_need_request(f, TRUE);
16534
2ab9e23f99d9 Move the prpl icon checksum code into the core, so we can delete the
Richard Laager <rlaager@pidgin.im>
parents: 16007
diff changeset
317 purple_buddy_icons_set_for_user(gc->account, name, NULL, 0, NULL);
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
318 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
319 }
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
320
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
321 if (!f)
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
322 break;
9325
310b99e76887 [gaim-migrate @ 10133]
Tim Ringenbach <marv@pidgin.im>
parents: 9318
diff changeset
323
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
324 yahoo_friend_set_buddy_icon_need_request(f, FALSE);
17151
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 17044
diff changeset
325 if (b) {
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 17044
diff changeset
326 locksum = purple_buddy_icons_get_checksum_for_user(b);
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 17044
diff changeset
327 if (!locksum || (cksum != strtol(locksum, NULL, 10)))
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 17044
diff changeset
328 yahoo_send_picture_request(gc, name);
7d28dd13c4db Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire!
Sean Egan <seanegan@pidgin.im>
parents: 17044
diff changeset
329 }
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
330
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
331 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
332 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2951
diff changeset
333 case 16: /* Custom error message */
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
334 {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
335 char *tmp = yahoo_string_decode(gc, pair->value, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
336 purple_notify_error(gc, NULL, tmp, NULL);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
337 g_free(tmp);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
338 }
2951
fa9b438bf678 [gaim-migrate @ 2964]
Rob Flynn <gaim@robflynn.com>
parents: 2918
diff changeset
339 break;
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
340 case 97: /* Unicode status message */
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
341 unicode = !strcmp(pair->value, "1");
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
342 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
343 case 244: /* client version number. Yahoo Client Detection */
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
344 if(f && strtol(pair->value, NULL, 10))
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
345 f->version_id = strtol(pair->value, NULL, 10);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
346 break;
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
347
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
348 default:
22811
2e0dca7ea23e I don't consider this an error.
Mark Doliner <markdoliner@pidgin.im>
parents: 22562
diff changeset
349 purple_debug_warning("yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
350 "Unknown status key %d\n", pair->key);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
351 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
352 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
353
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
354 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
355 }
10553
89697092b958 [gaim-migrate @ 11930]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
356
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
357 if (message && f)
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
358 yahoo_friend_set_status_message(f, yahoo_string_decode(gc, message, unicode));
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
359
10553
89697092b958 [gaim-migrate @ 11930]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
360 if (name && f) /* update the last buddy */
89697092b958 [gaim-migrate @ 11930]
Tim Ringenbach <marv@pidgin.im>
parents: 10504
diff changeset
361 yahoo_update_status(gc, name, f);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
362 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
363
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
364 static void yahoo_do_group_check(PurpleAccount *account, GHashTable *ht, const char *name, const char *group)
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
365 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
366 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
367 PurpleGroup *g;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
368 GSList *list, *i;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
369 gboolean onlist = 0;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
370 char *oname = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
371 char **oname_p = &oname;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
372 GSList **list_p = &list;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
373
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
374 if (!g_hash_table_lookup_extended(ht, purple_normalize(account, name), (gpointer *) oname_p, (gpointer *) list_p))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
375 list = purple_find_buddies(account, name);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
376 else
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
377 g_hash_table_steal(ht, name);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
378
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
379 for (i = list; i; i = i->next) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
380 b = i->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
381 g = purple_buddy_get_group(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
382 if (!purple_utf8_strcasecmp(group, g->name)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
383 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
384 "Oh good, %s is in the right group (%s).\n", name, group);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
385 list = g_slist_delete_link(list, i);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
386 onlist = 1;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
387 break;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
388 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
389 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
390
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
391 if (!onlist) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
392 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
393 "Uhoh, %s isn't on the list (or not in this group), adding him to group %s.\n", name, group);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
394 if (!(g = purple_find_group(group))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
395 g = purple_group_new(group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
396 purple_blist_add_group(g, NULL);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
397 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
398 b = purple_buddy_new(account, name, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
399 purple_blist_add_buddy(b, NULL, g, NULL);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
400 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
401
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
402 if (list) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
403 if (!oname)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
404 oname = g_strdup(purple_normalize(account, name));
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
405 g_hash_table_insert(ht, oname, list);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
406 } else if (oname)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
407 g_free(oname);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
408 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
409
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
410 static void yahoo_do_group_cleanup(gpointer key, gpointer value, gpointer user_data)
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
411 {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
412 char *name = key;
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
413 GSList *list = value, *i;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
414 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
415 PurpleGroup *g;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
416
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
417 for (i = list; i; i = i->next) {
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
418 b = i->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
419 g = purple_buddy_get_group(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
420 purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, g->name);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
421 purple_blist_remove_buddy(b);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
422 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
423 }
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
424
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
425 static char *_getcookie(char *rawcookie)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
426 {
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
427 char *cookie = NULL;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
428 char *tmpcookie;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
429 char *cookieend;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
430
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
431 if (strlen(rawcookie) < 2)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
432 return NULL;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
433 tmpcookie = g_strdup(rawcookie+2);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
434 cookieend = strchr(tmpcookie, ';');
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
435
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
436 if (cookieend)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
437 *cookieend = '\0';
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
438
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
439 cookie = g_strdup(tmpcookie);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
440 g_free(tmpcookie);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
441
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
442 return cookie;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
443 }
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
444
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
445 static void yahoo_process_cookie(struct yahoo_data *yd, char *c)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
446 {
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
447 if (c[0] == 'Y') {
22201
434114a12ae4 Revert patch that added receive-only transfer support for Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
448 if (yd->cookie_y)
434114a12ae4 Revert patch that added receive-only transfer support for Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
449 g_free(yd->cookie_y);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
450 yd->cookie_y = _getcookie(c);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
451 } else if (c[0] == 'T') {
22201
434114a12ae4 Revert patch that added receive-only transfer support for Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
452 if (yd->cookie_t)
434114a12ae4 Revert patch that added receive-only transfer support for Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
453 g_free(yd->cookie_t);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
454 yd->cookie_t = _getcookie(c);
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
455 } else
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
456 purple_debug_info("yahoo", "Unrecognized cookie '%c'\n", c[0]);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
457 yd->cookies = g_slist_prepend(yd->cookies, g_strdup(c));
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
458 }
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
459
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
460 static void yahoo_process_list_15(PurpleConnection *gc, struct yahoo_packet *pkt)
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
461 {
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
462 GSList *l = pkt->hash;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
463
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
464 PurpleAccount *account = purple_connection_get_account(gc);
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
465 struct yahoo_data *yd = gc->proto_data;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
466 GHashTable *ht;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
467 char *norm_bud = NULL;
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
468 YahooFriend *f = NULL; /* It's your friends. They're going to want you to share your StarBursts. */
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
469 /* But what if you had no friends? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
470 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
471 PurpleGroup *g;
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
472
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
473
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
474 ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
475
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
476 while (l) {
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
477 struct yahoo_pair *pair = l->data;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
478 l = l->next;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
479
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
480 switch (pair->key) {
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
481 case 302:
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
482 /* This is always 318 before a group, 319 before the first s/n in a group, 320 before any ignored s/n.
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
483 * It is not sent for s/n's in a group after the first.
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
484 * All ignored s/n's are listed last, so when we see a 320 we clear the group and begin marking the
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
485 * s/n's as ignored. It is always followed by an identical 300 key.
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
486 */
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
487 if (pair->value && !strcmp(pair->value, "320")) {
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
488 /* No longer in any group; this indicates the start of the ignore list. */
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
489 g_free(yd->current_list15_grp);
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
490 yd->current_list15_grp = NULL;
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
491 }
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
492
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
493 break;
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
494 case 301: /* This is 319 before all s/n's in a group after the first. It is followed by an identical 300. */
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
495 break;
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
496 case 300: /* This is 318 before a group, 319 before any s/n in a group, and 320 before any ignored s/n. */
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
497 break;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
498 case 65: /* This is the group */
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
499 g_free(yd->current_list15_grp);
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
500 yd->current_list15_grp = yahoo_string_decode(gc, pair->value, FALSE);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
501 break;
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
502 case 7: /* buddy's s/n */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
503 g_free(norm_bud);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
504 norm_bud = g_strdup(purple_normalize(account, pair->value));
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
505
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
506 if (yd->current_list15_grp) {
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
507 /* This buddy is in a group */
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
508 f = yahoo_friend_find_or_new(gc, norm_bud);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
509 if (!(b = purple_find_buddy(account, norm_bud))) {
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
510 if (!(g = purple_find_group(yd->current_list15_grp))) {
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
511 g = purple_group_new(yd->current_list15_grp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
512 purple_blist_add_group(g, NULL);
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
513 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
514 b = purple_buddy_new(account, norm_bud, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
515 purple_blist_add_buddy(b, NULL, g, NULL);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
516 }
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
517 yahoo_do_group_check(account, ht, norm_bud, yd->current_list15_grp);
14699
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
518
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
519 } else {
f4953b1a192e [gaim-migrate @ 17383]
Evan Schoenberg <evands@pidgin.im>
parents: 14693
diff changeset
520 /* This buddy is on the ignore list (and therefore in no group) */
22826
6652e27fec0d Add missing newline to debug message. Fixes #5546.
Daniel Atallah <datallah@pidgin.im>
parents: 22811
diff changeset
521 purple_debug_info("yahoo", "%s adding %s to the deny list because of the ignore list / no group was found\n",
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
522 account->username, norm_bud);
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
523 purple_privacy_deny_add(account, norm_bud, 1);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
524 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
525 break;
14346
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
526 case 241: /* another protocol user */
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
527 if (f) {
14346
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
528 f->protocol = strtol(pair->value, NULL, 10);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
529 purple_debug_info("yahoo", "Setting protocol to %d\n", f->protocol);
14362
2174bcc05489 [gaim-migrate @ 16990]
Tim Ringenbach <marv@pidgin.im>
parents: 14347
diff changeset
530 }
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
531 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
532 case 59: /* somebody told cookies come here too, but im not sure */
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
533 yahoo_process_cookie(yd, pair->value);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
534 break;
19538
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
535 case 317: /* Stealth Setting */
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
536 if (f && (strtol(pair->value, NULL, 10) == 2)) {
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
537 f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
538 }
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
539 break;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
540 /* case 242: */ /* this seems related to 241 */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
541 /* break; */
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
542 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
543 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
544
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
545 g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
546 g_hash_table_destroy(ht);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
547 g_free(norm_bud);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
548 }
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
549
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
550 static void yahoo_process_list(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
551 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
552 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
553 gboolean export = FALSE;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
554 gboolean got_serv_list = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
555 PurpleBuddy *b;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
556 PurpleGroup *g;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
557 YahooFriend *f = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
558 PurpleAccount *account = purple_connection_get_account(gc);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
559 struct yahoo_data *yd = gc->proto_data;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
560 GHashTable *ht;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
561
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
562 char **lines;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
563 char **split;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
564 char **buddies;
7823
88f397380ed3 [gaim-migrate @ 8475]
Tim Ringenbach <marv@pidgin.im>
parents: 7771
diff changeset
565 char **tmp, **bud, *norm_bud;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
566 char *grp = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
567
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
568 if (pkt->id)
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
569 yd->session_id = pkt->id;
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
570
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
571 while (l) {
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
572 struct yahoo_pair *pair = l->data;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
573 l = l->next;
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
574
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
575 switch (pair->key) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
576 case 87:
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
577 if (!yd->tmp_serv_blist)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
578 yd->tmp_serv_blist = g_string_new(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
579 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
580 g_string_append(yd->tmp_serv_blist, pair->value);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
581 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
582 case 88:
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
583 if (!yd->tmp_serv_ilist)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
584 yd->tmp_serv_ilist = g_string_new(pair->value);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
585 else
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
586 g_string_append(yd->tmp_serv_ilist, pair->value);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
587 break;
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
588 case 59: /* cookies, yum */
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
589 yahoo_process_cookie(yd, pair->value);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
590 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
591 case YAHOO_SERVICE_PRESENCE_PERM:
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
592 if (!yd->tmp_serv_plist)
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
593 yd->tmp_serv_plist = g_string_new(pair->value);
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
594 else
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
595 g_string_append(yd->tmp_serv_plist, pair->value);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
596 break;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
597 }
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
598 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
600 if (pkt->status != 0)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
601 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
602
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
603 if (yd->tmp_serv_blist) {
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
604 ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_slist_free);
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
605
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
606 lines = g_strsplit(yd->tmp_serv_blist->str, "\n", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
607 for (tmp = lines; *tmp; tmp++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
608 split = g_strsplit(*tmp, ":", 2);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
609 if (!split)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
610 continue;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
611 if (!split[0] || !split[1]) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
612 g_strfreev(split);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
613 continue;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
614 }
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
615 grp = yahoo_string_decode(gc, split[0], FALSE);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
616 buddies = g_strsplit(split[1], ",", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
617 for (bud = buddies; bud && *bud; bud++) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
618 norm_bud = g_strdup(purple_normalize(account, *bud));
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
619 f = yahoo_friend_find_or_new(gc, norm_bud);
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
620
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
621 if (!(b = purple_find_buddy(account, norm_bud))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
622 if (!(g = purple_find_group(grp))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
623 g = purple_group_new(grp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
624 purple_blist_add_group(g, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
625 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
626 b = purple_buddy_new(account, norm_bud, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
627 purple_blist_add_buddy(b, NULL, g, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
628 export = TRUE;
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
629 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
630
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
631 yahoo_do_group_check(account, ht, norm_bud, grp);
7823
88f397380ed3 [gaim-migrate @ 8475]
Tim Ringenbach <marv@pidgin.im>
parents: 7771
diff changeset
632 g_free(norm_bud);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
633 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
634 g_strfreev(buddies);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
635 g_strfreev(split);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
636 g_free(grp);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
637 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
638 g_strfreev(lines);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
639
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
640 g_string_free(yd->tmp_serv_blist, TRUE);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
641 yd->tmp_serv_blist = NULL;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
642 g_hash_table_foreach(ht, yahoo_do_group_cleanup, NULL);
6820
17d946b9bfe8 [gaim-migrate @ 7364]
Tim Ringenbach <marv@pidgin.im>
parents: 6810
diff changeset
643 g_hash_table_destroy(ht);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
644 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
645
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
646 if (yd->tmp_serv_ilist) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
647 buddies = g_strsplit(yd->tmp_serv_ilist->str, ",", -1);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
648 for (bud = buddies; bud && *bud; bud++) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
649 /* The server is already ignoring the user */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
650 got_serv_list = TRUE;
22364
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
651 purple_privacy_deny_add(account, *bud, 1);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
652 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
653 g_strfreev(buddies);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
654
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
655 g_string_free(yd->tmp_serv_ilist, TRUE);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
656 yd->tmp_serv_ilist = NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
657 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
658
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
659 if (got_serv_list &&
22364
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
660 ((account->perm_deny != PURPLE_PRIVACY_ALLOW_BUDDYLIST) &&
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
661 (account->perm_deny != PURPLE_PRIVACY_DENY_ALL) &&
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
662 (account->perm_deny != PURPLE_PRIVACY_ALLOW_USERS)))
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
663 {
22364
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
664 account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
665 purple_debug_info("yahoo", "%s privacy defaulting to PURPLE_PRIVACY_DENY_USERS.\n",
22364
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
666 account->username);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
667 }
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
668
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
669 if (yd->tmp_serv_plist) {
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
670 buddies = g_strsplit(yd->tmp_serv_plist->str, ",", -1);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
671 for (bud = buddies; bud && *bud; bud++) {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
672 f = yahoo_friend_find(gc, *bud);
12138
fcf3d84824d7 [gaim-migrate @ 14439]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12088
diff changeset
673 if (f) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
674 purple_debug_info("yahoo", "%s setting presence for %s to PERM_OFFLINE\n",
22364
1719b9cced93 Some very minor cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 22359
diff changeset
675 account->username, *bud);
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
676 f->presence = YAHOO_PRESENCE_PERM_OFFLINE;
12138
fcf3d84824d7 [gaim-migrate @ 14439]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12088
diff changeset
677 }
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
678 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
679 g_strfreev(buddies);
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
680 g_string_free(yd->tmp_serv_plist, TRUE);
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
681 yd->tmp_serv_plist = NULL;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
682
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
683 }
19058
9facc10e1c01 Yahoo server-side aliases patch from John Moody. Fixes #1653 Thanks!
Sean Egan <seanegan@pidgin.im>
parents: 19053
diff changeset
684 /* Now that we've got the list, request aliases */
9facc10e1c01 Yahoo server-side aliases patch from John Moody. Fixes #1653 Thanks!
Sean Egan <seanegan@pidgin.im>
parents: 19053
diff changeset
685 yahoo_fetch_aliases(gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
688 static void yahoo_process_notify(PurpleConnection *gc, struct yahoo_packet *pkt)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
689 {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
690 PurpleAccount *account;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
691 char *msg = NULL;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
692 char *from = NULL;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
693 char *stat = NULL;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
694 char *game = NULL;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
695 YahooFriend *f = NULL;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
696 GSList *l = pkt->hash;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
697
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
698 account = purple_connection_get_account(gc);
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
699
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
700 while (l) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
701 struct yahoo_pair *pair = l->data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
702 if (pair->key == 4)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
703 from = pair->value;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
704 if (pair->key == 49)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
705 msg = pair->value;
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
706 if (pair->key == 13)
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
707 stat = pair->value;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
708 if (pair->key == 14)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
709 game = pair->value;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
710 l = l->next;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
711 }
3640
870c747e2117 [gaim-migrate @ 3763]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
712
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
713 if (!from || !msg)
3640
870c747e2117 [gaim-migrate @ 3763]
Sean Egan <seanegan@pidgin.im>
parents: 3630
diff changeset
714 return;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
715
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
716 if (!g_ascii_strncasecmp(msg, "TYPING", strlen("TYPING"))
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
717 && (purple_privacy_check(account, from)))
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
718 {
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
719 if (*stat == '1')
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
720 serv_got_typing(gc, from, 0, PURPLE_TYPING);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
721 else
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
722 serv_got_typing_stopped(gc, from);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4777
diff changeset
723 } else if (!g_ascii_strncasecmp(msg, "GAME", strlen("GAME"))) {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
724 PurpleBuddy *bud = purple_find_buddy(account, from);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
725
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
726 if (!bud) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
727 purple_debug(PURPLE_DEBUG_WARNING, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
728 "%s is playing a game, and doesn't want "
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
729 "you to know.\n", from);
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
730 }
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
731
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
732 f = yahoo_friend_find(gc, from);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
733 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
734 return; /* if they're not on the list, don't bother */
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
735
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
736 yahoo_friend_set_game(f, NULL);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
737
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
738 if (*stat == '1') {
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
739 yahoo_friend_set_game(f, game);
3020
121e08802117 [gaim-migrate @ 3033]
Sean Egan <seanegan@pidgin.im>
parents: 3019
diff changeset
740 if (bud)
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
741 yahoo_update_status(gc, from, f);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
742 }
19545
39e46a4923f1 Show a system notification in the conv window when receiving Yahoo webcam invites. Fixes #1298
Sean Egan <seanegan@pidgin.im>
parents: 19540
diff changeset
743 } else if (!g_ascii_strncasecmp(msg, "WEBCAMINVITE", strlen("WEBCAMINVITE"))) {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
744 PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, from, account);
19545
39e46a4923f1 Show a system notification in the conv window when receiving Yahoo webcam invites. Fixes #1298
Sean Egan <seanegan@pidgin.im>
parents: 19540
diff changeset
745 char *buf = g_strdup_printf(_("%s has sent you a webcam invite, which is not yet supported."), from);
39e46a4923f1 Show a system notification in the conv window when receiving Yahoo webcam invites. Fixes #1298
Sean Egan <seanegan@pidgin.im>
parents: 19540
diff changeset
746 purple_conversation_write(conv, NULL, buf, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL));
39e46a4923f1 Show a system notification in the conv window when receiving Yahoo webcam invites. Fixes #1298
Sean Egan <seanegan@pidgin.im>
parents: 19540
diff changeset
747 g_free(buf);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
748 }
19609
30cf0d072270 Set the custom status message for yahoo buddies correctly at login time. Fixes #2754.
Daniel Atallah <datallah@pidgin.im>
parents: 19573
diff changeset
749
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
750 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
751
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
752
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
753 struct _yahoo_im {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
754 char *from;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
755 int time;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
756 int utf8;
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
757 int buddy_icon;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
758 char *msg;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
759 };
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
760
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
761 static void yahoo_process_message(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
762 {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
763 PurpleAccount *account;
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
764 struct yahoo_data *yd = gc->proto_data;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
765 GSList *l = pkt->hash;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
766 GSList *list = NULL;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
767 struct _yahoo_im *im = NULL;
13462
feff8b605383 [gaim-migrate @ 15836]
Daniel Atallah <datallah@pidgin.im>
parents: 13344
diff changeset
768 const char *imv = NULL;
6069
9f46466c89f8 [gaim-migrate @ 6519]
Luke Schierer <lschiere@pidgin.im>
parents: 6061
diff changeset
769
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
770 account = purple_connection_get_account(gc);
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
771
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
772 if (pkt->status <= 1 || pkt->status == 5) {
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
773 while (l != NULL) {
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
774 struct yahoo_pair *pair = l->data;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
775 if (pair->key == 4) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
776 im = g_new0(struct _yahoo_im, 1);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
777 list = g_slist_append(list, im);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
778 im->from = pair->value;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
779 im->time = time(NULL);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
780 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
781 if (pair->key == 97)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
782 if (im)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
783 im->utf8 = strtol(pair->value, NULL, 10);
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
784 if (pair->key == 15)
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
785 if (im)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
786 im->time = strtol(pair->value, NULL, 10);
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
787 if (pair->key == 206)
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
788 if (im)
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
789 im->buddy_icon = strtol(pair->value, NULL, 10);
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
790 if (pair->key == 14) {
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
791 if (im)
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
792 im->msg = pair->value;
6687
39462117d34d [gaim-migrate @ 7213]
Nandan Dixit
parents: 6686
diff changeset
793 }
11801
c19b37ac661b [gaim-migrate @ 14092]
Gary Kramlich <grim@reaperworld.com>
parents: 11800
diff changeset
794 /* IMV key */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
795 if (pair->key == 63)
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
796 {
13462
feff8b605383 [gaim-migrate @ 15836]
Daniel Atallah <datallah@pidgin.im>
parents: 13344
diff changeset
797 imv = pair->value;
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
798 }
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
799 l = l->next;
6687
39462117d34d [gaim-migrate @ 7213]
Nandan Dixit
parents: 6686
diff changeset
800 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 } else if (pkt->status == 2) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
802 purple_notify_error(gc, NULL,
10386
6fcc45a26a16 [gaim-migrate @ 11612]
Daniel Atallah <datallah@pidgin.im>
parents: 10379
diff changeset
803 _("Your Yahoo! message did not get sent."), NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804 }
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
805
13462
feff8b605383 [gaim-migrate @ 15836]
Daniel Atallah <datallah@pidgin.im>
parents: 13344
diff changeset
806 /** TODO: It seems that this check should be per IM, not global */
11801
c19b37ac661b [gaim-migrate @ 14092]
Gary Kramlich <grim@reaperworld.com>
parents: 11800
diff changeset
807 /* Check for the Doodle IMV */
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
808 if (im != NULL && imv!= NULL && im->from != NULL)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
809 {
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
810 g_hash_table_replace(yd->imvironments, g_strdup(im->from), g_strdup(imv));
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
811
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
812 if (strstr(imv, "doodle;") != NULL)
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
813 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
814 PurpleWhiteboard *wb;
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
815
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
816 if (!purple_privacy_check(account, im->from)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
817 purple_debug_info("yahoo", "Doodle request from %s dropped.\n", im->from);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
818 return;
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
819 }
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
820
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
821 /* I'm not sure the following ever happens -DAA */
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
822
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
823 wb = purple_whiteboard_get_session(account, im->from);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
824
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
825 /* If a Doodle session doesn't exist between this user */
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
826 if(wb == NULL)
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
827 {
20150
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
828 doodle_session *ds;
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
829 wb = purple_whiteboard_create(account, im->from, DOODLE_STATE_REQUESTED);
20150
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
830 ds = wb->proto_data;
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
831 ds->imv_key = g_strdup(imv);
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
832
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
833 yahoo_doodle_command_send_request(gc, im->from, imv);
760aa4bea7c6 applied changes from 80e3a515775c28b61c4c155c4a524374ef3360ff
Richard Laager <rlaager@pidgin.im>
parents: 19918
diff changeset
834 yahoo_doodle_command_send_ready(gc, im->from, imv);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
835 }
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
836 }
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
837 }
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
838
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
839 for (l = list; l; l = l->next) {
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
840 YahooFriend *f;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
841 char *m, *m2;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
842 im = l->data;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
843
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
844 if (!im->from || !im->msg) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
845 g_free(im);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
846 continue;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
847 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
848
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
849 if (!purple_privacy_check(account, im->from)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
850 purple_debug_info("yahoo", "Message from %s dropped.\n", im->from);
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
851 return;
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
852 }
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
853
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
854 m = yahoo_string_decode(gc, im->msg, im->utf8);
12994
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
855 /* This may actually not be necessary, but it appears
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
856 * that at least at one point some clients were sending
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
857 * "\r\n" as line delimiters, so we want to avoid double
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
858 * lines. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
859 m2 = purple_strreplace(m, "\r\n", "\n");
12994
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
860 g_free(m);
8340178b7b16 [gaim-migrate @ 15347]
Daniel Atallah <datallah@pidgin.im>
parents: 12970
diff changeset
861 m = m2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
862 purple_util_chrreplace(m, '\r', '\n');
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
863
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
864 if (!strcmp(m, "<ding>")) {
16007
3d954c38cf0c Patch from Zac West which (1) adds a message flag, PURPLE_MESSAGE_NOTIFY, used to indicate that a message is a protocol-level notification from a user ('buzz' in yahoo, 'nudge' in msn, for example) and (2) uses it along with improving the text displayed when sending/receiving buzzes and nudges. The addition of this flag means that a plugin could implement custom behavior, such as playing a sound or triggerring some other event, reliably and easily.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
865 PurpleConversation *c;
21622
e9e85d3d0424 Fix #3421 by checking for an existing conversation in which to display a yahoo buzz.
Daniel Atallah <datallah@pidgin.im>
parents: 21510
diff changeset
866 char *username;
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
867
21622
e9e85d3d0424 Fix #3421 by checking for an existing conversation in which to display a yahoo buzz.
Daniel Atallah <datallah@pidgin.im>
parents: 21510
diff changeset
868 c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, im->from, account);
e9e85d3d0424 Fix #3421 by checking for an existing conversation in which to display a yahoo buzz.
Daniel Atallah <datallah@pidgin.im>
parents: 21510
diff changeset
869 if (c == NULL)
e9e85d3d0424 Fix #3421 by checking for an existing conversation in which to display a yahoo buzz.
Daniel Atallah <datallah@pidgin.im>
parents: 21510
diff changeset
870 c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, im->from);
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
871
21916
8fb617c65b41 We need to use the actual username for attentions, instead of alias. This should fix the 'new im for buzz' bug on yahoo.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
872 username = g_markup_escape_text(im->from, -1);
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
873 serv_got_attention(gc, username, YAHOO_BUZZ);
16007
3d954c38cf0c Patch from Zac West which (1) adds a message flag, PURPLE_MESSAGE_NOTIFY, used to indicate that a message is a protocol-level notification from a user ('buzz' in yahoo, 'nudge' in msn, for example) and (2) uses it along with improving the text displayed when sending/receiving buzzes and nudges. The addition of this flag means that a plugin could implement custom behavior, such as playing a sound or triggerring some other event, reliably and easily.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
874 g_free(username);
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
875 g_free(m);
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
876 g_free(im);
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
877 continue;
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
878 }
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
879
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
880 m2 = yahoo_codes_to_html(m);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
881 g_free(m);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
882 serv_got_im(gc, im->from, m2, 0, im->time);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
883 g_free(m2);
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
884
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
885 if ((f = yahoo_friend_find(gc, im->from)) && im->buddy_icon == 2) {
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
886 if (yahoo_friend_get_buddy_icon_need_request(f)) {
9310
bd81f41ae944 [gaim-migrate @ 10118]
Tim Ringenbach <marv@pidgin.im>
parents: 9308
diff changeset
887 yahoo_send_picture_request(gc, im->from);
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
888 yahoo_friend_set_buddy_icon_need_request(f, FALSE);
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
889 }
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
890 }
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
891
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
892 g_free(im);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
893 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
894 g_slist_free(list);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
895 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
896
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
897 static void yahoo_process_sysmessage(PurpleConnection *gc, struct yahoo_packet *pkt)
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
898 {
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
899 GSList *l = pkt->hash;
17044
47fd0afbe505 Finish removal of yahoo system message escaping. I must have been
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17041
diff changeset
900 char *prim, *me = NULL, *msg = NULL;
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
901
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
902 while (l) {
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
903 struct yahoo_pair *pair = l->data;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
904
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
905 if (pair->key == 5)
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
906 me = pair->value;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
907 if (pair->key == 14)
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
908 msg = pair->value;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
909
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
910 l = l->next;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
911 }
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
912
10070
a0439e0afbb0 [gaim-migrate @ 11046]
Tim Ringenbach <marv@pidgin.im>
parents: 10009
diff changeset
913 if (!msg || !g_utf8_validate(msg, -1, NULL))
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
914 return;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
915
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
916 prim = g_strdup_printf(_("Yahoo! system message for %s:"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
917 me?me:purple_connection_get_display_name(gc));
17044
47fd0afbe505 Finish removal of yahoo system message escaping. I must have been
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17041
diff changeset
918 purple_notify_info(NULL, NULL, prim, msg);
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
919 g_free(prim);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
920 }
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
921
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
922 struct yahoo_add_request {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
923 PurpleConnection *gc;
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
924 char *id;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
925 char *who;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
926 int protocol;
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
927 };
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
928
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
929 static void
22359
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
930 yahoo_buddy_add_authorize_cb(gpointer data)
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
931 {
19335
4613b53d5741 Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents: 19329
diff changeset
932 struct yahoo_add_request *add_req = data;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
933 struct yahoo_packet *pkt;
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
934 struct yahoo_data *yd = add_req->gc->proto_data;
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
935
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
936 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15, YAHOO_STATUS_AVAILABLE, 0);
22359
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
937 yahoo_packet_hash(pkt, "ssiii",
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
938 1, add_req->id,
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
939 5, add_req->who,
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
940 241, add_req->protocol,
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
941 13, 1,
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
942 334, 0);
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
943 yahoo_packet_send_and_free(pkt, yd);
19538
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
944
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
945 g_free(add_req->id);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
946 g_free(add_req->who);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
947 g_free(add_req);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
948 }
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
949
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
950 static void
22359
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
951 yahoo_buddy_add_deny_cb(struct yahoo_add_request *add_req, const char *msg)
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
952 {
64502566f95b Revert d893d4c42706b930232e3b4007bc5bed063cda32 because the code is
Mark Doliner <markdoliner@pidgin.im>
parents: 22277
diff changeset
953 struct yahoo_data *yd = add_req->gc->proto_data;
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
954 struct yahoo_packet *pkt;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
955 char *encoded_msg = NULL;
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
956 PurpleAccount *account = purple_connection_get_account(add_req->gc);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
957
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
958 if (msg && *msg)
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
959 encoded_msg = yahoo_string_encode(add_req->gc, msg, NULL);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
960
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
961 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH_REQ_15,
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
962 YAHOO_STATUS_AVAILABLE, 0);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
963
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
964 yahoo_packet_hash(pkt, "ssiiis",
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
965 1, purple_normalize(account, purple_account_get_username(account)),
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
966 5, add_req->who,
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
967 13, 2,
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
968 334, 0,
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
969 97, 1,
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
970 14, encoded_msg ? encoded_msg : "");
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
971
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
972 yahoo_packet_send_and_free(pkt, yd);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
973
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
974 g_free(encoded_msg);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
975
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
976 g_free(add_req->id);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
977 g_free(add_req->who);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
978 g_free(add_req);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
979 }
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
980
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
981 static void
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
982 yahoo_buddy_add_deny_noreason_cb(struct yahoo_add_request *add_req, const char*msg)
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
983 {
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
984 yahoo_buddy_add_deny_cb(add_req, NULL);
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
985 }
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
986
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
987 static void
19335
4613b53d5741 Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents: 19329
diff changeset
988 yahoo_buddy_add_deny_reason_cb(gpointer data) {
4613b53d5741 Warning fixes in the aftermath of resiak's authorize_cb and deny_cb type fixing.
Daniel Atallah <datallah@pidgin.im>
parents: 19329
diff changeset
989 struct yahoo_add_request *add_req = data;
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
990 purple_request_input(add_req->gc, NULL, _("Authorization denied message:"),
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
991 NULL, _("No reason given."), TRUE, FALSE, NULL,
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
992 _("OK"), G_CALLBACK(yahoo_buddy_add_deny_cb),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16007
diff changeset
993 _("Cancel"), G_CALLBACK(yahoo_buddy_add_deny_noreason_cb),
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16007
diff changeset
994 purple_connection_get_account(add_req->gc), add_req->who, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
995 add_req);
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
996 }
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
997
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
998 static void yahoo_buddy_denied_our_add(PurpleConnection *gc, const char *who, const char *reason)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
999 {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1000 char *notify_msg;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1001 struct yahoo_data *yd = gc->proto_data;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1002
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1003 if (who == NULL)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1004 return;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1005
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1006 if (reason != NULL) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1007 char *msg2 = yahoo_string_decode(gc, reason, FALSE);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1008 notify_msg = g_strdup_printf(_("%s has (retroactively) denied your request to add them to your list for the following reason: %s."), who, msg2);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1009 g_free(msg2);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1010 } else
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1011 notify_msg = g_strdup_printf(_("%s has (retroactively) denied your request to add them to your list."), who);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1012
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1013 purple_notify_info(gc, NULL, _("Add buddy rejected"), notify_msg);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1014 g_free(notify_msg);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1015
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1016 g_hash_table_remove(yd->friends, who);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1017 purple_prpl_got_user_status(purple_connection_get_account(gc), who, "offline", NULL); /* FIXME: make this set not on list status instead */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1018 /* TODO: Shouldn't we remove the buddy from our local list? */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1019 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1020
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1021 static void yahoo_buddy_auth_req_15(PurpleConnection *gc, struct yahoo_packet *pkt) {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1022 PurpleAccount *account;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1023 GSList *l = pkt->hash;
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1024 const char *msg = NULL;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1025
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1026 account = purple_connection_get_account(gc);
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1027
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1028 /* Buddy authorized/declined our addition */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1029 if (pkt->status == 1) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1030 const char *who = NULL;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1031 int response = 0;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1032
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1033 while (l) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1034 struct yahoo_pair *pair = l->data;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1035
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1036 switch (pair->key) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1037 case 4:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1038 who = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1039 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1040 case 13:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1041 response = strtol(pair->value, NULL, 10);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1042 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1043 case 14:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1044 msg = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1045 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1046 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1047 l = l->next;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1048 }
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1049
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1050 if (response == 1) /* Authorized */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1051 purple_debug_info("yahoo", "Received authorization from buddy '%s'.\n", who ? who : "(Unknown Buddy)");
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1052 else if (response == 2) { /* Declined */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1053 purple_debug_info("yahoo", "Received authorization decline from buddy '%s'.\n", who ? who : "(Unknown Buddy)");
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1054 yahoo_buddy_denied_our_add(gc, who, msg);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1055 } else
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1056 purple_debug_error("yahoo", "Received unknown authorization response of %d from buddy '%s'.\n", response, who ? who : "(Unknown Buddy)");
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1057
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1058 }
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1059 /* Buddy requested authorization to add us. */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1060 else if (pkt->status == 3) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1061 struct yahoo_add_request *add_req;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1062 const char *firstname = NULL, *lastname = NULL;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1063
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1064 add_req = g_new0(struct yahoo_add_request, 1);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1065 add_req->gc = gc;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1066
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1067 while (l) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1068 struct yahoo_pair *pair = l->data;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1069
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1070 switch (pair->key) {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1071 case 4:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1072 add_req->who = g_strdup(pair->value);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1073 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1074 case 5:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1075 add_req->id = g_strdup(pair->value);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1076 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1077 case 14:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1078 msg = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1079 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1080 case 216:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1081 firstname = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1082 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1083 case 241:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1084 add_req->protocol = strtol(pair->value, NULL, 10);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1085 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1086 case 254:
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1087 lastname = pair->value;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1088 break;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1089
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1090 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1091 l = l->next;
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1092 }
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1093
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1094 if (add_req->id && add_req->who) {
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1095 char *alias = NULL, *dec_msg = NULL;
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1096
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1097 if (!purple_privacy_check(account, add_req->who))
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1098 {
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1099 purple_debug_misc("yahoo", "Auth. request from %s dropped and automatically denied due to privacy settings!\n",
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1100 add_req->who);
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1101 yahoo_buddy_add_deny_cb(add_req, NULL);
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1102 return;
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1103 }
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1104
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1105 if (msg)
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1106 dec_msg = yahoo_string_decode(gc, msg, FALSE);
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1107
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1108 if (firstname && lastname)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1109 alias = g_strdup_printf("%s %s", firstname, lastname);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1110 else if (firstname)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1111 alias = g_strdup(firstname);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1112 else if (lastname)
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1113 alias = g_strdup(lastname);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1114
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1115 /* DONE! this is almost exactly the same as what MSN does,
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1116 * this should probably be moved to the core.
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1117 */
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1118 purple_account_request_authorization(account, add_req->who, add_req->id,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1119 alias, dec_msg,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1120 purple_find_buddy(account, add_req->who) != NULL,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1121 yahoo_buddy_add_authorize_cb,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1122 yahoo_buddy_add_deny_reason_cb,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1123 add_req);
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1124 g_free(alias);
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1125 g_free(dec_msg);
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1126 } else {
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1127 g_free(add_req->id);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1128 g_free(add_req->who);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1129 g_free(add_req);
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1130 }
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1131 } else {
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1132 purple_debug_error("yahoo", "Received authorization of unknown status (%d).\n", pkt->status);
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1133 }
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1134 }
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
1135
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1136 /* I don't think this happens anymore in Version 15 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1137 static void yahoo_buddy_added_us(PurpleConnection *gc, struct yahoo_packet *pkt) {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1138 PurpleAccount *account;
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1139 struct yahoo_add_request *add_req;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1140 char *msg = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1141 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1142
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1143 account = purple_connection_get_account(gc);
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1144
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1145 add_req = g_new0(struct yahoo_add_request, 1);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1146 add_req->gc = gc;
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1147
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1148 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1149 struct yahoo_pair *pair = l->data;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1150
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1151 switch (pair->key) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1152 case 1:
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1153 add_req->id = g_strdup(pair->value);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1154 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1155 case 3:
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1156 add_req->who = g_strdup(pair->value);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1157 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1158 case 15: /* time, for when they add us and we're offline */
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1159 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1160 case 14:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 msg = pair->value;
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1162 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1163 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1164 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1165 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1166
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1167 if (add_req->id && add_req->who) {
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1168 char *dec_msg = NULL;
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1169
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1170 if (!purple_privacy_check(account, add_req->who)) {
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1171 purple_debug_misc("yahoo", "Auth. request from %s dropped and automatically denied due to privacy settings!\n",
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1172 add_req->who);
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1173 yahoo_buddy_add_deny_cb(add_req, NULL);
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1174 return;
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1175 }
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1176
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
1177 if (msg)
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1178 dec_msg = yahoo_string_decode(gc, msg, FALSE);
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1179
15119
28d34487ac71 [gaim-migrate @ 17841]
Sean Egan <seanegan@pidgin.im>
parents: 15062
diff changeset
1180 /* DONE! this is almost exactly the same as what MSN does,
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1181 * this should probably be moved to the core.
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1182 */
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1183 purple_account_request_authorization(account, add_req->who, add_req->id,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1184 NULL, dec_msg,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1185 purple_find_buddy(account,add_req->who) != NULL,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1186 yahoo_buddy_add_authorize_cb,
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
1187 yahoo_buddy_add_deny_reason_cb, add_req);
19703
fe6fb15211af Apply local privacy filtering to yahoo auth. requests. Drop and automatically deny any requests that should be filtered. Fixes #2857.
Daniel Atallah <datallah@pidgin.im>
parents: 19674
diff changeset
1188 g_free(dec_msg);
11109
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1189 } else {
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1190 g_free(add_req->id);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1191 g_free(add_req->who);
d90b1fa34259 [gaim-migrate @ 13161]
Daniel Atallah <datallah@pidgin.im>
parents: 11078
diff changeset
1192 g_free(add_req);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
1193 }
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1194 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1195
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1196 /* I have no idea if this every gets called in version 15 */
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1197 static void yahoo_buddy_denied_our_add_old(PurpleConnection *gc, struct yahoo_packet *pkt)
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1198 {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1199 char *who = NULL;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1200 char *msg = NULL;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1201 GSList *l = pkt->hash;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1202
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1203 while (l) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1204 struct yahoo_pair *pair = l->data;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1205
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1206 switch (pair->key) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1207 case 3:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1208 who = pair->value;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1209 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1210 case 14:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1211 msg = pair->value;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1212 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1213 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1214 l = l->next;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1215 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1216
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1217 yahoo_buddy_denied_our_add(gc, who, msg);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1218 }
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1219
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1220 static void yahoo_process_contact(PurpleConnection *gc, struct yahoo_packet *pkt)
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1221 {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1222 switch (pkt->status) {
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1223 case 1:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1224 yahoo_process_status(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1225 return;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1226 case 3:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1227 yahoo_buddy_added_us(gc, pkt);
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1228 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1229 case 7:
19540
5966b84d99ed Fix various things related to authorization on yahoo.
Daniel Atallah <datallah@pidgin.im>
parents: 19538
diff changeset
1230 yahoo_buddy_denied_our_add_old(gc, pkt);
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1231 break;
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1232 default:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
1233 break;
2683
06507dfdd96c [gaim-migrate @ 2696]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2682
diff changeset
1234 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1237 #define OUT_CHARSET "utf-8"
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1238
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1239 static char *yahoo_decode(const char *text)
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1240 {
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1241 char *converted = NULL;
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1242 char *n, *new;
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1243 const char *end, *p;
8616
def20c824c3a [gaim-migrate @ 9367]
Ethan Blanton <elb@pidgin.im>
parents: 8591
diff changeset
1244 int i, k;
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1245
7771
2630e726f818 [gaim-migrate @ 8416]
Nathan Walp <nwalp@pidgin.im>
parents: 7747
diff changeset
1246 n = new = g_malloc(strlen (text) + 1);
8118
7f5315bb4506 [gaim-migrate @ 8822]
Douglas Thrift <douglas@douglasthrift.net>
parents: 8113
diff changeset
1247 end = text + strlen(text);
7f5315bb4506 [gaim-migrate @ 8822]
Douglas Thrift <douglas@douglasthrift.net>
parents: 8113
diff changeset
1248
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1249 for (p = text; p < end; p++, n++) {
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1250 if (*p == '\\') {
9064
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1251 if (p[1] >= '0' && p[1] <= '7') {
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1252 p += 1;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1253 for (i = 0, k = 0; k < 3; k += 1) {
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1254 char c = p[k];
9065
0342389f745c [gaim-migrate @ 9841]
Tim Ringenbach <marv@pidgin.im>
parents: 9064
diff changeset
1255 if (c < '0' || c > '7') break;
9064
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1256 i *= 8;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1257 i += c - '0';
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1258 }
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1259 *n = i;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1260 p += k - 1;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1261 } else { /* bug 959248 */
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1262 /* If we see a \ not followed by an octal number,
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1263 * it means that it is actually a \\ with one \
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1264 * already eaten by some unknown function.
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1265 * This is arguably broken.
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1266 *
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1267 * I think wing is wrong here, there is no function
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1268 * called that I see that could have done it. I guess
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1269 * it is just really sending single \'s. That's yahoo
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1270 * for you.
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1271 */
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1272 *n = *p;
41c3415cc9ec [gaim-migrate @ 9840]
Tim Ringenbach <marv@pidgin.im>
parents: 9062
diff changeset
1273 }
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1274 }
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1275 else
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1276 *n = *p;
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1277 }
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1278
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1279 *n = '\0';
8125
d172f84dbfe2 [gaim-migrate @ 8829]
Nathan Walp <nwalp@pidgin.im>
parents: 8118
diff changeset
1280
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1281 if (strstr(text, "\033$B"))
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1282 converted = g_convert(new, n - new, OUT_CHARSET, "iso-2022-jp", NULL, NULL, NULL);
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1283 if (!converted)
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1284 converted = g_convert(new, n - new, OUT_CHARSET, "iso-8859-1", NULL, NULL, NULL);
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1285 g_free(new);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1286
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1287 return converted;
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1288 }
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1289
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1290 static void yahoo_process_mail(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1292 PurpleAccount *account = purple_connection_get_account(gc);
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1293 struct yahoo_data *yd = gc->proto_data;
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
1294 const char *who = NULL;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
1295 const char *email = NULL;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
1296 const char *subj = NULL;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
1297 const char *yahoo_mail_url = (yd->jp? YAHOOJP_MAIL_URL: YAHOO_MAIL_URL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298 int count = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299 GSList *l = pkt->hash;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1301 if (!purple_account_get_check_mail(account))
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1302 return;
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1303
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 while (l) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 struct yahoo_pair *pair = l->data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 if (pair->key == 9)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 count = strtol(pair->value, NULL, 10);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 else if (pair->key == 43)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309 who = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310 else if (pair->key == 42)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311 email = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312 else if (pair->key == 18)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1313 subj = pair->value;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 l = l->next;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316
4001
ec3725a49136 [gaim-migrate @ 4201]
Luke Schierer <lschiere@pidgin.im>
parents: 3996
diff changeset
1317 if (who && subj && email && *email) {
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1318 char *dec_who = yahoo_decode(who);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1319 char *dec_subj = yahoo_decode(subj);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1320 char *from = g_strdup_printf("%s (%s)", dec_who, email);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1321
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1322 purple_notify_email(gc, dec_subj, from, purple_account_get_username(account),
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1323 yahoo_mail_url, NULL, NULL);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1324
7747
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1325 g_free(dec_who);
ce63da454857 [gaim-migrate @ 8392]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 7696
diff changeset
1326 g_free(dec_subj);
2850
783e46199cb4 [gaim-migrate @ 2863]
abiligiri
parents: 2813
diff changeset
1327 g_free(from);
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1328 } else if (count > 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1329 const char *to = purple_account_get_username(account);
9221
cae2261ba6f2 [gaim-migrate @ 10017]
Ambrose Li <ambrose.li@gmail.com>
parents: 9220
diff changeset
1330 const char *url = yahoo_mail_url;
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1331
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1332 purple_notify_emails(gc, count, FALSE, NULL, NULL, &to, &url,
5521
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1333 NULL, NULL);
fca5b7c1340d [gaim-migrate @ 5921]
Christian Hammond <chipx86@chipx86.com>
parents: 5498
diff changeset
1334 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1335 }
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1336 /* This is the y64 alphabet... it's like base64, but has a . and a _ */
14904
cab89db4854c [gaim-migrate @ 17611]
Henning Norén <henning.noren@gmail.com>
parents: 14899
diff changeset
1337 static const char base64digits[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._";
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1338
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1339 /* This is taken from Sylpheed by Hiroyuki Yamamoto. We have our own tobase64 function
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1340 * in util.c, but it has a bug I don't feel like finding right now ;) */
11897
10853b830964 [gaim-migrate @ 14188]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11838
diff changeset
1341 static void to_y64(char *out, const unsigned char *in, gsize inlen)
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1342 /* raw bytes in quasi-big-endian order to base 64 string (NUL-terminated) */
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1343 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1344 for (; inlen >= 3; inlen -= 3)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1345 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1346 *out++ = base64digits[in[0] >> 2];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1347 *out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1348 *out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1349 *out++ = base64digits[in[2] & 0x3f];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1350 in += 3;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1351 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1352 if (inlen > 0)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1353 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1354 unsigned char fragment;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1355
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1356 *out++ = base64digits[in[0] >> 2];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1357 fragment = (in[0] << 4) & 0x30;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1358 if (inlen > 1)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1359 fragment |= in[1] >> 4;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1360 *out++ = base64digits[fragment];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1361 *out++ = (inlen < 2) ? '-' : base64digits[(in[1] << 2) & 0x3c];
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1362 *out++ = '-';
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1363 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1364 *out = '\0';
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1365 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1366
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1367 static void yahoo_process_auth_old(PurpleConnection *gc, const char *seed)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1368 {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1369 struct yahoo_packet *pack;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1370 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1371 const char *name = purple_normalize(account, purple_account_get_username(account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1372 const char *pass = purple_connection_get_password(gc);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1373 struct yahoo_data *yd = gc->proto_data;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1374
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1375 /* So, Yahoo has stopped supporting its older clients in India, and undoubtedly
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1376 * will soon do so in the rest of the world.
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1377 *
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1378 * The new clients use this authentication method. I warn you in advance, it's
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8713
diff changeset
1379 * bizarre, convoluted, inordinately complicated. It's also no more secure than
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1380 * crypt() was. The only purpose this scheme could serve is to prevent third
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1381 * party clients from connecting to their servers.
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1382 *
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1383 * Sorry, Yahoo.
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1384 */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1385
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1386 PurpleCipher *cipher;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1387 PurpleCipherContext *context;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
1388 guchar digest[16];
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1389
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1390 char *crypt_result;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1391 char password_hash[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1392 char crypt_hash[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1393 char *hash_string_p = g_malloc(50 + strlen(name));
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1394 char *hash_string_c = g_malloc(50 + strlen(name));
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1395
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1396 char checksum;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1397
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1398 int sv;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1399
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1400 char result6[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1401 char result96[25];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1402
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1403 sv = seed[15];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1404 sv = sv % 8;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1405
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1406 cipher = purple_ciphers_find_cipher("md5");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1407 context = purple_cipher_context_new(cipher, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1408
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1409 purple_cipher_context_append(context, (const guchar *)pass, strlen(pass));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1410 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1411
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1412 to_y64(password_hash, digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1413
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1414 crypt_result = yahoo_crypt(pass, "$1$_2S43d5f$");
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1415
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1416 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1417 purple_cipher_context_append(context, (const guchar *)crypt_result, strlen(crypt_result));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1418 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1419 to_y64(crypt_hash, digest, 16);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1420
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1421 switch (sv) {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1422 case 1:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1423 case 6:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1424 checksum = seed[seed[9] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1425 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1426 "%c%s%s%s", checksum, name, seed, password_hash);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1427 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1428 "%c%s%s%s", checksum, name, seed, crypt_hash);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1429 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1430 case 2:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1431 case 7:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1432 checksum = seed[seed[15] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1433 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1434 "%c%s%s%s", checksum, seed, password_hash, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1435 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1436 "%c%s%s%s", checksum, seed, crypt_hash, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1437 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1438 case 3:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1439 checksum = seed[seed[1] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1440 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1441 "%c%s%s%s", checksum, name, password_hash, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1442 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1443 "%c%s%s%s", checksum, name, crypt_hash, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1444 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1445 case 4:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1446 checksum = seed[seed[3] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1447 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1448 "%c%s%s%s", checksum, password_hash, seed, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1449 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1450 "%c%s%s%s", checksum, crypt_hash, seed, name);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1451 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1452 case 0:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1453 case 5:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1454 checksum = seed[seed[7] % 16];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1455 g_snprintf(hash_string_p, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1456 "%c%s%s%s", checksum, password_hash, name, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1457 g_snprintf(hash_string_c, strlen(name) + 50,
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1458 "%c%s%s%s", checksum, crypt_hash, name, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1459 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1460 }
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1461
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1462 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1463 purple_cipher_context_append(context, (const guchar *)hash_string_p, strlen(hash_string_p));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1464 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1465 to_y64(result6, digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1466
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1467 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1468 purple_cipher_context_append(context, (const guchar *)hash_string_c, strlen(hash_string_c));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1469 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1470 purple_cipher_context_destroy(context);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1471 to_y64(result96, digest, 16);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1472
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1473 pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, YAHOO_STATUS_AVAILABLE, 0);
22401
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1474
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1475 if(yd->jp) {
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1476 yahoo_packet_hash(pack, "sssss",
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1477 0, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1478 6, result6,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1479 96, result96,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1480 1, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1481 135, YAHOOJP_CLIENT_VERSION);
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1482 } else {
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1483 yahoo_packet_hash(pack, "ssssss",
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1484 0, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1485 6, result6,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1486 96, result96,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1487 1, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1488 244, YAHOO_CLIENT_VERSION_ID,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1489 135, YAHOO_CLIENT_VERSION);
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1490 }
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1491
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
1492 yahoo_packet_send_and_free(pack, yd);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1493
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1494 g_free(hash_string_p);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1495 g_free(hash_string_c);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1496 }
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1497
6998
5a4cd00736ce [gaim-migrate @ 7554]
Sean Egan <seanegan@pidgin.im>
parents: 6989
diff changeset
1498 /* I'm dishing out some uber-mad props to Cerulean Studios for cracking this
5a4cd00736ce [gaim-migrate @ 7554]
Sean Egan <seanegan@pidgin.im>
parents: 6989
diff changeset
1499 * and sending the fix! Thanks guys. */
5a4cd00736ce [gaim-migrate @ 7554]
Sean Egan <seanegan@pidgin.im>
parents: 6989
diff changeset
1500
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1501 static void yahoo_process_auth_new(PurpleConnection *gc, const char *seed)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1502 {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1503 struct yahoo_packet *pack = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1504 PurpleAccount *account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1505 const char *name = purple_normalize(account, purple_account_get_username(account));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1506 const char *pass = purple_connection_get_password(gc);
14108
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1507 char *enc_pass;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1508 struct yahoo_data *yd = gc->proto_data;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1509
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1510 PurpleCipher *md5_cipher;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1511 PurpleCipherContext *md5_ctx;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
1512 guchar md5_digest[16];
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1513
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1514 PurpleCipher *sha1_cipher;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1515 PurpleCipherContext *sha1_ctx1;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1516 PurpleCipherContext *sha1_ctx2;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1517
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1518 char *alphabet1 = "FBZDWAGHrJTLMNOPpRSKUVEXYChImkwQ";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1519 char *alphabet2 = "F0E1D2C3B4A59687abcdefghijklmnop";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1520
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1521 char *challenge_lookup = "qzec2tb3um1olpar8whx4dfgijknsvy5";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1522 char *operand_lookup = "+|&%/*^-";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1523 char *delimit_lookup = ",;";
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1524
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1525 char *password_hash = (char *)g_malloc(25);
22205
ab8b50837917 Fix my typo
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22204
diff changeset
1526 char *crypt_hash = (char *)g_malloc(25);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1527 char *crypt_result = NULL;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1528
11144
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1529 unsigned char pass_hash_xor1[64];
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1530 unsigned char pass_hash_xor2[64];
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1531 unsigned char crypt_hash_xor1[64];
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1532 unsigned char crypt_hash_xor2[64];
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1533 char resp_6[100];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1534 char resp_96[100];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1535
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1536 unsigned char digest1[20];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1537 unsigned char digest2[20];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1538 unsigned char comparison_src[20];
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1539 unsigned char magic_key_char[4];
11144
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
1540 const char *magic_ptr;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1541
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1542 unsigned int magic[64];
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1543 unsigned int magic_work = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1544 unsigned int magic_4 = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1545
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1546 int x;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1547 int y;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1548 int cnt = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1549 int magic_cnt = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1550 int magic_len;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1551
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1552 memset(password_hash, 0, 25);
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1553 memset(crypt_hash, 0, 25);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1554 memset(&pass_hash_xor1, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1555 memset(&pass_hash_xor2, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1556 memset(&crypt_hash_xor1, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1557 memset(&crypt_hash_xor2, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1558 memset(&digest1, 0, 20);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1559 memset(&digest2, 0, 20);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1560 memset(&magic, 0, 64);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1561 memset(&resp_6, 0, 100);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1562 memset(&resp_96, 0, 100);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1563 memset(&magic_key_char, 0, 4);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1564 memset(&comparison_src, 0, 20);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1565
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1566 md5_cipher = purple_ciphers_find_cipher("md5");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1567 md5_ctx = purple_cipher_context_new(md5_cipher, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1568
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1569 sha1_cipher = purple_ciphers_find_cipher("sha1");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1570 sha1_ctx1 = purple_cipher_context_new(sha1_cipher, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1571 sha1_ctx2 = purple_cipher_context_new(sha1_cipher, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1572
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1573 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1574 * Magic: Phase 1. Generate what seems to be a 30 byte value (could change if base64
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1575 * ends up differently? I don't remember and I'm tired, so use a 64 byte buffer.
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1576 */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1577
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1578 magic_ptr = seed;
8375
13448d864067 [gaim-migrate @ 9102]
Tim Ringenbach <marv@pidgin.im>
parents: 8357
diff changeset
1579
22206
bb119c007a45 Fix a couple compile warnings.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22205
diff changeset
1580 while (*magic_ptr != '\0') {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1581 char *loc;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1582
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1583 /* Ignore parentheses. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1584
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1585 if (*magic_ptr == '(' || *magic_ptr == ')') {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1586 magic_ptr++;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1587 continue;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1588 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1589
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1590 /* Characters and digits verify against the challenge lookup. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1591
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1592 if (isalpha(*magic_ptr) || isdigit(*magic_ptr)) {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1593 loc = strchr(challenge_lookup, *magic_ptr);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1594 if (!loc) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1595 /* SME XXX Error - disconnect here */
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1596 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1597
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1598 /* Get offset into lookup table and shl 3. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1599
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1600 magic_work = loc - challenge_lookup;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1601 magic_work <<= 3;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1602
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1603 magic_ptr++;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1604 continue;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1605 } else {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1606 unsigned int local_store;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1607
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1608 loc = strchr(operand_lookup, *magic_ptr);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1609 if (!loc) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1610 /* SME XXX Disconnect */
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1611 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1612
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1613 local_store = loc - operand_lookup;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1614
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1615 /* Oops; how did this happen? */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1616
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1617 if (magic_cnt >= 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1618 break;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1619
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1620 magic[magic_cnt++] = magic_work | local_store;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1621 magic_ptr++;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1622 continue;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1623 }
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1624 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1625
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1626 magic_len = magic_cnt;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1627 magic_cnt = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1628
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1629 /* Magic: Phase 2. Take generated magic value and sprinkle fairy
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1630 * dust on the values.
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1631 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1632
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1633 for (magic_cnt = magic_len - 2; magic_cnt >= 0; magic_cnt--) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1634 unsigned char byte1;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1635 unsigned char byte2;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1636
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1637 /* Bad. Abort. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1638
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1639 if ((magic_cnt + 1 > magic_len) || (magic_cnt > magic_len))
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1640 break;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1641
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1642 byte1 = magic[magic_cnt];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1643 byte2 = magic[magic_cnt+1];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1644
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1645 byte1 *= 0xcd;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1646 byte1 ^= byte2;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1647
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1648 magic[magic_cnt+1] = byte1;
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1649 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1650
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1651 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1652 * Magic: Phase 3. This computes 20 bytes. The first 4 bytes are used as our magic
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1653 * key (and may be changed later); the next 16 bytes are an MD5 sum of the magic key
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1654 * plus 3 bytes. The 3 bytes are found by looping, and they represent the offsets
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1655 * into particular functions we'll later call to potentially alter the magic key.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1656 *
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1657 * %-)
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1658 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1659
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1660 magic_cnt = 1;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1661 x = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1662
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1663 do {
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1664 unsigned int bl = 0;
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1665 unsigned int cl = magic[magic_cnt++];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1666
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1667 if (magic_cnt >= magic_len)
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1668 break;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1669
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1670 if (cl > 0x7F) {
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1671 if (cl < 0xe0)
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1672 bl = cl = (cl & 0x1f) << 6;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1673 else {
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1674 bl = magic[magic_cnt++];
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1675 cl = (cl & 0x0f) << 6;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1676 bl = ((bl & 0x3f) + cl) << 6;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1677 }
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1678
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1679 cl = magic[magic_cnt++];
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1680 bl = (cl & 0x3f) + bl;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1681 } else
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1682 bl = cl;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1683
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1684 comparison_src[x++] = (bl & 0xff00) >> 8;
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1685 comparison_src[x++] = bl & 0xff;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1686 } while (x < 20);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1687
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1688 /* First four bytes are magic key. */
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1689 memcpy(&magic_key_char[0], comparison_src, 4);
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1690 magic_4 = magic_key_char[0] | (magic_key_char[1] << 8) |
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1691 (magic_key_char[2] << 16) | (magic_key_char[3] << 24);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1692
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1693 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1694 * Magic: Phase 4. Determine what function to use later by getting outside/inside
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1695 * loop values until we match our previous buffer.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1696 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1697 for (x = 0; x < 65535; x++) {
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1698 int leave = 0;
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1699
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1700 for (y = 0; y < 5; y++) {
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
1701 unsigned char test[3];
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1702
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1703 /* Calculate buffer. */
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1704 test[0] = x;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1705 test[1] = x >> 8;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1706 test[2] = y;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1707
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1708 purple_cipher_context_reset(md5_ctx, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1709 purple_cipher_context_append(md5_ctx, magic_key_char, 4);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1710 purple_cipher_context_append(md5_ctx, test, 3);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1711 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest),
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1712 md5_digest, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1713
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1714 if (!memcmp(md5_digest, comparison_src+4, 16)) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1715 leave = 1;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1716 break;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1717 }
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1718 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1719
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1720 if (leave == 1)
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1721 break;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1722 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1723
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1724 /* If y != 0, we need some help. */
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1725 if (y != 0) {
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1726 unsigned int updated_key;
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1727
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1728 /* Update magic stuff.
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1729 * Call it twice because Yahoo's encryption is super bad ass.
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1730 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1731 updated_key = yahoo_auth_finalCountdown(magic_4, 0x60, y, x);
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1732 updated_key = yahoo_auth_finalCountdown(updated_key, 0x60, y, x);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1733
8482
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1734 magic_key_char[0] = updated_key & 0xff;
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1735 magic_key_char[1] = (updated_key >> 8) & 0xff;
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1736 magic_key_char[2] = (updated_key >> 16) & 0xff;
75fc0de5be78 [gaim-migrate @ 9215]
Andrew Wellington <proton@users.sourceforge.net>
parents: 8441
diff changeset
1737 magic_key_char[3] = (updated_key >> 24) & 0xff;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1738 }
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1739
14108
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1740 enc_pass = yahoo_string_encode(gc, pass, NULL);
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1741
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1742 /* Get password and crypt hashes as per usual. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1743 purple_cipher_context_reset(md5_ctx, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1744 purple_cipher_context_append(md5_ctx, (const guchar *)enc_pass, strlen(enc_pass));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1745 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest),
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1746 md5_digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1747 to_y64(password_hash, md5_digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1748
14108
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1749 crypt_result = yahoo_crypt(enc_pass, "$1$_2S43d5f$");
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1750
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1751 g_free(enc_pass);
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1752 enc_pass = NULL;
8f4414c9827b [gaim-migrate @ 16658]
Daniel Atallah <datallah@pidgin.im>
parents: 14030
diff changeset
1753
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1754 purple_cipher_context_reset(md5_ctx, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1755 purple_cipher_context_append(md5_ctx, (const guchar *)crypt_result, strlen(crypt_result));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1756 purple_cipher_context_digest(md5_ctx, sizeof(md5_digest),
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1757 md5_digest, NULL);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1758 to_y64(crypt_hash, md5_digest, 16);
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1759
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1760 /* Our first authentication response is based off of the password hash. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1761 for (x = 0; x < (int)strlen(password_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1762 pass_hash_xor1[cnt++] = password_hash[x] ^ 0x36;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1763
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1764 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1765 memset(&(pass_hash_xor1[cnt]), 0x36, 64-cnt);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1766
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1767 cnt = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1768
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1769 for (x = 0; x < (int)strlen(password_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1770 pass_hash_xor2[cnt++] = password_hash[x] ^ 0x5c;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1771
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1772 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1773 memset(&(pass_hash_xor2[cnt]), 0x5c, 64-cnt);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1774
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1775 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1776 * The first context gets the password hash XORed with 0x36 plus a magic value
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1777 * which we previously extrapolated from our challenge.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1778 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1779
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1780 purple_cipher_context_append(sha1_ctx1, pass_hash_xor1, 64);
9382
d05b4c47758d [gaim-migrate @ 10190]
Sean Egan <seanegan@pidgin.im>
parents: 9376
diff changeset
1781 if (y >= 3)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1782 purple_cipher_context_set_option(sha1_ctx1, "sizeLo", GINT_TO_POINTER(0x1ff));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1783 purple_cipher_context_append(sha1_ctx1, magic_key_char, 4);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1784 purple_cipher_context_digest(sha1_ctx1, sizeof(digest1), digest1, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1785
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1786 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1787 * The second context gets the password hash XORed with 0x5c plus the SHA-1 digest
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1788 * of the first context.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1789 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1790
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1791 purple_cipher_context_append(sha1_ctx2, pass_hash_xor2, 64);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1792 purple_cipher_context_append(sha1_ctx2, digest1, 20);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1793 purple_cipher_context_digest(sha1_ctx2, sizeof(digest2), digest2, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1794
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1795 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1796 * Now that we have digest2, use it to fetch characters from an alphabet to construct
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1797 * our first authentication response.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1798 */
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1799
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1800 for (x = 0; x < 20; x += 2) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1801 unsigned int val = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1802 unsigned int lookup = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1803
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1804 char byte[6];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1805
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1806 memset(&byte, 0, 6);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1807
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1808 /* First two bytes of digest stuffed together. */
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1809
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1810 val = digest2[x];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1811 val <<= 8;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1812 val += digest2[x+1];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1813
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1814 lookup = (val >> 0x0b);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1815 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1816 if (lookup >= strlen(alphabet1))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1817 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1818 sprintf(byte, "%c", alphabet1[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1819 strcat(resp_6, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1820 strcat(resp_6, "=");
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1821
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1822 lookup = (val >> 0x06);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1823 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1824 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1825 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1826 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1827 strcat(resp_6, byte);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1828
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1829 lookup = (val >> 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1830 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1831 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1832 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1833 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1834 strcat(resp_6, byte);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1835
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1836 lookup = (val & 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1837 if (lookup >= strlen(delimit_lookup))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1838 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1839 sprintf(byte, "%c", delimit_lookup[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1840 strcat(resp_6, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1841 }
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1842
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1843 /* Our second authentication response is based off of the crypto hash. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1844
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1845 cnt = 0;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1846 memset(&digest1, 0, 20);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1847 memset(&digest2, 0, 20);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1848
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1849 for (x = 0; x < (int)strlen(crypt_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1850 crypt_hash_xor1[cnt++] = crypt_hash[x] ^ 0x36;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1851
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1852 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1853 memset(&(crypt_hash_xor1[cnt]), 0x36, 64-cnt);
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1854
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1855 cnt = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1856
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1857 for (x = 0; x < (int)strlen(crypt_hash); x++)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1858 crypt_hash_xor2[cnt++] = crypt_hash[x] ^ 0x5c;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1859
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1860 if (cnt < 64)
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1861 memset(&(crypt_hash_xor2[cnt]), 0x5c, 64-cnt);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1862
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1863 purple_cipher_context_reset(sha1_ctx1, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1864 purple_cipher_context_reset(sha1_ctx2, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1865
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1866 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1867 * The first context gets the password hash XORed with 0x36 plus a magic value
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1868 * which we previously extrapolated from our challenge.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1869 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1870
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1871 purple_cipher_context_append(sha1_ctx1, crypt_hash_xor1, 64);
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1872 if (y >= 3) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1873 purple_cipher_context_set_option(sha1_ctx1, "sizeLo",
10687
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1874 GINT_TO_POINTER(0x1ff));
5ac4b470bee8 [gaim-migrate @ 12235]
Etan Reisner <deryni@pidgin.im>
parents: 10684
diff changeset
1875 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1876 purple_cipher_context_append(sha1_ctx1, magic_key_char, 4);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1877 purple_cipher_context_digest(sha1_ctx1, sizeof(digest1), digest1, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1878
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1879 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1880 * The second context gets the password hash XORed with 0x5c plus the SHA-1 digest
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1881 * of the first context.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1882 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1883
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1884 purple_cipher_context_append(sha1_ctx2, crypt_hash_xor2, 64);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1885 purple_cipher_context_append(sha1_ctx2, digest1, 20);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1886 purple_cipher_context_digest(sha1_ctx2, sizeof(digest2), digest2, NULL);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1887
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1888 /*
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1889 * Now that we have digest2, use it to fetch characters from an alphabet to construct
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1890 * our first authentication response.
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1891 */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1892
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1893 for (x = 0; x < 20; x += 2) {
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1894 unsigned int val = 0;
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1895 unsigned int lookup = 0;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1896
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1897 char byte[6];
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1898
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1899 memset(&byte, 0, 6);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1900
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
1901 /* First two bytes of digest stuffed together. */
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1902
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1903 val = digest2[x];
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1904 val <<= 8;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1905 val += digest2[x+1];
8349
0319a2f4d61d [gaim-migrate @ 9073]
Sean Egan <seanegan@pidgin.im>
parents: 8243
diff changeset
1906
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1907 lookup = (val >> 0x0b);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1908 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1909 if (lookup >= strlen(alphabet1))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1910 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1911 sprintf(byte, "%c", alphabet1[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1912 strcat(resp_96, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1913 strcat(resp_96, "=");
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1914
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1915 lookup = (val >> 0x06);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1916 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1917 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1918 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1919 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1920 strcat(resp_96, byte);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1921
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1922 lookup = (val >> 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1923 lookup &= 0x1f;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1924 if (lookup >= strlen(alphabet2))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1925 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1926 sprintf(byte, "%c", alphabet2[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1927 strcat(resp_96, byte);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1928
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1929 lookup = (val & 0x01);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1930 if (lookup >= strlen(delimit_lookup))
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1931 break;
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1932 sprintf(byte, "%c", delimit_lookup[lookup]);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1933 strcat(resp_96, byte);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1934 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1935 purple_debug_info("yahoo", "yahoo status: %d\n", yd->current_status);
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
1936 pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP, yd->current_status, 0);
22401
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1937
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1938 if(yd->jp) {
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1939 yahoo_packet_hash(pack, "sssss",
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1940 0, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1941 6, resp_6,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1942 96, resp_96,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1943 1, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1944 135, YAHOOJP_CLIENT_VERSION);
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1945 } else {
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1946 yahoo_packet_hash(pack, "ssssss",
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1947 0, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1948 6, resp_6,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1949 96, resp_96,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1950 1, name,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1951 244, YAHOO_CLIENT_VERSION_ID,
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1952 135, YAHOO_CLIENT_VERSION);
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1953 }
5fe1761a4a15 Simplified version of the newest patch on #4533 to not try Yahoo protocol
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22373
diff changeset
1954
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1955 if (yd->picture_checksum)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
1956 yahoo_packet_hash_int(pack, 192, yd->picture_checksum);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
1957
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
1958 yahoo_packet_send_and_free(pack, yd);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1959
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1960 purple_cipher_context_destroy(md5_ctx);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1961 purple_cipher_context_destroy(sha1_ctx1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1962 purple_cipher_context_destroy(sha1_ctx2);
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
1963
7424
a9f6b975759c [gaim-migrate @ 8026]
Ethan Blanton <elb@pidgin.im>
parents: 7423
diff changeset
1964 g_free(password_hash);
a9f6b975759c [gaim-migrate @ 8026]
Ethan Blanton <elb@pidgin.im>
parents: 7423
diff changeset
1965 g_free(crypt_hash);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1966 }
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1967
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1968 static void yahoo_process_auth(PurpleConnection *gc, struct yahoo_packet *pkt)
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1969 {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1970 char *seed = NULL;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1971 char *sn = NULL;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1972 GSList *l = pkt->hash;
7010
afa5752740a7 [gaim-migrate @ 7573]
Tim Ringenbach <marv@pidgin.im>
parents: 6998
diff changeset
1973 int m = 0;
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1974 gchar *buf;
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1975
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1976 while (l) {
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1977 struct yahoo_pair *pair = l->data;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1978 if (pair->key == 94)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1979 seed = pair->value;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1980 if (pair->key == 1)
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1981 sn = pair->value;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1982 if (pair->key == 13)
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1983 m = atoi(pair->value);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1984 l = l->next;
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1985 }
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
1986
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1987 if (seed) {
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1988 switch (m) {
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1989 case 0:
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1990 yahoo_process_auth_old(gc, seed);
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1991 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1992 case 1:
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
1993 case 2: /* This case seems to work, could probably use testing */
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1994 yahoo_process_auth_new(gc, seed);
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
1995 break;
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
1996 default:
7043
b79933739678 [gaim-migrate @ 7606]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7015
diff changeset
1997 buf = g_strdup_printf(_("The Yahoo server has requested the use of an unrecognized "
15444
b793ef258d23 I think this changes every user-visible string that contains 'Gaim.' We probably want the UI to be able
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1998 "authentication method. You will probably not be able "
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
1999 "to successfully sign on to Yahoo. Check %s for updates."), PURPLE_WEBSITE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2000 purple_notify_error(gc, "", _("Failed Yahoo! Authentication"),
7043
b79933739678 [gaim-migrate @ 7606]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7015
diff changeset
2001 buf);
b79933739678 [gaim-migrate @ 7606]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 7015
diff changeset
2002 g_free(buf);
6986
40613e58e3d6 [gaim-migrate @ 7542]
Sean Egan <seanegan@pidgin.im>
parents: 6982
diff changeset
2003 yahoo_process_auth_new(gc, seed); /* Can't hurt to try it anyway. */
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2004 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2005 }
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2006 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2007
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2008 static void ignore_buddy(PurpleBuddy *buddy) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2009 PurpleGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2010 PurpleAccount *account;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2011 gchar *name;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2012
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2013 if (!buddy)
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
2014 return;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2015
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2016 group = purple_buddy_get_group(buddy);
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2017 name = g_strdup(buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2018 account = buddy->account;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2019
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2020 purple_debug(PURPLE_DEBUG_INFO, "blist",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2021 "Removing '%s' from buddy list.\n", buddy->name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2022 purple_account_remove_buddy(account, buddy, group);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2023 purple_blist_remove_buddy(buddy);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2024
6792
381bafc8200c [gaim-migrate @ 7331]
Jesse Farmer
parents: 6791
diff changeset
2025 serv_add_deny(account->gc, name);
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
2026
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2027 g_free(name);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2028 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2029
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2030 static void keep_buddy(PurpleBuddy *b) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2031 purple_privacy_deny_remove(b->account, b->name, 1);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2032 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2033
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2034 static void yahoo_process_ignore(PurpleConnection *gc, struct yahoo_packet *pkt) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2035 PurpleBuddy *b;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2036 GSList *l;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2037 gchar *who = NULL;
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2038 gchar *me = NULL;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2039 gchar buf[BUF_LONG];
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2040 gboolean ignore = TRUE;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2041 gint status = 0;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2042
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2043 for (l = pkt->hash; l; l = l->next) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2044 struct yahoo_pair *pair = l->data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2045 switch (pair->key) {
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2046 case 0:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2047 who = pair->value;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2048 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2049 case 1:
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2050 me = pair->value;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2051 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2052 case 13:
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2053 /* 1 == ignore, 2 == unignore */
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2054 ignore = (strtol(pair->value, NULL, 10) == 1);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2055 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2056 case 66:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2057 status = strtol(pair->value, NULL, 10);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2058 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2059 default:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2060 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2061 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2062 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2063
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2064 /*
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2065 * status
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2066 * 0 - ok
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2067 * 2 - already in ignore list, could not add
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2068 * 3 - not in ignore list, could not delete
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2069 * 12 - is a buddy, could not add (and possibly also a not-in-ignore list condition?)
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2070 */
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2071 switch (status) {
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2072 case 12:
22562
2e7123571ecd Fix a missing a comma
Mark Doliner <markdoliner@pidgin.im>
parents: 22561
diff changeset
2073 purple_debug_info("yahoo", "Server reported \"is a buddy\" for %s while %s",
22561
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2074 who, (ignore ? "ignoring" : "unignoring"));
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2075
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2076 if (ignore) {
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2077 b = purple_find_buddy(gc->account, who);
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2078 g_snprintf(buf, sizeof(buf), _("You have tried to ignore %s, but the "
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2079 "user is on your buddy list. Clicking \"Yes\" "
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2080 "will remove and ignore the buddy."), who);
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2081 purple_request_yes_no(gc, NULL, _("Ignore buddy?"), buf, 0,
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2082 gc->account, who, NULL,
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2083 b,
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2084 G_CALLBACK(ignore_buddy),
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2085 G_CALLBACK(keep_buddy));
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2086 break;
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2087 }
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2088 case 2:
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2089 purple_debug_info("yahoo", "Server reported that %s is already in the ignore list.",
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2090 who);
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2091 break;
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2092 case 3:
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2093 purple_debug_info("yahoo", "Server reported that %s is not in the ignore list; could not delete",
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2094 who);
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2095 case 0:
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2096 default:
0aeea64fa1dc Added some comments and debug logging to yahoo_process_ignore() gleaned from libyahoo2's implementation, from which I guess our prpl was forked (?) given how similar many functions are.
Evan Schoenberg <evands@pidgin.im>
parents: 22552
diff changeset
2097 break;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2098 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2099 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2100
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2101 static void yahoo_process_authresp(PurpleConnection *gc, struct yahoo_packet *pkt)
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2102 {
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2103 #ifdef TRY_WEBMESSENGER_LOGIN
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2104 struct yahoo_data *yd = gc->proto_data;
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2105 #endif
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2106 GSList *l = pkt->hash;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2107 int err = 0;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2108 char *msg;
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2109 char *url = NULL;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2110 char *fullmsg;
18946
36989fd1718f make us forget the password if the user didn't choose save password
Ka-Hing Cheung <khc@pidgin.im>
parents: 18940
diff changeset
2111 PurpleAccount *account = gc->account;
21510
eb2829adfd40 Use PURPLE_CONNECTION_ERROR_INVALID_USERNAME in oscar and yahoo, which were
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
2112 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED;
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2113
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2114 while (l) {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2115 struct yahoo_pair *pair = l->data;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2116
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2117 if (pair->key == 66)
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2118 err = strtol(pair->value, NULL, 10);
21622
e9e85d3d0424 Fix #3421 by checking for an existing conversation in which to display a yahoo buzz.
Daniel Atallah <datallah@pidgin.im>
parents: 21510
diff changeset
2119 else if (pair->key == 20)
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2120 url = pair->value;
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2121
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2122 l = l->next;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2123 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2124
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2125 switch (err) {
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2126 case 3:
22942
2bf494f8e2a4 Change the string "screen name" to "username" everywhere. I think most
Mark Doliner <markdoliner@pidgin.im>
parents: 22826
diff changeset
2127 msg = g_strdup(_("Invalid username."));
21510
eb2829adfd40 Use PURPLE_CONNECTION_ERROR_INVALID_USERNAME in oscar and yahoo, which were
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
2128 reason = PURPLE_CONNECTION_ERROR_INVALID_USERNAME;
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2129 break;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2130 case 13:
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2131 #ifdef TRY_WEBMESSENGER_LOGIN
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2132 if (!yd->wm) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2133 PurpleUtilFetchUrlData *url_data;
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2134 yd->wm = TRUE;
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2135 if (yd->fd >= 0)
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2136 close(yd->fd);
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2137 if (gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2138 purple_input_remove(gc->inpa);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2139 url_data = purple_util_fetch_url(WEBMESSENGER_URL, TRUE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2140 "Purple/" VERSION, FALSE, yahoo_login_page_cb, gc);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2141 if (url_data != NULL)
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2142 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
9410
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2143 return;
651e6af9e3c0 [gaim-migrate @ 10225]
Tim Ringenbach <marv@pidgin.im>
parents: 9409
diff changeset
2144 }
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2145 #endif
18946
36989fd1718f make us forget the password if the user didn't choose save password
Ka-Hing Cheung <khc@pidgin.im>
parents: 18940
diff changeset
2146 if (!purple_account_get_remember_password(account))
36989fd1718f make us forget the password if the user didn't choose save password
Ka-Hing Cheung <khc@pidgin.im>
parents: 18940
diff changeset
2147 purple_account_set_password(account, NULL);
36989fd1718f make us forget the password if the user didn't choose save password
Ka-Hing Cheung <khc@pidgin.im>
parents: 18940
diff changeset
2148
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2149 msg = g_strdup(_("Incorrect password."));
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2150 break;
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2151 case 14:
9280
cca558311af2 [gaim-migrate @ 10083]
Tim Ringenbach <marv@pidgin.im>
parents: 9279
diff changeset
2152 msg = g_strdup(_("Your account is locked, please log in to the Yahoo! website."));
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2153 break;
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2154 default:
9280
cca558311af2 [gaim-migrate @ 10083]
Tim Ringenbach <marv@pidgin.im>
parents: 9279
diff changeset
2155 msg = g_strdup_printf(_("Unknown error number %d. Logging into the Yahoo! website may fix this."), err);
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2156 }
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2157
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2158 if (url)
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2159 fullmsg = g_strdup_printf("%s\n%s", msg, url);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2160 else
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2161 fullmsg = g_strdup(msg);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2162
21510
eb2829adfd40 Use PURPLE_CONNECTION_ERROR_INVALID_USERNAME in oscar and yahoo, which were
Will Thompson <resiak@pidgin.im>
parents: 21503
diff changeset
2163 purple_connection_error_reason(gc, reason, fullmsg);
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2164 g_free(msg);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2165 g_free(fullmsg);
6761
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2166 }
87201975746a [gaim-migrate @ 7293]
Tim Ringenbach <marv@pidgin.im>
parents: 6760
diff changeset
2167
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2168 static void yahoo_process_addbuddy(PurpleConnection *gc, struct yahoo_packet *pkt)
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2169 {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2170 int err = 0;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2171 char *who = NULL;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2172 char *group = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
2173 char *decoded_group;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2174 char *buf;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
2175 YahooFriend *f;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2176 GSList *l = pkt->hash;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2177
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2178 while (l) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2179 struct yahoo_pair *pair = l->data;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2180
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2181 switch (pair->key) {
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2182 case 66:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2183 err = strtol(pair->value, NULL, 10);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2184 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2185 case 7:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2186 who = pair->value;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2187 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2188 case 65:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2189 group = pair->value;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2190 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2191 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2192
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2193 l = l->next;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2194 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2195
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2196 if (!who)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2197 return;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2198 if (!group)
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2199 group = "";
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2200
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2201 if (!err || (err == 2)) { /* 0 = ok, 2 = already on serv list */
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
2202 f = yahoo_friend_find_or_new(gc, who);
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
2203 yahoo_update_status(gc, who, f);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2204 return;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2205 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2206
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
2207 decoded_group = yahoo_string_decode(gc, group, FALSE);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2208 buf = g_strdup_printf(_("Could not add buddy %s to group %s to the server list on account %s."),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2209 who, decoded_group, purple_connection_get_display_name(gc));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2210 if (!purple_conv_present_error(who, purple_connection_get_account(gc), buf))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2211 purple_notify_error(gc, NULL, _("Could not add buddy to server list"), buf);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2212 g_free(buf);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
2213 g_free(decoded_group);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2214 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2215
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2216 static void yahoo_process_p2p(PurpleConnection *gc, struct yahoo_packet *pkt)
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2217 {
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2218 GSList *l = pkt->hash;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2219 char *who = NULL;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2220 char *base64 = NULL;
11137
cf40226ddff7 [gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents: 11127
diff changeset
2221 guchar *decoded;
11127
5e539d9d26a4 [gaim-migrate @ 13183]
Mark Doliner <markdoliner@pidgin.im>
parents: 11111
diff changeset
2222 gsize len;
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2223
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2224 while (l) {
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2225 struct yahoo_pair *pair = l->data;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2226
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2227 switch (pair->key) {
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2228 case 5:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2229 /* our identity */
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2230 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2231 case 4:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2232 who = pair->value;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2233 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2234 case 1:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2235 /* who again, the master identity this time? */
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2236 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2237 case 12:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2238 base64 = pair->value;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2239 /* so, this is an ip address. in base64. decoded it's in ascii.
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2240 after strtol, it's in reversed byte order. Who thought this up?*/
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2241 break;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2242 /*
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2243 TODO: figure these out
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2244 yahoo: Key: 61 Value: 0
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2245 yahoo: Key: 2 Value:
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2246 yahoo: Key: 13 Value: 0
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2247 yahoo: Key: 49 Value: PEERTOPEER
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2248 yahoo: Key: 140 Value: 1
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2249 yahoo: Key: 11 Value: -1786225828
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2250 */
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2251
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2252 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2253
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2254 l = l->next;
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2255 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2256
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2257 if (base64) {
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2258 guint32 ip;
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2259 char *tmp2;
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2260 YahooFriend *f;
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2261
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2262 decoded = purple_base64_decode(base64, &len);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2263 if (len) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2264 char *tmp = purple_str_binary_to_ascii(decoded, len);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2265 purple_debug_info("yahoo", "Got P2P service packet (from server): who = %s, ip = %s\n", who, tmp);
9277
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2266 g_free(tmp);
08d5a10f91c6 [gaim-migrate @ 10080]
Tim Ringenbach <marv@pidgin.im>
parents: 9224
diff changeset
2267 }
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2268
11144
c6fd3a852568 [gaim-migrate @ 13208]
Mark Doliner <markdoliner@pidgin.im>
parents: 11137
diff changeset
2269 tmp2 = g_strndup((const gchar *)decoded, len); /* so its \0 terminated...*/
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2270 ip = strtol(tmp2, NULL, 10);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2271 g_free(tmp2);
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2272 g_free(decoded);
9281
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2273 tmp2 = g_strdup_printf("%u.%u.%u.%u", ip & 0xff, (ip >> 8) & 0xff, (ip >> 16) & 0xff,
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2274 (ip >> 24) & 0xff);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2275 f = yahoo_friend_find(gc, who);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2276 if (f)
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2277 yahoo_friend_set_ip(f, tmp2);
f8963ac088f6 [gaim-migrate @ 10084]
Tim Ringenbach <marv@pidgin.im>
parents: 9280
diff changeset
2278 g_free(tmp2);
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2279 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2280 }
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2281
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2282 static void yahoo_process_audible(PurpleConnection *gc, struct yahoo_packet *pkt)
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2283 {
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
2284 PurpleAccount *account;
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2285 char *who = NULL, *msg = NULL, *id = NULL;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2286 GSList *l = pkt->hash;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2287
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
2288 account = purple_connection_get_account(gc);
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
2289
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2290 while (l) {
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2291 struct yahoo_pair *pair = l->data;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2292
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2293 switch (pair->key) {
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2294 case 4:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2295 who = pair->value;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2296 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2297 case 5:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2298 /* us */
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2299 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2300 case 230:
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2301 /* the audible, in foo.locale.bar.baz format
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2302 eg: base.tw.smiley.smiley43 */
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2303 id = pair->value;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2304 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2305 case 231:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2306 /* the text of the audible */
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2307 msg = pair->value;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2308 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2309 case 232:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2310 /* weird number (md5 hash?), like 8ebab9094156135f5dcbaccbeee662a5c5fd1420 */
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2311 break;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2312 }
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2313
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2314 l = l->next;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2315 }
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2316
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2317 if (!msg)
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2318 msg = id;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2319 if (!who || !msg)
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2320 return;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2321 if (!g_utf8_validate(msg, -1, NULL)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2322 purple_debug_misc("yahoo", "Warning, nonutf8 audible, ignoring!\n");
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2323 return;
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2324 }
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
2325 if (!purple_privacy_check(account, who)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2326 purple_debug_misc("yahoo", "Audible message from %s for %s dropped!\n",
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
2327 purple_account_get_username(account), who);
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
2328 return;
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
2329 }
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2330 if (id) {
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2331 /* "http://us.dl1.yimg.com/download.yahoo.com/dl/aud/"+locale+"/"+id+".swf" */
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2332 char **audible_locale = g_strsplit(id, ".", 0);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2333 char *buf = g_strdup_printf(_("[ Audible %s/%s/%s.swf ] %s"), YAHOO_AUDIBLE_URL, audible_locale[1], id, msg);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2334 g_strfreev(audible_locale);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2335
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2336 serv_got_im(gc, who, buf, 0, time(NULL));
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2337 g_free(buf);
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2338 } else
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2339 serv_got_im(gc, who, msg, 0, time(NULL));
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2340 }
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2341
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2342 static void yahoo_packet_process(PurpleConnection *gc, struct yahoo_packet *pkt)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2343 {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2344 switch (pkt->service) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2345 case YAHOO_SERVICE_LOGON:
2771
8c214f13da39 [gaim-migrate @ 2784]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2741
diff changeset
2346 case YAHOO_SERVICE_LOGOFF:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2347 case YAHOO_SERVICE_ISAWAY:
2737
f7edb9c3f348 [gaim-migrate @ 2750]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2724
diff changeset
2348 case YAHOO_SERVICE_ISBACK:
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2349 case YAHOO_SERVICE_GAMELOGON:
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2350 case YAHOO_SERVICE_GAMELOGOFF:
6686
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
2351 case YAHOO_SERVICE_CHATLOGON:
df609a8001f6 [gaim-migrate @ 7212]
Tim Ringenbach <marv@pidgin.im>
parents: 6657
diff changeset
2352 case YAHOO_SERVICE_CHATLOGOFF:
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
2353 case YAHOO_SERVICE_Y6_STATUS_UPDATE:
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2354 case YAHOO_SERVICE_STATUS_15:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2355 yahoo_process_status(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2356 break;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2357 case YAHOO_SERVICE_NOTIFY:
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
2358 yahoo_process_notify(gc, pkt);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
2359 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2360 case YAHOO_SERVICE_MESSAGE:
2786
c281356d8eda [gaim-migrate @ 2799]
brian macke
parents: 2772
diff changeset
2361 case YAHOO_SERVICE_GAMEMSG:
5939
cedbbd2d983a [gaim-migrate @ 6379]
Tim Ringenbach <marv@pidgin.im>
parents: 5921
diff changeset
2362 case YAHOO_SERVICE_CHATMSG:
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2363 yahoo_process_message(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2364 break;
7865
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2365 case YAHOO_SERVICE_SYSMESSAGE:
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2366 yahoo_process_sysmessage(gc, pkt);
bcca41cf1ce2 [gaim-migrate @ 8519]
Tim Ringenbach <marv@pidgin.im>
parents: 7829
diff changeset
2367 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2368 case YAHOO_SERVICE_NEWMAIL:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2369 yahoo_process_mail(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2370 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2371 case YAHOO_SERVICE_NEWCONTACT:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2372 yahoo_process_contact(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2373 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2374 case YAHOO_SERVICE_AUTHRESP:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2375 yahoo_process_authresp(gc, pkt);
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2376 break;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2377 case YAHOO_SERVICE_LIST:
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2378 yahoo_process_list(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2379 break;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2380 case YAHOO_SERVICE_LIST_15:
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2381 yahoo_process_list_15(gc, pkt);
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
2382 break;
3147
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2383 case YAHOO_SERVICE_AUTH:
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2384 yahoo_process_auth(gc, pkt);
0dd86820c28c [gaim-migrate @ 3163]
Sean Egan <seanegan@pidgin.im>
parents: 3074
diff changeset
2385 break;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
2386 case YAHOO_SERVICE_AUTH_REQ_15:
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
2387 yahoo_buddy_auth_req_15(gc, pkt);
19538
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
2388 break;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2389 case YAHOO_SERVICE_ADDBUDDY:
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2390 yahoo_process_addbuddy(gc, pkt);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
2391 break;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2392 case YAHOO_SERVICE_IGNORECONTACT:
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2393 yahoo_process_ignore(gc, pkt);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
2394 break;
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2395 case YAHOO_SERVICE_CONFINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2396 case YAHOO_SERVICE_CONFADDINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2397 yahoo_process_conference_invite(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2398 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2399 case YAHOO_SERVICE_CONFDECLINE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2400 yahoo_process_conference_decline(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2401 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2402 case YAHOO_SERVICE_CONFLOGON:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2403 yahoo_process_conference_logon(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2404 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2405 case YAHOO_SERVICE_CONFLOGOFF:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2406 yahoo_process_conference_logoff(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2407 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2408 case YAHOO_SERVICE_CONFMSG:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2409 yahoo_process_conference_message(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2410 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2411 case YAHOO_SERVICE_CHATONLINE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2412 yahoo_process_chat_online(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2413 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2414 case YAHOO_SERVICE_CHATLOGOUT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2415 yahoo_process_chat_logout(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2416 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2417 case YAHOO_SERVICE_CHATGOTO:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2418 yahoo_process_chat_goto(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2419 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2420 case YAHOO_SERVICE_CHATJOIN:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2421 yahoo_process_chat_join(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2422 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2423 case YAHOO_SERVICE_CHATLEAVE: /* XXX is this right? */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2424 case YAHOO_SERVICE_CHATEXIT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2425 yahoo_process_chat_exit(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2426 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2427 case YAHOO_SERVICE_CHATINVITE: /* XXX never seen this one, might not do it right */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2428 case YAHOO_SERVICE_CHATADDINVITE:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2429 yahoo_process_chat_addinvite(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2430 break;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2431 case YAHOO_SERVICE_COMMENT:
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2432 yahoo_process_chat_message(gc, pkt);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2433 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
2434 case YAHOO_SERVICE_PRESENCE_PERM:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
2435 case YAHOO_SERVICE_PRESENCE_SESSION:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
2436 yahoo_process_presence(gc, pkt);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
2437 break;
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2438 case YAHOO_SERVICE_P2PFILEXFER:
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
2439 /* This case had no break and continued; thus keeping it this way.*/
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
2440 yahoo_process_p2pfilexfer(gc, pkt);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2441 case YAHOO_SERVICE_FILETRANSFER:
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2442 yahoo_process_filetransfer(gc, pkt);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
2443 break;
11180
4098d74c03c2 [gaim-migrate @ 13291]
Daniel Atallah <datallah@pidgin.im>
parents: 11153
diff changeset
2444 case YAHOO_SERVICE_PEERTOPEER:
9062
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2445 yahoo_process_p2p(gc, pkt);
2836e0e61402 [gaim-migrate @ 9838]
Tim Ringenbach <marv@pidgin.im>
parents: 9041
diff changeset
2446 break;
9284
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
2447 case YAHOO_SERVICE_PICTURE:
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
2448 yahoo_process_picture(gc, pkt);
8cfc171d85bb [gaim-migrate @ 10087]
Tim Ringenbach <marv@pidgin.im>
parents: 9283
diff changeset
2449 break;
9292
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2450 case YAHOO_SERVICE_PICTURE_UPDATE:
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2451 yahoo_process_picture_update(gc, pkt);
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2452 break;
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2453 case YAHOO_SERVICE_PICTURE_CHECKSUM:
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2454 yahoo_process_picture_checksum(gc, pkt);
bf8f35dc4f52 [gaim-migrate @ 10095]
Tim Ringenbach <marv@pidgin.im>
parents: 9285
diff changeset
2455 break;
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2456 case YAHOO_SERVICE_PICTURE_UPLOAD:
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2457 yahoo_process_picture_upload(gc, pkt);
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2458 break;
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13941
diff changeset
2459 case YAHOO_SERVICE_AVATAR_UPDATE:
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13941
diff changeset
2460 yahoo_process_avatar_update(gc, pkt);
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 13941
diff changeset
2461 break;
9604
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2462 case YAHOO_SERVICE_AUDIBLE:
eea16f73a13b [gaim-migrate @ 10447]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2463 yahoo_process_audible(gc, pkt);
12798
f8d553043aee [gaim-migrate @ 15145]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12797
diff changeset
2464 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2465 case YAHOO_SERVICE_FILETRANS_15:
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2466 yahoo_process_filetrans_15(gc, pkt);
21918
1c81e8b5df6b Patch from Alex Badea to support receiving files from Yahoo users using the newer yahoo protocol. Committing this is very long overdue, it somehow slipped through the cracks for a long time. References #708.
Daniel Atallah <datallah@pidgin.im>
parents: 21916
diff changeset
2467 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2468 case YAHOO_SERVICE_FILETRANS_INFO_15:
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2469 yahoo_process_filetrans_info_15(gc, pkt);
21918
1c81e8b5df6b Patch from Alex Badea to support receiving files from Yahoo users using the newer yahoo protocol. Committing this is very long overdue, it somehow slipped through the cracks for a long time. References #708.
Daniel Atallah <datallah@pidgin.im>
parents: 21916
diff changeset
2470 break;
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2471 case YAHOO_SERVICE_FILETRANS_ACC_15:
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2472 yahoo_process_filetrans_acc_15(gc, pkt);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2473 break;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2474
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2475 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2476 purple_debug(PURPLE_DEBUG_ERROR, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2477 "Unhandled service 0x%02x\n", pkt->service);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2478 break;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2479 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2480 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2481
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2482 static void yahoo_pending(gpointer data, gint source, PurpleInputCondition cond)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2483 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2484 PurpleConnection *gc = data;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2485 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2486 char buf[1024];
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2487 int len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2488
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2489 len = read(yd->fd, buf, sizeof(buf));
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2490
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2491 if (len < 0) {
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2492 gchar *tmp;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2493
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2494 if (errno == EAGAIN)
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2495 /* No worries */
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2496 return;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2497
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2498 tmp = g_strdup_printf(_("Lost connection with server:\n%s"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 21106
diff changeset
2499 g_strerror(errno));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2500 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2501 g_free(tmp);
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2502 return;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2503 } else if (len == 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2504 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2505 _("Server closed the connection."));
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2506 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2507 }
22277
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22225
diff changeset
2508 gc->last_received = time(NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2509 yd->rxqueue = g_realloc(yd->rxqueue, len + yd->rxlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2510 memcpy(yd->rxqueue + yd->rxlen, buf, len);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2511 yd->rxlen += len;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2512
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2513 while (1) {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2514 struct yahoo_packet *pkt;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2515 int pos = 0;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2516 int pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2517
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2518 if (yd->rxlen < YAHOO_PACKET_HDRLEN)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2519 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2520
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
2521 if (strncmp((char *)yd->rxqueue, "YMSG", MIN(4, yd->rxlen)) != 0) {
10610
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2522 /* HEY! This isn't even a YMSG packet. What
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2523 * are you trying to pull? */
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2524 guchar *start;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2525
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2526 purple_debug_warning("yahoo", "Error in YMSG stream, got something not a YMSG packet!\n");
10611
fbab02a2699c [gaim-migrate @ 12065]
Tim Ringenbach <marv@pidgin.im>
parents: 10610
diff changeset
2527
10635
77bdc0c3a07f [gaim-migrate @ 12117]
Tim Ringenbach <marv@pidgin.im>
parents: 10611
diff changeset
2528 start = memchr(yd->rxqueue + 1, 'Y', yd->rxlen - 1);
10610
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2529 if (start) {
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2530 g_memmove(yd->rxqueue, start, yd->rxlen - (start - yd->rxqueue));
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2531 yd->rxlen -= start - yd->rxqueue;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2532 continue;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2533 } else {
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2534 g_free(yd->rxqueue);
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2535 yd->rxqueue = NULL;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2536 yd->rxlen = 0;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2537 return;
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2538 }
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2539 }
e2e333edd68b [gaim-migrate @ 12063]
Tim Ringenbach <marv@pidgin.im>
parents: 10575
diff changeset
2540
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2541 pos += 4; /* YMSG */
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2542 pos += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2543 pos += 2;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2544
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2545 pktlen = yahoo_get16(yd->rxqueue + pos); pos += 2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2546 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2547 "%d bytes to read, rxlen is %d\n", pktlen, yd->rxlen);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2548
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2549 if (yd->rxlen < (YAHOO_PACKET_HDRLEN + pktlen))
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2550 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2551
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2552 yahoo_packet_dump(yd->rxqueue, YAHOO_PACKET_HDRLEN + pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2553
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2554 pkt = yahoo_packet_new(0, 0, 0);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2555
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2556 pkt->service = yahoo_get16(yd->rxqueue + pos); pos += 2;
3021
91e6cbdb62b1 [gaim-migrate @ 3034]
Sean Egan <seanegan@pidgin.im>
parents: 3020
diff changeset
2557 pkt->status = yahoo_get32(yd->rxqueue + pos); pos += 4;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2558 purple_debug(PURPLE_DEBUG_MISC, "yahoo",
5216
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2559 "Yahoo Service: 0x%02x Status: %d\n",
13074c9a7ab0 [gaim-migrate @ 5586]
Christian Hammond <chipx86@chipx86.com>
parents: 5205
diff changeset
2560 pkt->service, pkt->status);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2561 pkt->id = yahoo_get32(yd->rxqueue + pos); pos += 4;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2562
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563 yahoo_packet_read(pkt, yd->rxqueue + pos, pktlen);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2564
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2565 yd->rxlen -= YAHOO_PACKET_HDRLEN + pktlen;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2566 if (yd->rxlen) {
11318
13fa1d5134f3 [gaim-migrate @ 13521]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11303
diff changeset
2567 guchar *tmp = g_memdup(yd->rxqueue + YAHOO_PACKET_HDRLEN + pktlen, yd->rxlen);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2568 g_free(yd->rxqueue);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2569 yd->rxqueue = tmp;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2570 } else {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2571 g_free(yd->rxqueue);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2572 yd->rxqueue = NULL;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2573 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2574
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2575 yahoo_packet_process(gc, pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2576
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2577 yahoo_packet_free(pkt);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2578 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2579 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2580
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
2581 static void yahoo_got_connected(gpointer data, gint source, const gchar *error_message)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2582 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2583 PurpleConnection *gc = data;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2584 struct yahoo_data *yd;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2585 struct yahoo_packet *pkt;
11076
f6c4835e68ee [gaim-migrate @ 13086]
Mark Doliner <markdoliner@pidgin.im>
parents: 11043
diff changeset
2586
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2587 if (!PURPLE_CONNECTION_IS_VALID(gc)) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2588 close(source);
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2589 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2590 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2591
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2592 if (source < 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2593 gchar *tmp;
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2594 tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2595 error_message);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2596 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2597 g_free(tmp);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2598 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2599 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2600
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2601 yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2602 yd->fd = source;
11076
f6c4835e68ee [gaim-migrate @ 13086]
Mark Doliner <markdoliner@pidgin.im>
parents: 11043
diff changeset
2603
11078
b611f3a7800c [gaim-migrate @ 13088]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11077
diff changeset
2604 pkt = yahoo_packet_new(YAHOO_SERVICE_AUTH, yd->current_status, 0);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2605
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2606 yahoo_packet_hash_str(pkt, 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))));
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
2607 yahoo_packet_send_and_free(pkt, yd);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2608
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2609 gc->inpa = purple_input_add(yd->fd, PURPLE_INPUT_READ, yahoo_pending, gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2610 }
9370
0e1f9854bb0c [gaim-migrate @ 10178]
Tim Ringenbach <marv@pidgin.im>
parents: 9369
diff changeset
2611
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2612 #ifdef TRY_WEBMESSENGER_LOGIN
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
2613 static void yahoo_got_web_connected(gpointer data, gint source, const gchar *error_message)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2614 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2615 PurpleConnection *gc = data;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2616 struct yahoo_data *yd;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2617 struct yahoo_packet *pkt;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2618
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2619 if (!PURPLE_CONNECTION_IS_VALID(gc)) {
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2620 close(source);
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2621 return;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2622 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2623
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2624 if (source < 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2625 gchar *tmp;
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2626 tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2627 error_message);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2628 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2629 g_free(tmp);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2630 return;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2631 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2632
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2633 yd = gc->proto_data;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2634 yd->fd = source;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2635
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2636 pkt = yahoo_packet_new(YAHOO_SERVICE_WEBLOGIN, YAHOO_STATUS_WEBLOGIN, 0);
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2637
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
2638 yahoo_packet_hash(pkt, "sss", 0,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2639 purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2640 1, purple_normalize(gc->account, purple_account_get_username(purple_connection_get_account(gc))),
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
2641 6, yd->auth);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
2642 yahoo_packet_send_and_free(pkt, yd);
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
2643
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2644 g_free(yd->auth);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2645 gc->inpa = purple_input_add(yd->fd, PURPLE_INPUT_READ, yahoo_pending, gc);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2646 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2647
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2648 static void yahoo_web_pending(gpointer data, gint source, PurpleInputCondition cond)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2649 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2650 PurpleConnection *gc = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2651 PurpleAccount *account = purple_connection_get_account(gc);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2652 struct yahoo_data *yd = gc->proto_data;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2653 char bufread[2048], *i = bufread, *buf = bufread;
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2654 int len;
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2655 GString *s;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2656
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2657 len = read(source, bufread, sizeof(bufread) - 1);
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2658
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2659 if (len < 0) {
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2660 gchar *tmp;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2661
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2662 if (errno == EAGAIN)
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2663 /* No worries */
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2664 return;
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2665
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2666 tmp = g_strdup_printf(_("Lost connection with server:\n%s"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 21106
diff changeset
2667 g_strerror(errno));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2668 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2669 g_free(tmp);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2670 return;
14488
17cf9193cc88 [gaim-migrate @ 17136]
Mark Doliner <markdoliner@pidgin.im>
parents: 14453
diff changeset
2671 } else if (len == 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2672 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2673 _("Server closed the connection."));
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2674 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2675 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2676
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2677 if (yd->rxlen > 0 || !g_strstr_len(buf, len, "\r\n\r\n")) {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2678 yd->rxqueue = g_realloc(yd->rxqueue, yd->rxlen + len + 1);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2679 memcpy(yd->rxqueue + yd->rxlen, buf, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2680 yd->rxlen += len;
14321
21c565de27ea [gaim-migrate @ 16941]
Tim Ringenbach <marv@pidgin.im>
parents: 14320
diff changeset
2681 i = buf = (char *)yd->rxqueue;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2682 len = yd->rxlen;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2683 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2684 buf[len] = '\0';
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2685
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2686 if ((strncmp(buf, "HTTP/1.0 302", strlen("HTTP/1.0 302")) &&
8216
9c4bc4d5a373 [gaim-migrate @ 8939]
Christian Hammond <chipx86@chipx86.com>
parents: 8212
diff changeset
2687 strncmp(buf, "HTTP/1.1 302", strlen("HTTP/1.1 302")))) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2688 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2689 _("Received unexpected HTTP response from server."));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2690 return;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2691 }
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2692
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2693 s = g_string_sized_new(len);
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2694
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2695 while ((i = strstr(i, "Set-Cookie: "))) {
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2696
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2697 i += strlen("Set-Cookie: ");
8243
e40bd494b78e [gaim-migrate @ 8966]
Daniel Atallah <datallah@pidgin.im>
parents: 8235
diff changeset
2698 for (;*i != ';' && *i != '\0'; i++)
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2699 g_string_append_c(s, *i);
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2700
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2701 g_string_append(s, "; ");
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2702 /* Should these cookies be included too when trying for xfer?
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2703 * It seems to work without these
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
2704 */
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2705 }
8161
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2706
d92ec6ecfdeb [gaim-migrate @ 8873]
Tim Ringenbach <marv@pidgin.im>
parents: 8125
diff changeset
2707 yd->auth = g_string_free(s, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2708 purple_input_remove(gc->inpa);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2709 close(source);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2710 g_free(yd->rxqueue);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2711 yd->rxqueue = NULL;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2712 yd->rxlen = 0;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2713 /* Now we have our cookies to login with. I'll go get the milk. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2714 if (purple_proxy_connect(gc, account, "wcs2.msg.dcn.yahoo.com",
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2715 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2716 yahoo_got_web_connected, gc) == NULL) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2717 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2718 _("Connection problem"));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2719 return;
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
2720 }
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2721 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2722
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2723 static void yahoo_got_cookies_send_cb(gpointer data, gint source, PurpleInputCondition cond)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2724 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2725 PurpleConnection *gc;
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2726 struct yahoo_data *yd;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2727 int written, remaining;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2728
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2729 gc = data;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2730 yd = gc->proto_data;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2731
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2732 remaining = strlen(yd->auth) - yd->auth_written;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2733 written = write(source, yd->auth + yd->auth_written, remaining);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2734
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2735 if (written < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2736 written = 0;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2737 else if (written <= 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2738 gchar *tmp;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2739 g_free(yd->auth);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2740 yd->auth = NULL;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2741 if (gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2742 purple_input_remove(gc->inpa);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2743 gc->inpa = 0;
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2744 tmp = g_strdup_printf(_("Lost connection with %s:\n%s"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 21106
diff changeset
2745 "login.yahoo.com:80", g_strerror(errno));
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2746 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2747 g_free(tmp);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2748 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2749 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2750
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2751 if (written < remaining) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2752 yd->auth_written += written;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2753 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2754 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2755
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2756 g_free(yd->auth);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2757 yd->auth = NULL;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2758 yd->auth_written = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2759 purple_input_remove(gc->inpa);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2760 gc->inpa = purple_input_add(source, PURPLE_INPUT_READ, yahoo_web_pending, gc);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2761 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2762
14182
517f4531b8a0 [gaim-migrate @ 16754]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
2763 static void yahoo_got_cookies(gpointer data, gint source, const gchar *error_message)
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2764 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2765 PurpleConnection *gc = data;
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2766
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2767 if (source < 0) {
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2768 gchar *tmp;
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2769 tmp = g_strdup_printf(_("Could not establish a connection with %s:\n%s"),
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2770 "login.yahoo.com:80", error_message);
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2771 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
17540
460543cd1004 Better error messages for Yahoo! login failures
Mark Doliner <markdoliner@pidgin.im>
parents: 17151
diff changeset
2772 g_free(tmp);
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2773 return;
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2774 }
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2775
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2776 if (gc->inpa == 0)
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2777 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2778 gc->inpa = purple_input_add(source, PURPLE_INPUT_WRITE,
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2779 yahoo_got_cookies_send_cb, gc);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2780 yahoo_got_cookies_send_cb(gc, source, PURPLE_INPUT_WRITE);
14146
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2781 }
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2782 }
4413802cb7a9 [gaim-migrate @ 16705]
Mark Doliner <markdoliner@pidgin.im>
parents: 14133
diff changeset
2783
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2784 static void yahoo_login_page_hash_iter(const char *key, const char *val, GString *url)
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2785 {
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2786 if (!strcmp(key, "passwd"))
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2787 return;
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2788 g_string_append_c(url, '&');
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2789 g_string_append(url, key);
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2790 g_string_append_c(url, '=');
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2791 if (!strcmp(key, ".save") || !strcmp(key, ".js"))
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2792 g_string_append_c(url, '1');
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2793 else if (!strcmp(key, ".challenge"))
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
2794 g_string_append(url, val);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2795 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2796 g_string_append(url, purple_url_encode(val));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2797 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2798
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2799 static GHashTable *yahoo_login_page_hash(const char *buf, size_t len)
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2800 {
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2801 GHashTable *hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
7138
12b7979bce6e [gaim-migrate @ 7705]
Christian Hammond <chipx86@chipx86.com>
parents: 7134
diff changeset
2802 const char *c = buf;
12b7979bce6e [gaim-migrate @ 7705]
Christian Hammond <chipx86@chipx86.com>
parents: 7134
diff changeset
2803 char *d;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2804 char name[64], value[64];
11188
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2805 int count;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2806 int input_len = strlen("<input ");
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2807 int name_len = strlen("name=\"");
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2808 int value_len = strlen("value=\"");
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2809 while ((len > ((c - buf) + input_len))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2810 && (c = strstr(c, "<input "))) {
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2811 if (!(c = g_strstr_len(c, len - (c - buf), "name=\"")))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2812 continue;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2813 c += name_len;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2814 count = sizeof(name)-1;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2815 for (d = name; (len > ((c - buf) + 1)) && *c!='"'
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2816 && count; c++, d++, count--)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2817 *d = *c;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2818 *d = '\0';
8118
7f5315bb4506 [gaim-migrate @ 8822]
Douglas Thrift <douglas@douglasthrift.net>
parents: 8113
diff changeset
2819 count = sizeof(value)-1;
11188
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2820 if (!(d = g_strstr_len(c, len - (c - buf), "value=\"")))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2821 continue;
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2822 d += value_len;
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2823 if (strchr(c, '>') < d)
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2824 break;
11188
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2825 for (c = d, d = value; (len > ((c - buf) + 1))
71daefd15649 [gaim-migrate @ 13305]
Daniel Atallah <datallah@pidgin.im>
parents: 11183
diff changeset
2826 && *c!='"' && count; c++, d++, count--)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2827 *d = *c;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2828 *d = '\0';
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2829 g_hash_table_insert(hash, g_strdup(name), g_strdup(value));
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2830 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2831 return hash;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2832 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2833
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2834 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2835 yahoo_login_page_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2836 const gchar *url_text, size_t len, const gchar *error_message)
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2837 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2838 PurpleConnection *gc = (PurpleConnection *)user_data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2839 PurpleAccount *account = purple_connection_get_account(gc);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2840 struct yahoo_data *yd = gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2841 const char *sn = purple_account_get_username(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2842 const char *pass = purple_connection_get_password(gc);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2843 GHashTable *hash = yahoo_login_page_hash(url_text, len);
10575
f360d2dc8a1c [gaim-migrate @ 11968]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10553
diff changeset
2844 GString *url = g_string_new("GET http://login.yahoo.com/config/login?login=");
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2845 char md5[33], *hashp = md5, *chal;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2846 int i;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2847 PurpleCipher *cipher;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2848 PurpleCipherContext *context;
11183
be87fe695c93 [gaim-migrate @ 13295]
Mark Doliner <markdoliner@pidgin.im>
parents: 11180
diff changeset
2849 guchar digest[16];
7191
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2850
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2851 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
2852
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2853 if (error_message != NULL)
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2854 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2855 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2856 error_message);
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2857 return;
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2858 }
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2859
7191
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2860 url = g_string_append(url, sn);
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2861 url = g_string_append(url, "&passwd=");
6c67ab87df26 [gaim-migrate @ 7760]
Herman Bloggs <herman@bluedigits.com>
parents: 7161
diff changeset
2862
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2863 cipher = purple_ciphers_find_cipher("md5");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2864 context = purple_cipher_context_new(cipher, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2865
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2866 purple_cipher_context_append(context, (const guchar *)pass, strlen(pass));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2867 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2868 for (i = 0; i < 16; ++i) {
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2869 g_snprintf(hashp, 3, "%02x", digest[i]);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2870 hashp += 2;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2871 }
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2872
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2873 chal = g_strconcat(md5, g_hash_table_lookup(hash, ".challenge"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2874 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2875 purple_cipher_context_append(context, (const guchar *)chal, strlen(chal));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2876 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2877 hashp = md5;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2878 for (i = 0; i < 16; ++i) {
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2879 g_snprintf(hashp, 3, "%02x", digest[i]);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2880 hashp += 2;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2881 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2882 /*
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2883 * I dunno why this is here and commented out.. but in case it's needed
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2884 * I updated it..
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2885
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2886 purple_cipher_context_reset(context, NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2887 purple_cipher_context_append(context, md5, strlen(md5));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2888 purple_cipher_context_digest(context, sizeof(digest), digest, NULL);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2889 hashp = md5;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2890 for (i = 0; i < 16; ++i) {
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2891 g_snprintf(hashp, 3, "%02x", digest[i]);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2892 hashp += 2;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2893 }
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2894 */
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2895 g_free(chal);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
2896
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2897 url = g_string_append(url, md5);
7138
12b7979bce6e [gaim-migrate @ 7705]
Christian Hammond <chipx86@chipx86.com>
parents: 7134
diff changeset
2898 g_hash_table_foreach(hash, (GHFunc)yahoo_login_page_hash_iter, url);
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
2899
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2900 url = g_string_append(url, "&.hash=1&.md5=1 HTTP/1.1\r\n"
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2901 "Host: login.yahoo.com\r\n\r\n");
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2902 g_hash_table_destroy(hash);
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2903 yd->auth = g_string_free(url, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2904 if (purple_proxy_connect(gc, account, "login.yahoo.com", 80, yahoo_got_cookies, gc) == NULL) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
2905 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
2906 _("Connection problem"));
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2907 return;
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2908 }
10684
0325b164a7eb [gaim-migrate @ 12231]
Luke Schierer <lschiere@pidgin.im>
parents: 10662
diff changeset
2909
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2910 purple_cipher_context_destroy(context);
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2911 }
15807
a075bef0d8dd Disable Yahoo! web authentication. It's failing right now because
Mark Doliner <markdoliner@pidgin.im>
parents: 15685
diff changeset
2912 #endif
7134
e999c4697e38 [gaim-migrate @ 7701]
Sean Egan <seanegan@pidgin.im>
parents: 7129
diff changeset
2913
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2914 static void yahoo_server_check(PurpleAccount *account)
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2915 {
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2916 const char *server;
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2917
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2918 server = purple_account_get_string(account, "server", YAHOO_PAGER_HOST);
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2919
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2920 if (strcmp(server, "scs.yahoo.com") == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2921 purple_account_set_string(account, "server", YAHOO_PAGER_HOST);
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2922 }
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2923
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2924 static void yahoo_picture_check(PurpleAccount *account)
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2925 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2926 PurpleConnection *gc = purple_account_get_connection(account);
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
2927 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(account);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
2928
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
2929 yahoo_set_buddy_icon(gc, img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16534
diff changeset
2930 purple_imgstore_unref(img);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2931 }
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
2932
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2933 static int get_yahoo_status_from_purple_status(PurpleStatus *status)
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2934 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2935 PurplePresence *presence;
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2936 const char *status_id;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2937 const char *msg;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2938
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2939 presence = purple_status_get_presence(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2940 status_id = purple_status_get_id(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2941 msg = purple_status_get_attr_string(status, "message");
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2942
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2943 if (!strcmp(status_id, YAHOO_STATUS_TYPE_AVAILABLE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2944 if ((msg != NULL) && (*msg != '\0'))
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2945 return YAHOO_STATUS_CUSTOM;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2946 else
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2947 return YAHOO_STATUS_AVAILABLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2948 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_BRB)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2949 return YAHOO_STATUS_BRB;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2950 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_BUSY)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2951 return YAHOO_STATUS_BUSY;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2952 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTATHOME)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2953 return YAHOO_STATUS_NOTATHOME;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2954 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTATDESK)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2955 return YAHOO_STATUS_NOTATDESK;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2956 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_NOTINOFFICE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2957 return YAHOO_STATUS_NOTINOFFICE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2958 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_ONPHONE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2959 return YAHOO_STATUS_ONPHONE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2960 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_ONVACATION)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2961 return YAHOO_STATUS_ONVACATION;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2962 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_OUTTOLUNCH)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2963 return YAHOO_STATUS_OUTTOLUNCH;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2964 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_STEPPEDOUT)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2965 return YAHOO_STATUS_STEPPEDOUT;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2966 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_INVISIBLE)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2967 return YAHOO_STATUS_INVISIBLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2968 } else if (!strcmp(status_id, YAHOO_STATUS_TYPE_AWAY)) {
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2969 return YAHOO_STATUS_CUSTOM;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2970 } else if (purple_presence_is_idle(presence)) {
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2971 return YAHOO_STATUS_IDLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2972 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2973 purple_debug_error("yahoo", "Unexpected PurpleStatus!\n");
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2974 return YAHOO_STATUS_AVAILABLE;
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2975 }
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2976 }
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
2977
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2978 static void yahoo_login(PurpleAccount *account) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2979 PurpleConnection *gc = purple_account_get_connection(account);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2980 struct yahoo_data *yd = gc->proto_data = g_new0(struct yahoo_data, 1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2981 PurpleStatus *status = purple_account_get_active_status(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2982 gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2983
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2984 purple_connection_update_progress(gc, _("Connecting"), 1, 2);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2985
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2986 purple_connection_set_display_name(gc, purple_account_get_username(account));
8235
00045afab151 [gaim-migrate @ 8958]
Gary Kramlich <grim@pidgin.im>
parents: 8216
diff changeset
2987
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2988 yd->fd = -1;
19573
03c72c532d5a Input handlers are unsigned integers. So set them to 0 instead of -1 after
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19545
diff changeset
2989 yd->txhandler = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
2990 /* TODO: Is there a good grow size for the buffer? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2991 yd->txbuf = purple_circ_buffer_new(0);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
2992 yd->friends = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, yahoo_friend_free);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
2993 yd->imvironments = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
22204
78dc320dad31 Some readability changes. Refs #4533.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22202
diff changeset
2994 yd->xfer_peer_idstring_map = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2995 yd->confs = NULL;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
2996 yd->conf_id = 2;
11076
f6c4835e68ee [gaim-migrate @ 13086]
Mark Doliner <markdoliner@pidgin.im>
parents: 11043
diff changeset
2997
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
2998 yd->current_status = get_yahoo_status_from_purple_status(status);
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
2999
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
3000 yahoo_server_check(account);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3001 yahoo_picture_check(account);
7883
02cf91894bcf [gaim-migrate @ 8537]
Tim Ringenbach <marv@pidgin.im>
parents: 7878
diff changeset
3002
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3003 if (purple_account_get_bool(account, "yahoojp", FALSE)) {
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3004 yd->jp = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3005 if (purple_proxy_connect(gc, account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3006 purple_account_get_string(account, "serverjp", YAHOOJP_PAGER_HOST),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3007 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
3008 yahoo_got_connected, gc) == NULL)
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3009 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
3010 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
3011 _("Connection problem"));
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3012 return;
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3013 }
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3014 } else {
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3015 yd->jp = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3016 if (purple_proxy_connect(gc, account,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3017 purple_account_get_string(account, "server", YAHOO_PAGER_HOST),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3018 purple_account_get_int(account, "port", YAHOO_PAGER_PORT),
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
3019 yahoo_got_connected, gc) == NULL)
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3020 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21152
diff changeset
3021 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20460
5282ce7ac330 Add disconnection reasons to yahoo
Will Thompson <resiak@pidgin.im>
parents: 19918
diff changeset
3022 _("Connection problem"));
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3023 return;
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
3024 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3025 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3026 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3027
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3028 static void yahoo_close(PurpleConnection *gc) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3029 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
9782
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3030 GSList *l;
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3031
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3032 if (gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3033 purple_input_remove(gc->inpa);
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3034
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3035 while (yd->url_datas) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3036 purple_util_fetch_url_cancel(yd->url_datas->data);
14416
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3037 yd->url_datas = g_slist_delete_link(yd->url_datas, yd->url_datas);
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3038 }
c95ffd983a39 [gaim-migrate @ 17060]
Mark Doliner <markdoliner@pidgin.im>
parents: 14378
diff changeset
3039
9782
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3040 for (l = yd->confs; l; l = l->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3041 PurpleConversation *conv = l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3042
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3043 yahoo_conf_leave(yd, purple_conversation_get_name(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3044 purple_connection_get_display_name(gc),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3045 purple_conv_chat_get_users(PURPLE_CONV_CHAT(conv)));
9782
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3046 }
4f0e4049d3f4 [gaim-migrate @ 10650]
Tim Ringenbach <marv@pidgin.im>
parents: 9768
diff changeset
3047 g_slist_free(yd->confs);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3048
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3049 for (l = yd->cookies; l; l = l->next) {
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3050 g_free(l->data);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3051 l->data=NULL;
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3052 }
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3053 g_slist_free(yd->cookies);
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3054
12841
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3055 yd->chat_online = 0;
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3056 if (yd->in_chat)
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3057 yahoo_c_leave(gc, 1); /* 1 = YAHOO_CHAT_ID */
939ceff2a3ba [gaim-migrate @ 15189]
Richard Laager <rlaager@pidgin.im>
parents: 12798
diff changeset
3058
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3059 g_hash_table_destroy(yd->friends);
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3060 g_hash_table_destroy(yd->imvironments);
22202
e42ab2e3eba1 This patch from Thanumalayan S. implements Yahoo protocol version 15 file
Thanumalayan Sankaranarayanan <madthanu@gmail.com>
parents: 22201
diff changeset
3061 g_hash_table_destroy(yd->xfer_peer_idstring_map);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3062 g_free(yd->chat_name);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3063
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3064 g_free(yd->cookie_y);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3065 g_free(yd->cookie_t);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3066
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3067 if (yd->txhandler)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3068 purple_input_remove(yd->txhandler);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3069
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3070 purple_circ_buffer_destroy(yd->txbuf);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
3071
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3072 if (yd->fd >= 0)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3073 close(yd->fd);
3720
dbba62e0d603 [gaim-migrate @ 3853]
Herman Bloggs <herman@bluedigits.com>
parents: 3642
diff changeset
3074
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3075 g_free(yd->rxqueue);
2687
664e22f507cf [gaim-migrate @ 2700]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2686
diff changeset
3076 yd->rxlen = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3077 g_free(yd->picture_url);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13107
diff changeset
3078
14693
9e3d4f9609e1 [gaim-migrate @ 17377]
Evan Schoenberg <evands@pidgin.im>
parents: 14604
diff changeset
3079 if (yd->buddy_icon_connect_data)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3080 purple_proxy_connect_cancel(yd->buddy_icon_connect_data);
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3081 if (yd->picture_upload_todo)
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3082 yahoo_buddy_icon_upload_data_free(yd->picture_upload_todo);
9376
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3083 if (yd->ycht)
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3084 ycht_connection_close(yd->ycht);
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3085
19716
3f161bed09f6 Fix yahoo chats again for their new super-duper-ultra-mega secure captcha stuff. "/join chat" still doesn't work, you need to use the roomlist because they now require the chat id to be set (the native client also has this problem). Fixes #2860.
Daniel Atallah <datallah@pidgin.im>
parents: 19703
diff changeset
3086 g_free(yd->pending_chat_room);
3f161bed09f6 Fix yahoo chats again for their new super-duper-ultra-mega secure captcha stuff. "/join chat" still doesn't work, you need to use the roomlist because they now require the chat id to be set (the native client also has this problem). Fixes #2860.
Daniel Atallah <datallah@pidgin.im>
parents: 19703
diff changeset
3087 g_free(yd->pending_chat_id);
3f161bed09f6 Fix yahoo chats again for their new super-duper-ultra-mega secure captcha stuff. "/join chat" still doesn't work, you need to use the roomlist because they now require the chat id to be set (the native client also has this problem). Fixes #2860.
Daniel Atallah <datallah@pidgin.im>
parents: 19703
diff changeset
3088 g_free(yd->pending_chat_topic);
3f161bed09f6 Fix yahoo chats again for their new super-duper-ultra-mega secure captcha stuff. "/join chat" still doesn't work, you need to use the roomlist because they now require the chat id to be set (the native client also has this problem). Fixes #2860.
Daniel Atallah <datallah@pidgin.im>
parents: 19703
diff changeset
3089 g_free(yd->pending_chat_goto);
3f161bed09f6 Fix yahoo chats again for their new super-duper-ultra-mega secure captcha stuff. "/join chat" still doesn't work, you need to use the roomlist because they now require the chat id to be set (the native client also has this problem). Fixes #2860.
Daniel Atallah <datallah@pidgin.im>
parents: 19703
diff changeset
3090
22552
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
3091 g_free(yd->current_list15_grp);
21bcf7de74f1 Fixed bug in which Yahoo contacts were erroneously considered to be blocked,
Evan Schoenberg <evands@pidgin.im>
parents: 22462
diff changeset
3092
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3093 g_free(yd);
13344
fde4e6dc84f8 [gaim-migrate @ 15713]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13297
diff changeset
3094 gc->proto_data = NULL;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3095 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3096
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3097 static const char *yahoo_list_icon(PurpleAccount *a, PurpleBuddy *b)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3098 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4634
diff changeset
3099 return "yahoo";
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3100 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3101
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3102 static const char *yahoo_list_emblem(PurpleBuddy *b)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3103 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3104 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3105 PurpleConnection *gc;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3106 struct yahoo_data *yd;
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3107 YahooFriend *f;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3108 PurplePresence *presence;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3109
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3110 if (!b || !(account = b->account) || !(gc = purple_account_get_connection(account)) ||
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
3111 !(yd = gc->proto_data))
15558
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
3112 return NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3113
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3114 f = yahoo_friend_find(gc, b->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3115 if (!f) {
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3116 return "not-authorized";
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3117 }
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3118
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3119 presence = purple_buddy_get_presence(b);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3120
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3121 if (purple_presence_is_online(presence)) {
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3122 if (yahoo_friend_get_game(f))
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3123 return "game";
14366
ba943644ad80 [gaim-migrate @ 16994]
Tim Ringenbach <marv@pidgin.im>
parents: 14362
diff changeset
3124 if (f->protocol == 2)
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3125 return "msn";
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3126 }
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
3127 return NULL;
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4834
diff changeset
3128 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3129
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3130 static const char *yahoo_get_status_string(enum yahoo_status a)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3131 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3132 switch (a) {
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3133 case YAHOO_STATUS_BRB:
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3134 return _("Be Right Back");
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3135 case YAHOO_STATUS_BUSY:
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3136 return _("Busy");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3137 case YAHOO_STATUS_NOTATHOME:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3138 return _("Not at Home");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3139 case YAHOO_STATUS_NOTATDESK:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3140 return _("Not at Desk");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3141 case YAHOO_STATUS_NOTINOFFICE:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3142 return _("Not in Office");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3143 case YAHOO_STATUS_ONPHONE:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3144 return _("On the Phone");
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3145 case YAHOO_STATUS_ONVACATION:
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3146 return _("On Vacation");
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3147 case YAHOO_STATUS_OUTTOLUNCH:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3148 return _("Out to Lunch");
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3149 case YAHOO_STATUS_STEPPEDOUT:
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3150 return _("Stepped Out");
2873
9e56887eeb06 [gaim-migrate @ 2886]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2856
diff changeset
3151 case YAHOO_STATUS_INVISIBLE:
4596
64e72bf4ece4 [gaim-migrate @ 4881]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4491
diff changeset
3152 return _("Invisible");
4730
f6ae5bf30171 [gaim-migrate @ 5043]
Sean Egan <seanegan@pidgin.im>
parents: 4729
diff changeset
3153 case YAHOO_STATUS_IDLE:
f6ae5bf30171 [gaim-migrate @ 5043]
Sean Egan <seanegan@pidgin.im>
parents: 4729
diff changeset
3154 return _("Idle");
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3155 case YAHOO_STATUS_OFFLINE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3156 return _("Offline");
2879
e417cf7111c4 [gaim-migrate @ 2892]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2878
diff changeset
3157 default:
12467
94948d1eb8cf [gaim-migrate @ 14777]
Richard Laager <rlaager@pidgin.im>
parents: 12417
diff changeset
3158 return _("Available");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3159 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3160 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3161
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3162 static void yahoo_initiate_conference(PurpleBlistNode *node, gpointer data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3163
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3164 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3165 PurpleConnection *gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3166
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3167 GHashTable *components;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3168 struct yahoo_data *yd;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3169 int id;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3170
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3171 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3172
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3173 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3174 gc = purple_account_get_connection(buddy->account);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3175 yd = gc->proto_data;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3176 id = yd->conf_id;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3177
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3178 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3179 g_hash_table_replace(components, g_strdup("room"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3180 g_strdup_printf("%s-%d", purple_connection_get_display_name(gc), id));
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3181 g_hash_table_replace(components, g_strdup("topic"), g_strdup("Join my conference..."));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3182 g_hash_table_replace(components, g_strdup("type"), g_strdup("Conference"));
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3183 yahoo_c_join(gc, components);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3184 g_hash_table_destroy(components);
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3185
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3186 yahoo_c_invite(gc, id, "Join my conference...", buddy->name);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3187 }
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3188
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3189 static void yahoo_presence_settings(PurpleBlistNode *node, gpointer data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3190 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3191 PurpleConnection *gc;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3192 int presence_val = GPOINTER_TO_INT(data);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3193
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3194 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3195 gc = purple_account_get_connection(buddy->account);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3196
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3197 yahoo_friend_update_presence(gc, buddy->name, presence_val);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3198 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3199
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3200 static void yahoo_game(PurpleBlistNode *node, gpointer data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3201
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3202 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3203 PurpleConnection *gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3204
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3205 struct yahoo_data *yd;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3206 const char *game;
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3207 char *game2;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3208 char *t;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3209 char url[256];
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3210 YahooFriend *f;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3211
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3212 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3213
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3214 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3215 gc = purple_account_get_connection(buddy->account);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3216 yd = (struct yahoo_data *) gc->proto_data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3217
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3218 f = yahoo_friend_find(gc, buddy->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3219 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3220 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3221
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3222 game = yahoo_friend_get_game(f);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3223 if (!game)
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3224 return;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3225
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3226 t = game2 = g_strdup(strstr(game, "ante?room="));
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3227 while (*t && *t != '\t')
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3228 t++;
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3229 *t = 0;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3230 g_snprintf(url, sizeof url, "http://games.yahoo.com/games/%s", game2);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3231 purple_notify_uri(gc, url);
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3232 g_free(game2);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3233 }
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3234
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3235 static char *yahoo_status_text(PurpleBuddy *b)
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3236 {
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3237 YahooFriend *f = NULL;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3238 const char *msg;
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11914
diff changeset
3239 char *msg2;
6691
fecdc585c292 [gaim-migrate @ 7217]
Christian Hammond <chipx86@chipx86.com>
parents: 6687
diff changeset
3240
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3241 f = yahoo_friend_find(b->account->gc, b->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3242 if (!f)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3243 return g_strdup(_("Not on server list"));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3244
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3245 switch (f->status) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3246 case YAHOO_STATUS_AVAILABLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3247 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3248 case YAHOO_STATUS_IDLE:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3249 if (f->idle == -1)
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3250 return g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3251 return NULL;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3252 case YAHOO_STATUS_CUSTOM:
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3253 if (!(msg = yahoo_friend_get_status_message(f)))
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3254 return NULL;
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11914
diff changeset
3255 msg2 = g_markup_escape_text(msg, strlen(msg));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3256 purple_util_chrreplace(msg2, '\n', ' ');
11920
be80617ec59b [gaim-migrate @ 14211]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11914
diff changeset
3257 return msg2;
9224
dbf5bfffe49b [gaim-migrate @ 10020]
Tim Ringenbach <marv@pidgin.im>
parents: 9221
diff changeset
3258
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3259 default:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3260 return g_strdup(yahoo_get_status_string(f->status));
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
3261 }
4722
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3262 }
f834a9a217c4 [gaim-migrate @ 5034]
Sean Egan <seanegan@pidgin.im>
parents: 4690
diff changeset
3263
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3264 void yahoo_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
4724
2c7fae3847c8 [gaim-migrate @ 5037]
Sean Egan <seanegan@pidgin.im>
parents: 4722
diff changeset
3265 {
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3266 YahooFriend *f;
13107
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3267 char *escaped;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3268 char *status = NULL;
704041197f4d [gaim-migrate @ 15468]
Richard Laager <rlaager@pidgin.im>
parents: 13041
diff changeset
3269 const char *presence = NULL;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3270
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3271 f = yahoo_friend_find(b->account->gc, b->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3272 if (!f)
8591
ae42ad1cd127 [gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents: 8589
diff changeset
3273 status = g_strdup_printf("\n%s", _("Not on server list"));
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3274 else {
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3275 switch (f->status) {
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3276 case YAHOO_STATUS_CUSTOM:
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3277 if (!yahoo_friend_get_status_message(f))
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12945
diff changeset
3278 return;
9283
0d29b94a923f [gaim-migrate @ 10086]
Tim Ringenbach <marv@pidgin.im>
parents: 9281
diff changeset
3279 status = g_strdup(yahoo_friend_get_status_message(f));
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3280 break;
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3281 case YAHOO_STATUS_OFFLINE:
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3282 break;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3283 default:
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3284 status = g_strdup(yahoo_get_status_string(f->status));
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3285 break;
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4732
diff changeset
3286 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3287
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3288 switch (f->presence) {
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3289 case YAHOO_PRESENCE_ONLINE:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3290 presence = _("Appear Online");
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3291 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3292 case YAHOO_PRESENCE_PERM_OFFLINE:
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3293 presence = _("Appear Permanently Offline");
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3294 break;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3295 case YAHOO_PRESENCE_DEFAULT:
12945
69f429d29451 [gaim-migrate @ 15298]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
3296 break;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3297 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3298 purple_debug_error("yahoo", "Unknown presence in yahoo_tooltip_text\n");
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3299 break;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3300 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3301 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3302
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3303 if (status != NULL) {
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3304 escaped = g_markup_escape_text(status, strlen(status));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3305 purple_notify_user_info_add_pair(user_info, _("Status"), escaped);
10992
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3306 g_free(status);
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3307 g_free(escaped);
ccf59743dae4 [gaim-migrate @ 12830]
Daniel Atallah <datallah@pidgin.im>
parents: 10989
diff changeset
3308 }
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3309
12945
69f429d29451 [gaim-migrate @ 15298]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
3310 if (presence != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3311 purple_notify_user_info_add_pair(user_info, _("Presence"), presence);
4729
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
3312 }
7521e221beb7 [gaim-migrate @ 5042]
Nathan Walp <nwalp@pidgin.im>
parents: 4724
diff changeset
3313
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3314 static void yahoo_addbuddyfrommenu_cb(PurpleBlistNode *node, gpointer data)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3315 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3316 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3317 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3318
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3319 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3320
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3321 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3322 gc = purple_account_get_connection(buddy->account);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3323
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3324 yahoo_add_buddy(gc, buddy, NULL);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3325 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3326
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3327
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3328 static void yahoo_chat_goto_menu(PurpleBlistNode *node, gpointer data)
6796
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
3329 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3330 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3331 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3332
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3333 g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3334
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3335 buddy = (PurpleBuddy *) node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3336 gc = purple_account_get_connection(buddy->account);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3337
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3338 yahoo_chat_goto(gc, buddy->name);
6796
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
3339 }
2f3f12a30ab9 [gaim-migrate @ 7336]
Tim Ringenbach <marv@pidgin.im>
parents: 6795
diff changeset
3340
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3341 static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) {
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3342 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3343 PurpleMenuAction *act;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3344 struct yahoo_data *yd = (struct yahoo_data *) gc->proto_data;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3345
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3346 if (yd->current_status == YAHOO_STATUS_INVISIBLE) {
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3347 if (f->presence != YAHOO_PRESENCE_ONLINE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3348 act = purple_menu_action_new(_("Appear Online"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3349 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3350 GINT_TO_POINTER(YAHOO_PRESENCE_ONLINE),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3351 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3352 m = g_list_append(m, act);
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3353 } else if (f->presence != YAHOO_PRESENCE_DEFAULT) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3354 act = purple_menu_action_new(_("Appear Offline"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3355 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3356 GINT_TO_POINTER(YAHOO_PRESENCE_DEFAULT),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3357 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3358 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3359 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3360 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3361
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3362 if (f->presence == YAHOO_PRESENCE_PERM_OFFLINE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3363 act = purple_menu_action_new(_("Don't Appear Permanently Offline"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3364 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3365 GINT_TO_POINTER(YAHOO_PRESENCE_DEFAULT),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3366 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3367 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3368 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3369 act = purple_menu_action_new(_("Appear Permanently Offline"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3370 PURPLE_CALLBACK(yahoo_presence_settings),
13021
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3371 GINT_TO_POINTER(YAHOO_PRESENCE_PERM_OFFLINE),
64917077e624 [gaim-migrate @ 15374]
Etan Reisner <deryni@pidgin.im>
parents: 12999
diff changeset
3372 NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3373 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3374 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3375
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3376 return m;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3377 }
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3378
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3379 static void yahoo_doodle_blist_node(PurpleBlistNode *node, gpointer data)
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3380 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3381 PurpleBuddy *b = (PurpleBuddy *)node;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3382 PurpleConnection *gc = b->account->gc;
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3383
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3384 yahoo_doodle_initiate(gc, b->name);
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3385 }
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3386
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3387 static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3388 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3389 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3390 PurpleMenuAction *act;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3391
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3392 PurpleConnection *gc = purple_account_get_connection(buddy->account);
9370
0e1f9854bb0c [gaim-migrate @ 10178]
Tim Ringenbach <marv@pidgin.im>
parents: 9369
diff changeset
3393 struct yahoo_data *yd = gc->proto_data;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3394 static char buf2[1024];
9278
901f91712e4c [gaim-migrate @ 10081]
Tim Ringenbach <marv@pidgin.im>
parents: 9277
diff changeset
3395 YahooFriend *f;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3396
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
3397 f = yahoo_friend_find(gc, buddy->name);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3398
9370
0e1f9854bb0c [gaim-migrate @ 10178]
Tim Ringenbach <marv@pidgin.im>
parents: 9369
diff changeset
3399 if (!f && !yd->wm) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3400 act = purple_menu_action_new(_("Add Buddy"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3401 PURPLE_CALLBACK(yahoo_addbuddyfrommenu_cb),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3402 NULL, NULL);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3403 m = g_list_append(m, act);
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3404
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3405 return m;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3406
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3407 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3408
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3409 if (f && f->status != YAHOO_STATUS_OFFLINE) {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3410 if (!yd->wm) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3411 act = purple_menu_action_new(_("Join in Chat"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3412 PURPLE_CALLBACK(yahoo_chat_goto_menu),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3413 NULL, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3414 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3415 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3416
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3417 act = purple_menu_action_new(_("Initiate Conference"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3418 PURPLE_CALLBACK(yahoo_initiate_conference),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3419 NULL, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3420 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3421
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3422 if (yahoo_friend_get_game(f)) {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3423 const char *game = yahoo_friend_get_game(f);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3424 char *room;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3425 char *t;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3426
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3427 if ((room = strstr(game, "&follow="))) {/* skip ahead to the url */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3428 while (*room && *room != '\t') /* skip to the tab */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3429 room++;
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3430 t = room++; /* room as now at the name */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3431 while (*t != '\n')
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3432 t++; /* replace the \n with a space */
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3433 *t = ' ';
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3434 g_snprintf(buf2, sizeof buf2, "%s", room);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3435
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3436 act = purple_menu_action_new(buf2,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3437 PURPLE_CALLBACK(yahoo_game),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3438 NULL, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3439 m = g_list_append(m, act);
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3440 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3441 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3442 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3443
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3444 if (f) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3445 act = purple_menu_action_new(_("Presence Settings"), NULL, NULL,
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3446 build_presence_submenu(f, gc));
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3447 m = g_list_append(m, act);
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3448 }
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3449
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3450 if (f) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3451 act = purple_menu_action_new(_("Start Doodling"),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3452 PURPLE_CALLBACK(yahoo_doodle_blist_node),
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12878
diff changeset
3453 NULL, NULL);
11800
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3454 m = g_list_append(m, act);
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3455 }
622741e6201c [gaim-migrate @ 14091]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11718
diff changeset
3456
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3457 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3458 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3459
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3460 static GList *yahoo_blist_node_menu(PurpleBlistNode *node)
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3461 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3462 if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3463 return yahoo_buddy_menu((PurpleBuddy *) node);
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3464 } else {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3465 return NULL;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3466 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3467 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
3468
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3469 static void yahoo_act_id(PurpleConnection *gc, const char *entry)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3470 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3471 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3472
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3473 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_IDACT, YAHOO_STATUS_AVAILABLE, 0);
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3474 yahoo_packet_hash_str(pkt, 3, entry);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3475 yahoo_packet_send_and_free(pkt, yd);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3476
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3477 purple_connection_set_display_name(gc, entry);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3478 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3479
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3480 static void
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3481 yahoo_get_inbox_token_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data,
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3482 const gchar *token, size_t len, const gchar *error_message)
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3483 {
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3484 PurpleConnection *gc = user_data;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3485 gboolean set_cookie = FALSE;
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3486 gchar *url;
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3487 struct yahoo_data *yd = gc->proto_data;
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3488
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3489 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc));
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3490
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3491 yd->url_datas = g_slist_remove(yd->url_datas, url_data);
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3492
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3493 if (error_message != NULL)
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3494 purple_debug_error("yahoo", "Requesting mail login token failed: %s\n", error_message);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3495 else if (len > 0 && token && *token) {
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3496 /* Should we not be hardcoding the rd url? */
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3497 url = g_strdup_printf(
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3498 "http://login.yahoo.com/config/reset_cookies_token?"
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3499 ".token=%s"
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3500 "&.done=http://us.rd.yahoo.com/messenger/client/%%3fhttp://mail.yahoo.com/",
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3501 token);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3502 set_cookie = TRUE;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3503 }
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3504
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3505 if (!set_cookie) {
19832
84b69b21672b Patch from QuLogic. Fixes #2903 ('Missing newlines in debug messages.')
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19716
diff changeset
3506 purple_debug_error("yahoo", "No mail login token; forwarding to login screen.\n");
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3507 url = g_strdup(yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3508 }
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3509
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3510 /* Open the mailbox with the parsed url data */
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3511 purple_notify_uri(gc, url);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3512
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3513 g_free(url);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3514 }
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3515
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3516
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3517 static void yahoo_show_inbox(PurplePluginAction *action)
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3518 {
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3519 /* Setup a cookie that can be used by the browser */
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3520 /* XXX I have no idea how this will work with Yahoo! Japan. */
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3521
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3522 PurpleConnection *gc = action->context;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3523 struct yahoo_data *yd = gc->proto_data;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3524
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3525 PurpleUtilFetchUrlData *url_data;
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3526 const char* base_url = "http://login.yahoo.com";
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3527 char *request = g_strdup_printf(
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3528 "POST /config/cookie_token HTTP/1.0\r\n"
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3529 "Cookie: T=%s; path=/; domain=.yahoo.com; Y=%s;\r\n"
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3530 "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5)\r\n"
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3531 "Host: login.yahoo.com\r\n"
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3532 "Content-Length: 0\r\n\r\n",
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3533 yd->cookie_t, yd->cookie_y);
22145
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3534 gboolean use_whole_url = FALSE;
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3535
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3536 /* use whole URL if using HTTP Proxy */
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3537 if ((gc->account->proxy_info) && (gc->account->proxy_info->type == PURPLE_PROXY_HTTP))
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3538 use_whole_url = TRUE;
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3539
458640401515 A patch from Gideon N. Guillen, with some minor modifications from me. This
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21918
diff changeset
3540 url_data = purple_util_fetch_url_request(base_url, use_whole_url,
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3541 "Mozilla/4.0 (compatible; MSIE 5.5)", TRUE, request, FALSE,
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3542 yahoo_get_inbox_token_cb, gc);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3543
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3544 g_free(request);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3545
22980
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3546 if (url_data != NULL)
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3547 yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
b5c23c9bbd24 Leak fixes. Avoid creating an unnecessary parallel data structure to YahooFriend.
Daniel Atallah <datallah@pidgin.im>
parents: 22942
diff changeset
3548 else {
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3549 const char *yahoo_mail_url = (yd->jp ? YAHOOJP_MAIL_URL : YAHOO_MAIL_URL);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3550 purple_debug_error("yahoo",
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3551 "Unable to request mail login token; forwarding to login screen.");
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3552 purple_notify_uri(gc, yahoo_mail_url);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3553 }
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3554
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3555 }
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3556
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3557
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3558 static void yahoo_show_act_id(PurplePluginAction *action)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3559 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3560 PurpleConnection *gc = (PurpleConnection *) action->context;
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3561 purple_request_input(gc, NULL, _("Activate which ID?"), NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3562 purple_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3563 _("OK"), G_CALLBACK(yahoo_act_id),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16007
diff changeset
3564 _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16007
diff changeset
3565 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3566 gc);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3567 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3568
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3569 static void yahoo_show_chat_goto(PurplePluginAction *action)
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3570 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3571 PurpleConnection *gc = (PurpleConnection *) action->context;
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3572 purple_request_input(gc, NULL, _("Join whom in chat?"), NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8620
diff changeset
3573 "", FALSE, FALSE, NULL,
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3574 _("OK"), G_CALLBACK(yahoo_chat_goto),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16007
diff changeset
3575 _("Cancel"), NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16007
diff changeset
3576 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
3577 gc);
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3578 }
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3579
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3580 static GList *yahoo_actions(PurplePlugin *plugin, gpointer context) {
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3581 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3582 PurplePluginAction *act;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3583
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3584 act = purple_plugin_action_new(_("Activate ID..."),
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3585 yahoo_show_act_id);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3586 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3587
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3588 act = purple_plugin_action_new(_("Join User in Chat..."),
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3589 yahoo_show_chat_goto);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
3590 m = g_list_append(m, act);
7878
1d2f95edc400 [gaim-migrate @ 8532]
Tim Ringenbach <marv@pidgin.im>
parents: 7865
diff changeset
3591
19038
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3592 m = g_list_append(m, NULL);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3593 act = purple_plugin_action_new(_("Open Inbox"),
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3594 yahoo_show_inbox);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3595 m = g_list_append(m, act);
e54f19f8521b Add "Open Inbox" account action to the yahoo prpl that logs your browser into your yahoo account and opens your inbox.
Daniel Atallah <datallah@pidgin.im>
parents: 18946
diff changeset
3596
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3597 return m;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3598 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3599
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3600 static int yahoo_send_im(PurpleConnection *gc, const char *who, const char *what, PurpleMessageFlags flags)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3601 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3602 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3603 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_MESSAGE, YAHOO_STATUS_OFFLINE, 0);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3604 char *msg = yahoo_html_to_codes(what);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3605 char *msg2;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3606 gboolean utf8 = TRUE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3607 PurpleWhiteboard *wb;
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3608 int ret = 1;
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
3609 YahooFriend *f = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3610
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3611 msg2 = yahoo_string_encode(gc, msg, &utf8);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3612
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3613 yahoo_packet_hash(pkt, "ss", 1, purple_connection_get_display_name(gc), 5, who);
14346
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
3614 if ((f = yahoo_friend_find(gc, who)) && f->protocol)
a88f4c68129e [gaim-migrate @ 16970]
Tim Ringenbach <marv@pidgin.im>
parents: 14321
diff changeset
3615 yahoo_packet_hash_int(pkt, 241, f->protocol);
14320
a1edd2ea10c3 [gaim-migrate @ 16940]
Tim Ringenbach <marv@pidgin.im>
parents: 14254
diff changeset
3616
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3617 if (utf8)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3618 yahoo_packet_hash_str(pkt, 97, "1");
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3619 yahoo_packet_hash_str(pkt, 14, msg2);
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3620
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3621 /*
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3622 * IMVironment.
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3623 *
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3624 * If this message is to a user who is also Doodling with the local user,
11644
939411169d01 [gaim-migrate @ 13922]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11643
diff changeset
3625 * format the chat packet with the correct IMV information (thanks Yahoo!)
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3626 *
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3627 * Otherwise attempt to use the same IMVironment as the remote user,
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3628 * just so that we don't inadvertantly reset their IMVironment back
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3629 * to nothing.
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3630 *
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3631 * If they have no set an IMVironment, then use the default.
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3632 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3633 wb = purple_whiteboard_get_session(gc->account, who);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
3634 if (wb)
19064
1680699bdbf4 Fix yahoo doodling to work with newer yahoo messenger clients. This breaks doodling with older Pidgin clients (trying to support both looked too painful). Fixes #1445.
Daniel Atallah <datallah@pidgin.im>
parents: 19058
diff changeset
3635 yahoo_packet_hash_str(pkt, 63, DOODLE_IMV_KEY);
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
3636 else
13851
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3637 {
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3638 const char *imv;
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3639 imv = g_hash_table_lookup(yd->imvironments, who);
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3640 if (imv != NULL)
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3641 yahoo_packet_hash_str(pkt, 63, imv);
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3642 else
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3643 yahoo_packet_hash_str(pkt, 63, ";0");
27bc39ea07f8 [gaim-migrate @ 16306]
Mark Doliner <markdoliner@pidgin.im>
parents: 13844
diff changeset
3644 }
11608
07a4d5ffdb08 [gaim-migrate @ 13879]
Tim Ringenbach <marv@pidgin.im>
parents: 11522
diff changeset
3645
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3646 yahoo_packet_hash_str(pkt, 64, "0"); /* no idea */
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3647 yahoo_packet_hash_str(pkt, 1002, "1"); /* no idea, Yahoo 6 or later only it seems */
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3648 if (!yd->picture_url)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3649 yahoo_packet_hash_str(pkt, 206, "0"); /* 0 = no picture, 2 = picture, maybe 1 = avatar? */
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
3650 else
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3651 yahoo_packet_hash_str(pkt, 206, "2");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3652
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3653 /* We may need to not send any packets over 2000 bytes, but I'm not sure yet. */
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3654 if ((YAHOO_PACKET_HDRLEN + yahoo_packet_length(pkt)) <= 2000)
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3655 yahoo_packet_send(pkt, yd);
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3656 else
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3657 ret = -E2BIG;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3658
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3659 yahoo_packet_free(pkt);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3660
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3661 g_free(msg);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3662 g_free(msg2);
6629
9d6bbc91ba24 [gaim-migrate @ 7153]
Tim Ringenbach <marv@pidgin.im>
parents: 6623
diff changeset
3663
9828
4b0ba5330408 [gaim-migrate @ 10699]
Tim Ringenbach <marv@pidgin.im>
parents: 9782
diff changeset
3664 return ret;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3665 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3666
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3667 static unsigned int yahoo_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3668 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3669 struct yahoo_data *yd = gc->proto_data;
3019
ef3dd4b0002a [gaim-migrate @ 3032]
Brian Macke
parents: 3001
diff changeset
3670 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_NOTIFY, YAHOO_STATUS_TYPING, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3671 yahoo_packet_hash(pkt, "ssssss", 49, "TYPING", 1, purple_connection_get_display_name(gc),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3672 14, " ", 13, state == PURPLE_TYPING ? "1" : "0",
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3673 5, who, 1002, "1");
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3674
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3675 yahoo_packet_send_and_free(pkt, yd);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3676
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
3677 return 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3678 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2979
diff changeset
3679
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3680 static void yahoo_session_presence_remove(gpointer key, gpointer value, gpointer data)
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3681 {
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3682 YahooFriend *f = value;
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3683 if (f && f->presence == YAHOO_PRESENCE_ONLINE)
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3684 f->presence = YAHOO_PRESENCE_DEFAULT;
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3685 }
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3686
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3687 static void yahoo_set_status(PurpleAccount *account, PurpleStatus *status)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3688 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3689 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3690 PurplePresence *presence;
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3691 struct yahoo_data *yd;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3692 struct yahoo_packet *pkt;
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3693 int old_status;
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3694 const char *msg = NULL;
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3695 char *tmp = NULL;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3696 char *conv_msg = NULL;
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
3697 gboolean utf8 = TRUE;
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3698
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3699 if (!purple_status_is_active(status))
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3700 return;
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3701
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3702 gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3703 presence = purple_status_get_presence(status);
10400
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3704 yd = (struct yahoo_data *)gc->proto_data;
5f11925078e5 [gaim-migrate @ 11631]
Sean Egan <seanegan@pidgin.im>
parents: 10394
diff changeset
3705 old_status = yd->current_status;
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3706
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3707 yd->current_status = get_yahoo_status_from_purple_status(status);
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3708
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3709 if (yd->current_status == YAHOO_STATUS_CUSTOM)
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3710 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3711 msg = purple_status_get_attr_string(status, "message");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3712
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3713 if (purple_status_is_available(status)) {
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
3714 tmp = yahoo_string_encode(gc, msg, &utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3715 conv_msg = purple_markup_strip_html(tmp);
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3716 g_free(tmp);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3717 } else {
11972
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3718 if ((msg == NULL) || (*msg == '\0'))
23ac6d9de1fa [gaim-migrate @ 14265]
Mark Doliner <markdoliner@pidgin.im>
parents: 11970
diff changeset
3719 msg = _("Away");
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
3720 tmp = yahoo_string_encode(gc, msg, &utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3721 conv_msg = purple_markup_strip_html(tmp);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3722 g_free(tmp);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3723 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3724 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3725
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3726 if (yd->current_status == YAHOO_STATUS_INVISIBLE) {
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3727 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, 0);
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3728 yahoo_packet_hash_str(pkt, 13, "2");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3729 yahoo_packet_send_and_free(pkt, yd);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3730
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3731 return;
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3732 }
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3733
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3734 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, 0);
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3735 yahoo_packet_hash_int(pkt, 10, yd->current_status);
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
3736
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3737 if (yd->current_status == YAHOO_STATUS_CUSTOM) {
19053
b667a7fdaa81 Did you know we didn't support i18n in Yahoo status messages? We do now! Fixes #2356
Sean Egan <seanegan@pidgin.im>
parents: 19038
diff changeset
3738 yahoo_packet_hash_str(pkt, 97, utf8 ? "1" : 0);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3739 yahoo_packet_hash_str(pkt, 19, conv_msg);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3740 } else {
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3741 yahoo_packet_hash_str(pkt, 19, "");
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3742 }
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3743
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3744 g_free(conv_msg);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3745
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3746 if (purple_presence_is_idle(presence))
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3747 yahoo_packet_hash_str(pkt, 47, "2");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3748 else if (!purple_status_is_available(status))
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3749 yahoo_packet_hash_str(pkt, 47, "1");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3750
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3751 yahoo_packet_send_and_free(pkt, yd);
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
3752
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3753 if (old_status == YAHOO_STATUS_INVISIBLE) {
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3754 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_VISIBLE_TOGGLE, YAHOO_STATUS_AVAILABLE, 0);
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3755 yahoo_packet_hash_str(pkt, 13, "1");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3756 yahoo_packet_send_and_free(pkt, yd);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3757
12010
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3758 /* Any per-session presence settings are removed */
aa2f3b07ec09 [gaim-migrate @ 14303]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11985
diff changeset
3759 g_hash_table_foreach(yd->friends, yahoo_session_presence_remove, NULL);
10989
ea41b63cfea5 [gaim-migrate @ 12827]
Daniel Atallah <datallah@pidgin.im>
parents: 10963
diff changeset
3760
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3761 }
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3762 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3763
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3764 static void yahoo_set_idle(PurpleConnection *gc, int idle)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3765 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3766 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3767 struct yahoo_packet *pkt = NULL;
8503
08a06c098df6 [gaim-migrate @ 9239]
Tim Ringenbach <marv@pidgin.im>
parents: 8482
diff changeset
3768 char *msg = NULL, *msg2 = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3769 PurpleStatus *status = NULL;
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3770
13688
240e5b90adb4 [gaim-migrate @ 16089]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13559
diff changeset
3771 if (idle && yd->current_status != YAHOO_STATUS_CUSTOM)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3772 yd->current_status = YAHOO_STATUS_IDLE;
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3773 else if (!idle && yd->current_status == YAHOO_STATUS_IDLE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3774 status = purple_presence_get_active_status(purple_account_get_presence(purple_connection_get_account(gc)));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3775 yd->current_status = get_yahoo_status_from_purple_status(status);
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3776 }
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3777
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3778 pkt = yahoo_packet_new(YAHOO_SERVICE_Y6_STATUS_UPDATE, YAHOO_STATUS_AVAILABLE, 0);
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3779
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3780 yahoo_packet_hash_int(pkt, 10, yd->current_status);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3781 if (yd->current_status == YAHOO_STATUS_CUSTOM) {
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3782 const char *tmp;
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3783 if (status == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3784 status = purple_presence_get_active_status(purple_account_get_presence(purple_connection_get_account(gc)));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3785 tmp = purple_status_get_attr_string(status, "message");
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3786 if (tmp != NULL) {
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3787 msg = yahoo_string_encode(gc, tmp, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3788 msg2 = purple_markup_strip_html(msg);
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3789 yahoo_packet_hash_str(pkt, 19, msg2);
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3790 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3791 /* get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
13559
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3792 * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message */
c7256daef931 [gaim-migrate @ 15937]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13462
diff changeset
3793 yahoo_packet_hash_str(pkt, 19, _("Away"));
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10401
diff changeset
3794 }
6847
0fda06bb588a [gaim-migrate @ 7392]
Tim Ringenbach <marv@pidgin.im>
parents: 6840
diff changeset
3795 } else {
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3796 yahoo_packet_hash_str(pkt, 19, "");
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3797 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3798
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3799 if (idle)
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3800 yahoo_packet_hash_str(pkt, 47, "2");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3801 else if (!purple_presence_is_available(purple_account_get_presence(purple_connection_get_account(gc))))
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3802 yahoo_packet_hash_str(pkt, 47, "1");
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3803
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3804 yahoo_packet_send_and_free(pkt, yd);
10373
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3805
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3806 g_free(msg);
0bf7666d02d8 [gaim-migrate @ 11598]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
3807 g_free(msg2);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3808 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3809
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3810 static GList *yahoo_status_types(PurpleAccount *account)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3811 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3812 PurpleStatusType *type;
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3813 GList *types = NULL;
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3814
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3815 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, YAHOO_STATUS_TYPE_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
3816 NULL, TRUE, TRUE, FALSE,
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3817 "message", _("Message"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3818 purple_value_new(PURPLE_TYPE_STRING), NULL);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3819 types = g_list_append(types, type);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3820
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3821 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12489
diff changeset
3822 NULL, TRUE, TRUE, FALSE,
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3823 "message", _("Message"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3824 purple_value_new(PURPLE_TYPE_STRING), NULL);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3825 types = g_list_append(types, type);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3826
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3827 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_BRB, _("Be Right Back"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3828 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3829
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3830 type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, YAHOO_STATUS_TYPE_BUSY, _("Busy"), TRUE);
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3831 types = g_list_append(types, type);
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3832
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3833 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_NOTATHOME, _("Not at Home"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3834 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3835
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3836 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_NOTATDESK, _("Not at Desk"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3837 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3838
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3839 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_NOTINOFFICE, _("Not in Office"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3840 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3841
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3842 type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, YAHOO_STATUS_TYPE_ONPHONE, _("On the Phone"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3843 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3844
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3845 type = purple_status_type_new(PURPLE_STATUS_EXTENDED_AWAY, YAHOO_STATUS_TYPE_ONVACATION, _("On Vacation"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3846 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3847
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3848 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_OUTTOLUNCH, _("Out to Lunch"), TRUE);
12206
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3849 types = g_list_append(types, type);
f59128c6d479 [gaim-migrate @ 14508]
Luke Schierer <lschiere@pidgin.im>
parents: 12203
diff changeset
3850
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3851 type = purple_status_type_new(PURPLE_STATUS_AWAY, YAHOO_STATUS_TYPE_STEPPEDOUT, _("Stepped Out"), TRUE);
12203
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3852 types = g_list_append(types, type);
a8ac8491df3a [gaim-migrate @ 14505]
Peter Lawler <pidgin@bleeter.id.au>
parents: 12152
diff changeset
3853
11970
5160cebfa5e0 [gaim-migrate @ 14263]
Mark Doliner <markdoliner@pidgin.im>
parents: 11969
diff changeset
3854
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3855 type = purple_status_type_new(PURPLE_STATUS_INVISIBLE, YAHOO_STATUS_TYPE_INVISIBLE, NULL, TRUE);
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3856 types = g_list_append(types, type);
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3857
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3858 type = purple_status_type_new(PURPLE_STATUS_OFFLINE, YAHOO_STATUS_TYPE_OFFLINE, NULL, TRUE);
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12645
diff changeset
3859 types = g_list_append(types, type);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12645
diff changeset
3860
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3861 type = purple_status_type_new_full(PURPLE_STATUS_MOBILE, YAHOO_STATUS_TYPE_MOBILE, NULL, FALSE, FALSE, TRUE);
15589
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
3862 types = g_list_append(types, type);
9f28c50427c1 Yahoo mobile status
Sean Egan <seanegan@pidgin.im>
parents: 15558
diff changeset
3863
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
3864 return types;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3865 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3866
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3867 static void yahoo_keepalive(PurpleConnection *gc)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3868 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3869 struct yahoo_data *yd = gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3870 struct yahoo_packet *pkt = yahoo_packet_new(YAHOO_SERVICE_PING, YAHOO_STATUS_AVAILABLE, 0);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3871 yahoo_packet_send_and_free(pkt, yd);
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3872
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3873 if (!yd->chat_online)
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3874 return;
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3875
9376
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3876 if (yd->wm) {
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3877 ycht_chat_send_keepalive(yd->ycht);
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3878 return;
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3879 }
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
3880
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
3881 pkt = yahoo_packet_new(YAHOO_SERVICE_CHATPING, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3882 yahoo_packet_hash_str(pkt, 109, purple_connection_get_display_name(gc));
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3883 yahoo_packet_send_and_free(pkt, yd);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3884 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3885
22367
7e33f5d352f5 Use the group passed into yahoo_add_buddy() instead of looking
Mark Doliner <markdoliner@pidgin.im>
parents: 22366
diff changeset
3886 static void yahoo_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *g)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3887 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3888 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3889 struct yahoo_packet *pkt;
19534
ac814f829edf Add some additional yahoo keys to the stealth packets to make them work again. Fixes #2654.
Daniel Atallah <datallah@pidgin.im>
parents: 19411
diff changeset
3890 const char *group = NULL;
ac814f829edf Add some additional yahoo keys to the stealth packets to make them work again. Fixes #2654.
Daniel Atallah <datallah@pidgin.im>
parents: 19411
diff changeset
3891 char *group2;
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3892 YahooFriend *f;
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3893
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3894 if (!yd->logged_in)
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3895 return;
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3896
22366
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
3897 if (!purple_privacy_check(purple_connection_get_account(gc),
5f5f96206385 Get rid of yahoo_privacy_check and use purple_privacy_check directly.
Mark Doliner <markdoliner@pidgin.im>
parents: 22364
diff changeset
3898 purple_buddy_get_name(buddy)))
10963
8011e6bc10b5 [gaim-migrate @ 12768]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10944
diff changeset
3899 return;
8011e6bc10b5 [gaim-migrate @ 12768]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10944
diff changeset
3900
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3901 f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
19538
5b71901c8766 Fully fix #2654 by parsing the yahoo stealth information from the buddy list at logon time.
Daniel Atallah <datallah@pidgin.im>
parents: 19534
diff changeset
3902
22367
7e33f5d352f5 Use the group passed into yahoo_add_buddy() instead of looking
Mark Doliner <markdoliner@pidgin.im>
parents: 22366
diff changeset
3903 g = purple_buddy_get_group(buddy);
7e33f5d352f5 Use the group passed into yahoo_add_buddy() instead of looking
Mark Doliner <markdoliner@pidgin.im>
parents: 22366
diff changeset
3904 if (g)
7e33f5d352f5 Use the group passed into yahoo_add_buddy() instead of looking
Mark Doliner <markdoliner@pidgin.im>
parents: 22366
diff changeset
3905 group = g->name;
7e33f5d352f5 Use the group passed into yahoo_add_buddy() instead of looking
Mark Doliner <markdoliner@pidgin.im>
parents: 22366
diff changeset
3906 else
7e33f5d352f5 Use the group passed into yahoo_add_buddy() instead of looking
Mark Doliner <markdoliner@pidgin.im>
parents: 22366
diff changeset
3907 group = "Buddies";
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3908
7829
86a709c24689 [gaim-migrate @ 8481]
Ethan Blanton <elb@pidgin.im>
parents: 7827
diff changeset
3909 group2 = yahoo_string_encode(gc, group, NULL);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3910 pkt = yahoo_packet_new(YAHOO_SERVICE_ADDBUDDY, YAHOO_STATUS_AVAILABLE, 0);
19330
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3911 yahoo_packet_hash(pkt, "ssssssssss",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3912 14, "",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3913 65, group2,
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3914 97, "1",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3915 1, purple_connection_get_display_name(gc),
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3916 302, "319",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3917 300, "319",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3918 7, buddy->name,
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3919 334, "0",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3920 301, "319",
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3921 303, "319"
a2e7ef0cab90 Make adding buddies work again for yahoo.
Tim Ringenbach <marv@pidgin.im>
parents: 19329
diff changeset
3922 );
19411
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3923 if (f && f->protocol)
450006e4bfc2 Allow you to authorize msn buddies to add your yahoo account.
Tim Ringenbach <marv@pidgin.im>
parents: 19339
diff changeset
3924 yahoo_packet_hash_int(pkt, 241, f->protocol);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3925 yahoo_packet_send_and_free(pkt, yd);
7829
86a709c24689 [gaim-migrate @ 8481]
Ethan Blanton <elb@pidgin.im>
parents: 7827
diff changeset
3926 g_free(group2);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3927 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3928
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3929 static void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3930 {
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3931 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
6795
396b24cfeeb6 [gaim-migrate @ 7334]
Herman Bloggs <herman@bluedigits.com>
parents: 6793
diff changeset
3932 struct yahoo_packet *pkt;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3933 GSList *buddies, *l;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3934 PurpleGroup *g;
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3935 gboolean remove = TRUE;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3936 char *cg;
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3937
13713
1ae8790174a4 [gaim-migrate @ 16115]
Richard Laager <rlaager@pidgin.im>
parents: 13707
diff changeset
3938 if (!(yahoo_friend_find(gc, buddy->name)))
6784
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3939 return;
6623b18f188a [gaim-migrate @ 7323]
Tim Ringenbach <marv@pidgin.im>
parents: 6761
diff changeset
3940
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3941 buddies = purple_find_buddies(purple_connection_get_account(gc), buddy->name);
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3942 for (l = buddies; l; l = l->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3943 g = purple_buddy_get_group(l->data);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3944 if (purple_utf8_strcasecmp(group->name, g->name)) {
6840
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3945 remove = FALSE;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3946 break;
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3947 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3948 }
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3949
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3950 g_slist_free(buddies);
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3951
d4e05db5bccb [gaim-migrate @ 7385]
Tim Ringenbach <marv@pidgin.im>
parents: 6820
diff changeset
3952 if (remove)
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3953 g_hash_table_remove(yd->friends, buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3954
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
3955 cg = yahoo_string_encode(gc, group->name, NULL);
6795
396b24cfeeb6 [gaim-migrate @ 7334]
Herman Bloggs <herman@bluedigits.com>
parents: 6793
diff changeset
3956 pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3957 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3958 7, buddy->name, 65, cg);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3959 yahoo_packet_send_and_free(pkt, yd);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
3960 g_free(cg);
2681
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3961 }
73cd94b9e78e [gaim-migrate @ 2694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3962
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3963 static void yahoo_add_deny(PurpleConnection *gc, const char *who) {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3964 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3965 struct yahoo_packet *pkt;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3966
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3967 if (!yd->logged_in)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3968 return;
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3969
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3970 if (!who || who[0] == '\0')
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3971 return;
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
3972
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3973 pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3974 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
3975 7, who, 13, "1");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3976 yahoo_packet_send_and_free(pkt, yd);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3977 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3978
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3979 static void yahoo_rem_deny(PurpleConnection *gc, const char *who) {
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3980 struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3981 struct yahoo_packet *pkt;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3982
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3983 if (!yd->logged_in)
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3984 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3985
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3986 if (!who || who[0] == '\0')
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3987 return;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3988
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3989 pkt = yahoo_packet_new(YAHOO_SERVICE_IGNORECONTACT, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
3990 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc), 7, who, 13, "2");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
3991 yahoo_packet_send_and_free(pkt, yd);
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3992 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3993
22371
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
3994 static void yahoo_set_permit_deny(PurpleConnection *gc)
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
3995 {
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
3996 PurpleAccount *account;
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3997 GSList *deny;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
3998
22371
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
3999 account = purple_connection_get_account(gc);
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
4000
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
4001 switch (account->perm_deny)
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
4002 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4003 case PURPLE_PRIVACY_ALLOW_ALL:
22371
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
4004 for (deny = account->deny; deny; deny = deny->next)
10143
4c6356719734 [gaim-migrate @ 11214]
Tim Ringenbach <marv@pidgin.im>
parents: 10141
diff changeset
4005 yahoo_rem_deny(gc, deny->data);
4c6356719734 [gaim-migrate @ 11214]
Tim Ringenbach <marv@pidgin.im>
parents: 10141
diff changeset
4006 break;
22371
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
4007
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4008 case PURPLE_PRIVACY_ALLOW_BUDDYLIST:
22373
a80b7230e94c Our Yahoo! protocol has this crappy implementation where it tries
Mark Doliner <markdoliner@pidgin.im>
parents: 22371
diff changeset
4009 case PURPLE_PRIVACY_ALLOW_USERS:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4010 case PURPLE_PRIVACY_DENY_USERS:
22373
a80b7230e94c Our Yahoo! protocol has this crappy implementation where it tries
Mark Doliner <markdoliner@pidgin.im>
parents: 22371
diff changeset
4011 case PURPLE_PRIVACY_DENY_ALL:
22371
b1497b68575c Clean up a function
Mark Doliner <markdoliner@pidgin.im>
parents: 22370
diff changeset
4012 for (deny = account->deny; deny; deny = deny->next)
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4013 yahoo_add_deny(gc, deny->data);
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4014 break;
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4015 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4016 }
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4017
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4018 static gboolean yahoo_unload_plugin(PurplePlugin *plugin)
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4019 {
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4020 yahoo_dest_colorht();
11033
dc68e074f10d [gaim-migrate @ 12919]
Etan Reisner <deryni@pidgin.im>
parents: 10992
diff changeset
4021
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4022 return TRUE;
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4023 }
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4024
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4025 static void yahoo_change_buddys_group(PurpleConnection *gc, const char *who,
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4026 const char *old_group, const char *new_group)
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4027 {
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4028 struct yahoo_data *yd = gc->proto_data;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4029 struct yahoo_packet *pkt;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4030 char *gpn, *gpo;
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4031
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4032 /* Step 0: If they aren't on the server list anyway,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4033 * don't bother letting the server know.
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4034 */
9279
f2884065a001 [gaim-migrate @ 10082]
Tim Ringenbach <marv@pidgin.im>
parents: 9278
diff changeset
4035 if (!yahoo_friend_find(gc, who))
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4036 return;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4037
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4038 /* If old and new are the same, we would probably
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4039 * end up deleting the buddy, which would be bad.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4040 * This might happen because of the charset conversation.
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4041 */
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4042 gpn = yahoo_string_encode(gc, new_group, NULL);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4043 gpo = yahoo_string_encode(gc, old_group, NULL);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4044 if (!strcmp(gpn, gpo)) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4045 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4046 g_free(gpo);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4047 return;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4048 }
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4049
19329
2acabedbaa3e Allow you to move your Yahoo! buddies between groups again.
Tim Ringenbach <marv@pidgin.im>
parents: 19064
diff changeset
4050 pkt = yahoo_packet_new(YAHOO_SERVICE_CHGRP_15, YAHOO_STATUS_AVAILABLE, 0);
2acabedbaa3e Allow you to move your Yahoo! buddies between groups again.
Tim Ringenbach <marv@pidgin.im>
parents: 19064
diff changeset
4051 yahoo_packet_hash(pkt, "ssssssss", 1, purple_connection_get_display_name(gc),
2acabedbaa3e Allow you to move your Yahoo! buddies between groups again.
Tim Ringenbach <marv@pidgin.im>
parents: 19064
diff changeset
4052 302, "240", 300, "240", 7, who, 224, gpo, 264, gpn, 301,
2acabedbaa3e Allow you to move your Yahoo! buddies between groups again.
Tim Ringenbach <marv@pidgin.im>
parents: 19064
diff changeset
4053 "240", 303, "240");
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
4054 yahoo_packet_send_and_free(pkt, yd);
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4055
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4056 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4057 g_free(gpo);
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4058 }
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4059
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4060 static void yahoo_rename_group(PurpleConnection *gc, const char *old_name,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4061 PurpleGroup *group, GList *moved_buddies)
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4062 {
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4063 struct yahoo_data *yd = gc->proto_data;
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4064 struct yahoo_packet *pkt;
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4065 char *gpn, *gpo;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4066
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
4067 gpn = yahoo_string_encode(gc, group->name, NULL);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9284
diff changeset
4068 gpo = yahoo_string_encode(gc, old_name, NULL);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4069 if (!strcmp(gpn, gpo)) {
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4070 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4071 g_free(gpo);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4072 return;
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4073 }
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4074
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4075 pkt = yahoo_packet_new(YAHOO_SERVICE_GROUPRENAME, YAHOO_STATUS_AVAILABLE, 0);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4076 yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
10394
ad8f7dfef0cb [gaim-migrate @ 11623]
Tim Ringenbach <marv@pidgin.im>
parents: 10392
diff changeset
4077 65, gpo, 67, gpn);
10392
6a9728e72c11 [gaim-migrate @ 11620]
Tim Ringenbach <marv@pidgin.im>
parents: 10386
diff changeset
4078 yahoo_packet_send_and_free(pkt, yd);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4079 g_free(gpn);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4080 g_free(gpo);
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4081 }
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4082
10937
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
4083 /********************************* Commands **********************************/
1753f4709889 [gaim-migrate @ 12721]
Peter Lawler <pidgin@bleeter.id.au>
parents: 10784
diff changeset
4084
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4085 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4086 yahoopurple_cmd_buzz(PurpleConversation *c, const gchar *cmd, gchar **args, gchar **error, void *data) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4087 PurpleAccount *account = purple_conversation_get_account(c);
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4088
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4089 if (*args && args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4090 return PURPLE_CMD_RET_FAILED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4091
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4092 serv_send_attention(account->gc, c->name, YAHOO_BUZZ);
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4093
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4094 return PURPLE_CMD_RET_OK;
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4095 }
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4096
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4097 static PurplePlugin *my_protocol = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4098
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4099 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4100 yahoopurple_cmd_chat_join(PurpleConversation *conv, const char *cmd,
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4101 char **args, char **error, void *data)
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4102 {
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4103 GHashTable *comp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4104 PurpleConnection *gc;
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4105 struct yahoo_data *yd;
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4106 int id;
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4107
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4108 if (!args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4109 return PURPLE_CMD_RET_FAILED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4110
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4111 gc = purple_conversation_get_gc(conv);
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4112 yd = gc->proto_data;
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4113 id = yd->conf_id;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4114 purple_debug(PURPLE_DEBUG_INFO, "yahoo",
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4115 "Trying to join %s \n", args[0]);
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4116
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4117 comp = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4118 g_hash_table_replace(comp, g_strdup("room"),
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4119 g_strdup_printf("%s", g_ascii_strdown(args[0], strlen(args[0]))));
11077
c189de76c00e [gaim-migrate @ 13087]
Mark Doliner <markdoliner@pidgin.im>
parents: 11076
diff changeset
4120 g_hash_table_replace(comp, g_strdup("type"), g_strdup("Chat"));
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4121
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4122 yahoo_c_join(gc, comp);
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4123
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4124 g_hash_table_destroy(comp);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4125 return PURPLE_CMD_RET_OK;
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4126 }
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4127
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4128 static PurpleCmdRet
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4129 yahoopurple_cmd_chat_list(PurpleConversation *conv, const char *cmd,
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4130 char **args, char **error, void *data)
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4131 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4132 PurpleAccount *account = purple_conversation_get_account(conv);
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4133 if (*args && args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4134 return PURPLE_CMD_RET_FAILED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4135 purple_roomlist_show_with_account(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4136 return PURPLE_CMD_RET_OK;
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4137 }
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4138
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4139 static gboolean yahoo_offline_message(const PurpleBuddy *buddy)
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4140 {
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4141 return TRUE;
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4142 }
20658
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 19918
diff changeset
4143
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4144 gboolean yahoo_send_attention(PurpleConnection *gc, const char *username, guint type)
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4145 {
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4146 PurpleConversation *c;
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4147
20658
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 19918
diff changeset
4148 c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4149 username, gc->account);
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4150
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4151 g_return_val_if_fail(c != NULL, FALSE);
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4152
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4153 purple_debug(PURPLE_DEBUG_INFO, "yahoo",
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4154 "Sending <ding> on account %s to buddy %s.\n", username, c->name);
19674
371069ae12fd Add a new flag PURPLE_MESSAGE_INVISIBLE which can be used to send a message
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19643
diff changeset
4155 purple_conv_im_send_with_flags(PURPLE_CONV_IM(c), "<ding>", PURPLE_MESSAGE_INVISIBLE);
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4156
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4157 return TRUE;
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4158 }
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4159
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4160 GList *yahoo_attention_types(PurpleAccount *account)
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4161 {
19643
1794c23309d3 In MSN prpl, use attention API. Can be disabled by undefining
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19642
diff changeset
4162 static GList *list = NULL;
1794c23309d3 In MSN prpl, use attention API. Can be disabled by undefining
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19642
diff changeset
4163
1794c23309d3 In MSN prpl, use attention API. Can be disabled by undefining
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19642
diff changeset
4164 if (!list) {
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4165 /* Yahoo only supports one attention command: the 'buzz'. */
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4166 /* This is index number YAHOO_BUZZ. */
22225
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22207
diff changeset
4167 list = g_list_append(list, purple_attention_type_new("Buzz", _("Buzz"),
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22207
diff changeset
4168 _("%s has buzzed you!"), _("Buzzing %s...")));
20658
91594d39738c Clear the password consistently when we get a "Signed-On elsewhere" or a "Invalid Password" disconnection. Disconnection reason codes will take care of this in the core, but until then, this is ok. Fixes #3204.
Daniel Atallah <datallah@pidgin.im>
parents: 19918
diff changeset
4169 }
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4170
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4171 return list;
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4172 }
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4173
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4174 /************************** Plugin Initialization ****************************/
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4175 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4176 yahoopurple_register_commands(void)
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4177 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4178 purple_cmd_register("join", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4179 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4180 PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4181 "prpl-yahoo", yahoopurple_cmd_chat_join,
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4182 _("join &lt;room&gt;: Join a chat room on the Yahoo network"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4183 purple_cmd_register("list", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4184 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4185 PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4186 "prpl-yahoo", yahoopurple_cmd_chat_list,
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4187 _("list: List rooms on the Yahoo network"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4188 purple_cmd_register("buzz", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4189 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4190 "prpl-yahoo", yahoopurple_cmd_buzz,
12318
942b7c089acb [gaim-migrate @ 14622]
Richard Laager <rlaager@pidgin.im>
parents: 12243
diff changeset
4191 _("buzz: Buzz a user to get their attention"), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4192 purple_cmd_register("doodle", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4193 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4194 "prpl-yahoo", yahoo_doodle_purple_cmd_start,
13041
0eebc22048e6 [gaim-migrate @ 15400]
Peter Lawler <pidgin@bleeter.id.au>
parents: 13021
diff changeset
4195 _("doodle: Request user to start a Doodle session"), NULL);
10119
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4196 }
9c2b5c525a5e [gaim-migrate @ 11156]
Tim Ringenbach <marv@pidgin.im>
parents: 10105
diff changeset
4197
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4198 static PurpleAccount *find_acct(const char *prpl, const char *acct_id)
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4199 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4200 PurpleAccount *acct = NULL;
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4201
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4202 /* If we have a specific acct, use it */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4203 if (acct_id) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4204 acct = purple_accounts_find(acct_id, prpl);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4205 if (acct && !purple_account_is_connected(acct))
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4206 acct = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4207 } else { /* Otherwise find an active account for the protocol */
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
4208 GList *l = purple_accounts_get_all();
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4209 while (l) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4210 if (!strcmp(prpl, purple_account_get_protocol_id(l->data))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4211 && purple_account_is_connected(l->data)) {
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4212 acct = l->data;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4213 break;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4214 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4215 l = l->next;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4216 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4217 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4218
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4219 return acct;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4220 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4221
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4222 /* This may not be the best way to do this, but we find the first key w/o a value
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4223 * and assume it is the screenname */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4224 static void yahoo_find_uri_novalue_param(gpointer key, gpointer value, gpointer user_data)
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4225 {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4226 char **retval = user_data;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4227
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4228 if (value == NULL && *retval == NULL) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4229 *retval = key;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4230 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4231 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4232
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4233 static gboolean yahoo_uri_handler(const char *proto, const char *cmd, GHashTable *params)
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4234 {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4235 char *acct_id = g_hash_table_lookup(params, "account");
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4236 PurpleAccount *acct;
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4237
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4238 if (g_ascii_strcasecmp(proto, "ymsgr"))
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4239 return FALSE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4240
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4241 acct = find_acct(purple_plugin_get_id(my_protocol), acct_id);
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4242
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4243 if (!acct)
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4244 return FALSE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4245
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4246 /* ymsgr:SendIM?screename&m=The+Message */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4247 if (!g_ascii_strcasecmp(cmd, "SendIM")) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4248 char *sname = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4249 g_hash_table_foreach(params, yahoo_find_uri_novalue_param, &sname);
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4250 if (sname) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4251 char *message = g_hash_table_lookup(params, "m");
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4252
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4253 PurpleConversation *conv = purple_find_conversation_with_account(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4254 PURPLE_CONV_TYPE_IM, sname, acct);
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4255 if (conv == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4256 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, sname);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4257 purple_conversation_present(conv);
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4258
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4259 if (message) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4260 /* Spaces are encoded as '+' */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4261 g_strdelimit(message, "+", ' ');
18940
8a9341775495 Don't actually send messages using the protocol handlers (open the window and pre-populate the message, but require the user to actually send the message). Fixes #1961.
Daniel Atallah <datallah@pidgin.im>
parents: 18122
diff changeset
4262 purple_conv_send_confirm(conv, message);
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4263 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4264 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4265 /*else
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4266 **If pidgindialogs_im() was in the core, we could use it here.
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4267 * It is all purple_request_* based, but I'm not sure it really belongs in the core
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4268 pidgindialogs_im();*/
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4269
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4270 return TRUE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4271 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4272 /* ymsgr:Chat?roomname */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4273 else if (!g_ascii_strcasecmp(cmd, "Chat")) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4274 char *rname = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4275 g_hash_table_foreach(params, yahoo_find_uri_novalue_param, &rname);
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4276 if (rname) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4277 /* This is somewhat hacky, but the params aren't useful after this command */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4278 g_hash_table_insert(params, g_strdup("room"), g_strdup(rname));
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4279 g_hash_table_insert(params, g_strdup("type"), g_strdup("Chat"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4280 serv_join_chat(purple_account_get_connection(acct), params);
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4281 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4282 /*else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4283 ** Same as above (except that this would have to be re-written using purple_request_*)
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4284 pidgin_blist_joinchat_show(); */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4285
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4286 return TRUE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4287 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4288 /* ymsgr:AddFriend?name */
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4289 else if (!g_ascii_strcasecmp(cmd, "AddFriend")) {
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4290 char *name = NULL;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4291 g_hash_table_foreach(params, yahoo_find_uri_novalue_param, &name);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4292 purple_blist_request_add_buddy(acct, name, NULL, NULL);
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4293 return TRUE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4294 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4295
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4296 return FALSE;
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4297 }
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4298
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4299 static PurpleWhiteboardPrplOps yahoo_whiteboard_prpl_ops =
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4300 {
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4301 yahoo_doodle_start,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4302 yahoo_doodle_end,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4303 yahoo_doodle_get_dimensions,
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4304 NULL,
11914
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
4305 yahoo_doodle_get_brush,
81ac838f3824 [gaim-migrate @ 14205]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11897
diff changeset
4306 yahoo_doodle_set_brush,
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4307 yahoo_doodle_send_draw_list,
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4308 yahoo_doodle_clear,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4309
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4310 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4311 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4312 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4313 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4314 NULL
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4315 };
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4316
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4317 static PurplePluginProtocolInfo prpl_info =
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4318 {
9308
4ea759d72d37 [gaim-migrate @ 10116]
Sean Egan <seanegan@pidgin.im>
parents: 9306
diff changeset
4319 OPT_PROTO_MAIL_CHECK | OPT_PROTO_CHAT_TOPIC,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4320 NULL, /* user_splits */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4321 NULL, /* protocol_options */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4322 {"png,gif,jpeg", 96, 96, 96, 96, 0, PURPLE_ICON_SCALE_SEND},
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4323 yahoo_list_icon,
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15444
diff changeset
4324 yahoo_list_emblem,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4325 yahoo_status_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4326 yahoo_tooltip_text,
9979
fff3db335f9b [gaim-migrate @ 10890]
Tim Ringenbach <marv@pidgin.im>
parents: 9972
diff changeset
4327 yahoo_status_types,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
4328 yahoo_blist_node_menu,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4329 yahoo_c_info,
9768
318bcd935ca5 [gaim-migrate @ 10636]
Luke Schierer <lschiere@pidgin.im>
parents: 9757
diff changeset
4330 yahoo_c_info_defaults,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4331 yahoo_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4332 yahoo_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4333 yahoo_send_im,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4334 NULL, /* set info */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4335 yahoo_send_typing,
6514
3de8c6a985ab [gaim-migrate @ 7031]
Nathan Poznick
parents: 6513
diff changeset
4336 yahoo_get_info,
9984
3662f75a49fc [gaim-migrate @ 10895]
Tim Ringenbach <marv@pidgin.im>
parents: 9983
diff changeset
4337 yahoo_set_status,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4338 yahoo_set_idle,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4339 NULL, /* change_passwd*/
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4340 yahoo_add_buddy,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4341 NULL, /* add_buddies */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4342 yahoo_remove_buddy,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4343 NULL, /*remove_buddies */
22370
6499d3452df6 Yahoo! has no permit list, so get rid of the add_permit and rem_permit prpl
Mark Doliner <markdoliner@pidgin.im>
parents: 22367
diff changeset
4344 NULL, /* add_permit */
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4345 yahoo_add_deny,
22370
6499d3452df6 Yahoo! has no permit list, so get rid of the add_permit and rem_permit prpl
Mark Doliner <markdoliner@pidgin.im>
parents: 22367
diff changeset
4346 NULL, /* rem_permit */
6760
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4347 yahoo_rem_deny,
b7078ee3cc54 [gaim-migrate @ 7292]
Jesse Farmer
parents: 6729
diff changeset
4348 yahoo_set_permit_deny,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4349 yahoo_c_join,
8562
7e73676d1772 [gaim-migrate @ 9306]
Christopher O'Brien <siege@pidgin.im>
parents: 8503
diff changeset
4350 NULL, /* reject chat invite */
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9888
diff changeset
4351 yahoo_get_chat_name,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4352 yahoo_c_invite,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4353 yahoo_c_leave,
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4354 NULL, /* chat whisper */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4355 yahoo_c_send,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4356 yahoo_keepalive,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4357 NULL, /* register_user */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4358 NULL, /* get_cb_info */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4359 NULL, /* get_cb_away */
19058
9facc10e1c01 Yahoo server-side aliases patch from John Moody. Fixes #1653 Thanks!
Sean Egan <seanegan@pidgin.im>
parents: 19053
diff changeset
4360 yahoo_update_alias, /* alias_buddy */
6793
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4361 yahoo_change_buddys_group,
f96cfd6ee8cd [gaim-migrate @ 7332]
Tim Ringenbach <marv@pidgin.im>
parents: 6792
diff changeset
4362 yahoo_rename_group,
6729
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4363 NULL, /* buddy_free */
c21179a914e5 [gaim-migrate @ 7256]
Tim Ringenbach <marv@pidgin.im>
parents: 6695
diff changeset
4364 NULL, /* convo_closed */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4365 purple_normalize_nocase, /* normalize */
9306
3df21f4d438b [gaim-migrate @ 10114]
Tim Ringenbach <marv@pidgin.im>
parents: 9292
diff changeset
4366 yahoo_set_buddy_icon,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4367 NULL, /* void (*remove_group)(PurpleConnection *gc, const char *group);*/
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4368 NULL, /* char *(*get_cb_real_name)(PurpleConnection *gc, int id, const char *who); */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
4369 NULL, /* set_chat_topic */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
4370 NULL, /* find_blist_chat */
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
4371 yahoo_roomlist_get_list,
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
4372 yahoo_roomlist_cancel,
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9410
diff changeset
4373 yahoo_roomlist_expand_category,
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
4374 NULL, /* can_receive_file */
11475
1e222e6e52a0 [gaim-migrate @ 13717]
Gary Kramlich <grim@reaperworld.com>
parents: 11338
diff changeset
4375 yahoo_send_file,
12143
09f216663302 [gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents: 12138
diff changeset
4376 yahoo_new_xfer,
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
4377 yahoo_offline_message, /* offline_message */
12600
7ecd4441fdc7 [gaim-migrate @ 14934]
Richard Laager <rlaager@pidgin.im>
parents: 12595
diff changeset
4378 &yahoo_whiteboard_prpl_ops,
15185
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 15181
diff changeset
4379 NULL, /* send_raw */
74b689a74430 [gaim-migrate @ 17909]
Nathan Walp <nwalp@pidgin.im>
parents: 15181
diff changeset
4380 NULL, /* roomlist_room_serialize */
19893
33446dac7ca0 Fixed merge errors stemming from the fact that the main branch and my branch both added something to the prpl struct
Andreas Monitzer <am@adiumx.com>
parents: 19643
diff changeset
4381 NULL, /* unregister_user */
19642
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4382 yahoo_send_attention,
f27b0a59548e Change Yahoo prpl to use attention API in libpurple. Previous behavior can
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 19609
diff changeset
4383 yahoo_attention_types,
23276
f4944cfaa1ff Use up the last padding for PurplePluginProtocolInfo in a way that allows
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22826
diff changeset
4384 sizeof(PurplePluginProtocolInfo), /* struct_size */
23707
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23278 22648
diff changeset
4385 NULL, /* get_account_text_table */
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23278 22648
diff changeset
4386 NULL, /* initiate_media */
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23278 22648
diff changeset
4387 NULL /* can_do_media */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4388 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4389
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4390 static PurplePluginInfo info =
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4391 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4392 PURPLE_PLUGIN_MAGIC,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4393 PURPLE_MAJOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4394 PURPLE_MINOR_VERSION,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4395 PURPLE_PLUGIN_PROTOCOL, /**< type */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4396 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4397 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4398 NULL, /**< dependencies */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4399 PURPLE_PRIORITY_DEFAULT, /**< priority */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4400 "prpl-yahoo", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4401 "Yahoo", /**< name */
21106
b85fbef13eed Add a --with-extraversion option to ./configure so packagers can fine tune
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 20749
diff changeset
4402 DISPLAY_VERSION, /**< version */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4403 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4404 N_("Yahoo Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4405 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4406 N_("Yahoo Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4407 NULL, /**< author */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4408 PURPLE_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4409 NULL, /**< load */
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4410 yahoo_unload_plugin, /**< unload */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4411 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4412 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8950
diff changeset
4413 &prpl_info, /**< extra_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8950
diff changeset
4414 NULL,
16746
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4415 yahoo_actions,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4416
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4417 /* padding */
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4418 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4419 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4420 NULL,
72faf41c3c4f And now the protocols
Gary Kramlich <grim@reaperworld.com>
parents: 16606
diff changeset
4421 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4422 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4423
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4424 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4425 init_plugin(PurplePlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4426 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4427 PurpleAccountOption *option;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4428
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4429 option = purple_account_option_bool_new(_("Yahoo Japan"), "yahoojp", FALSE);
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4430 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4431
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4432 option = purple_account_option_string_new(_("Pager server"), "server", YAHOO_PAGER_HOST);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4433 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4434
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4435 option = purple_account_option_string_new(_("Japan Pager server"), "serverjp", YAHOOJP_PAGER_HOST);
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4436 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4437
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4438 option = purple_account_option_int_new(_("Pager port"), "port", YAHOO_PAGER_PORT);
7827
080c98045e12 [gaim-migrate @ 8479]
Ethan Blanton <elb@pidgin.im>
parents: 7823
diff changeset
4439 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
4440
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4441 option = purple_account_option_string_new(_("File transfer server"), "xfer_host", YAHOO_XFER_HOST);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
4442 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
4443
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4444 option = purple_account_option_string_new(_("Japan file transfer server"), "xferjp_host", YAHOOJP_XFER_HOST);
9164
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4445 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
46904c930b6e [gaim-migrate @ 9949]
Tim Ringenbach <marv@pidgin.im>
parents: 9161
diff changeset
4446
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4447 option = purple_account_option_int_new(_("File transfer port"), "xfer_port", YAHOO_XFER_PORT);
7651
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
4448 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
43663aa7ef68 [gaim-migrate @ 8295]
Tim Ringenbach <marv@pidgin.im>
parents: 7631
diff changeset
4449
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4450 option = purple_account_option_string_new(_("Chat room locale"), "room_list_locale", YAHOO_ROOMLIST_LOCALE);
11043
763427cecd21 [gaim-migrate @ 12957]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11033
diff changeset
4451 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
12999
7479d16384c0 [gaim-migrate @ 15352]
Daniel Atallah <datallah@pidgin.im>
parents: 12994
diff changeset
4452
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4453 option = purple_account_option_bool_new(_("Ignore conference and chatroom invitations"), "ignore_invites", FALSE);
12999
7479d16384c0 [gaim-migrate @ 15352]
Daniel Atallah <datallah@pidgin.im>
parents: 12994
diff changeset
4454 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
7479d16384c0 [gaim-migrate @ 15352]
Daniel Atallah <datallah@pidgin.im>
parents: 12994
diff changeset
4455
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4456 option = purple_account_option_string_new(_("Encoding"), "local_charset", "ISO-8859-1");
14347
4c0fe0512e73 [gaim-migrate @ 16971]
Tim Ringenbach <marv@pidgin.im>
parents: 14346
diff changeset
4457 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
4c0fe0512e73 [gaim-migrate @ 16971]
Tim Ringenbach <marv@pidgin.im>
parents: 14346
diff changeset
4458
4c0fe0512e73 [gaim-migrate @ 16971]
Tim Ringenbach <marv@pidgin.im>
parents: 14346
diff changeset
4459
11043
763427cecd21 [gaim-migrate @ 12957]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11033
diff changeset
4460 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4461 option = purple_account_option_string_new(_("Chat room list URL"), "room_list", YAHOO_ROOMLIST_URL);
8113
6a2ffc66c022 [gaim-migrate @ 8817]
Tim Ringenbach <marv@pidgin.im>
parents: 8087
diff changeset
4462 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
11043
763427cecd21 [gaim-migrate @ 12957]
Peter Lawler <pidgin@bleeter.id.au>
parents: 11033
diff changeset
4463
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4464 option = purple_account_option_string_new(_("Yahoo Chat server"), "ycht-server", YAHOO_YCHT_HOST);
9376
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
4465 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
4466
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4467 option = purple_account_option_int_new(_("Yahoo Chat port"), "ycht-port", YAHOO_YCHT_PORT);
9376
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
4468 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
4469 #endif
72964e97c46e [gaim-migrate @ 10184]
Tim Ringenbach <marv@pidgin.im>
parents: 9371
diff changeset
4470
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4471 my_protocol = plugin;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4472 yahoopurple_register_commands();
6513
191231aceb3f [gaim-migrate @ 7030]
Tim Ringenbach <marv@pidgin.im>
parents: 6465
diff changeset
4473 yahoo_init_colorht();
15685
483b223d0b60 uri-handler support for AIM/ICQ, Yahoo and MSN
Daniel Atallah <datallah@pidgin.im>
parents: 15589
diff changeset
4474
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4475 purple_signal_connect(purple_get_core(), "uri-handler", plugin,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4476 PURPLE_CALLBACK(yahoo_uri_handler), NULL);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4477 }
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5136
diff changeset
4478
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15807
diff changeset
4479 PURPLE_INIT_PLUGIN(yahoo, init_plugin, info);
23707
480f94157418 propagate from branch 'im.pidgin.pidgin' (head bd5f7f61d9349053ee4738efc0d17453f0574057)
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23278 22648
diff changeset
4480

mercurial